From 347bd393dd1bddd98877b9c571e8636c8fa26ffe Mon Sep 17 00:00:00 2001
From: Koustubha Kale <kmkale@anantcorp.com>
Date: Sun, 14 Nov 2010 20:03:17 +0530
Subject: [PATCH 1/2] Bug 5401: WYSWYG for Koha News Patch 1 eltre-1.1 library
Content-Type: text/plain; charset="utf-8"

This patch adds the eltre-1.1 library from elrte.org which is BSD style licensed.
This library is for use in WYSWYG editor for Koha staff client news editor.
I have tweaked the eltre css file elrte.full.css to get the buttons to display properly in Koha.
I have also removed the src directory, the changelog, readme and eltre.html files to reduce patch size and get rid of whitespace errors.
I have also used a sed one liner on the eltre dir to get rid of trailing whitespace errors.
---
 .../prog/en/js/elrte-1.1/css/elrte-inner.css       |   95 +
 .../prog/en/js/elrte-1.1/css/elrte.full.css        |  524 ++
 .../prog/en/js/elrte-1.1/images/elrte-toolbar.png  |  Bin 0 -> 28256 bytes
 .../prog/en/js/elrte-1.1/images/google-maps.png    |  Bin 0 -> 2007 bytes
 .../prog/en/js/elrte-1.1/images/loading.gif        |  Bin 0 -> 1279 bytes
 .../prog/en/js/elrte-1.1/images/media-director.png |  Bin 0 -> 2011 bytes
 .../prog/en/js/elrte-1.1/images/media-flash.png    |  Bin 0 -> 2054 bytes
 .../en/js/elrte-1.1/images/media-quicktime.png     |  Bin 0 -> 2639 bytes
 .../en/js/elrte-1.1/images/media-realaudio.png     |  Bin 0 -> 1609 bytes
 .../prog/en/js/elrte-1.1/images/media-rutube.png   |  Bin 0 -> 2442 bytes
 .../prog/en/js/elrte-1.1/images/media-vimeo.png    |  Bin 0 -> 1501 bytes
 .../prog/en/js/elrte-1.1/images/media-winmedia.png |  Bin 0 -> 2449 bytes
 .../prog/en/js/elrte-1.1/images/media-youtube.png  |  Bin 0 -> 1700 bytes
 .../prog/en/js/elrte-1.1/images/pagebreak.gif      |  Bin 0 -> 54 bytes
 .../prog/en/js/elrte-1.1/images/pixel.gif          |  Bin 0 -> 43 bytes
 .../en/js/elrte-1.1/images/smileys/evilgrin.png    |  Bin 0 -> 797 bytes
 .../prog/en/js/elrte-1.1/images/smileys/grin.png   |  Bin 0 -> 822 bytes
 .../prog/en/js/elrte-1.1/images/smileys/happy.png  |  Bin 0 -> 824 bytes
 .../prog/en/js/elrte-1.1/images/smileys/smile.png  |  Bin 0 -> 787 bytes
 .../en/js/elrte-1.1/images/smileys/surprised.png   |  Bin 0 -> 780 bytes
 .../prog/en/js/elrte-1.1/images/smileys/tongue.png |  Bin 0 -> 820 bytes
 .../en/js/elrte-1.1/images/smileys/unhappy.png     |  Bin 0 -> 778 bytes
 .../prog/en/js/elrte-1.1/images/smileys/waii.png   |  Bin 0 -> 785 bytes
 .../prog/en/js/elrte-1.1/images/smileys/wink.png   |  Bin 0 -> 801 bytes
 .../prog/en/js/elrte-1.1/images/yandex-maps.png    |  Bin 0 -> 1667 bytes
 .../prog/en/js/elrte-1.1/js/elrte.full.js          | 8646 ++++++++++++++++++++
 .../prog/en/js/elrte-1.1/js/elrte.min.js           |    9 +
 .../en/js/elrte-1.1/js/i18n/elrte.YOUR_LANG.js     |  211 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.ar.js       |  195 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.cs.js       |  169 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.de.js       |  168 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.es.js       |  167 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.fa.js       |  168 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.fr.js       |  167 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.hu.js       |  201 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.it.js       |  167 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.jp.js       |  187 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.lv.js       |  179 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.nl.js       |  199 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.pl.js       |  168 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.ru.js       |  211 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.ua.js       |  201 +
 .../prog/en/js/elrte-1.1/js/i18n/elrte.zh_TW.js    |  167 +
 .../prog/en/js/elrte-1.1/js/jquery-1.4.2.min.js    |  154 +
 .../js/elrte-1.1/js/jquery-ui-1.8.5.custom.min.js  |  284 +
 .../images/ui-bg_flat_0_aaaaaa_40x100.png          |  Bin 0 -> 180 bytes
 .../images/ui-bg_flat_75_ffffff_40x100.png         |  Bin 0 -> 178 bytes
 .../images/ui-bg_glass_55_fbf9ee_1x400.png         |  Bin 0 -> 120 bytes
 .../images/ui-bg_glass_65_ffffff_1x400.png         |  Bin 0 -> 105 bytes
 .../images/ui-bg_glass_75_dadada_1x400.png         |  Bin 0 -> 111 bytes
 .../images/ui-bg_glass_75_e6e6e6_1x400.png         |  Bin 0 -> 110 bytes
 .../images/ui-bg_glass_95_fef1ec_1x400.png         |  Bin 0 -> 119 bytes
 .../ui-bg_highlight-soft_75_cccccc_1x100.png       |  Bin 0 -> 101 bytes
 .../smoothness/images/ui-icons_222222_256x240.png  |  Bin 0 -> 4369 bytes
 .../smoothness/images/ui-icons_2e83ff_256x240.png  |  Bin 0 -> 5355 bytes
 .../smoothness/images/ui-icons_454545_256x240.png  |  Bin 0 -> 4369 bytes
 .../smoothness/images/ui-icons_888888_256x240.png  |  Bin 0 -> 4369 bytes
 .../smoothness/images/ui-icons_cd0a0a_256x240.png  |  Bin 0 -> 4369 bytes
 .../smoothness/jquery-ui-1.8.5.custom.css          |  362 +
 59 files changed, 12999 insertions(+), 0 deletions(-)
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/css/elrte-inner.css
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/css/elrte.full.css
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/elrte-toolbar.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/google-maps.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/loading.gif
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-director.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-flash.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-quicktime.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-realaudio.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-rutube.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-vimeo.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-winmedia.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-youtube.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/pagebreak.gif
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/pixel.gif
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/evilgrin.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/grin.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/happy.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/smile.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/surprised.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/tongue.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/unhappy.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/waii.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/wink.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/yandex-maps.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/elrte.full.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/elrte.min.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.YOUR_LANG.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ar.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.cs.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.de.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.es.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.fa.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.fr.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.hu.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.it.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.jp.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.lv.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.nl.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.pl.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ru.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ua.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.zh_TW.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/jquery-1.4.2.min.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/jquery-ui-1.8.5.custom.min.js
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_222222_256x240.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_2e83ff_256x240.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_454545_256x240.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_888888_256x240.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_cd0a0a_256x240.png
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/jquery-ui-1.8.5.custom.css

diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/css/elrte-inner.css b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/css/elrte-inner.css
new file mode 100644
index 0000000..3f6b4cf
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/css/elrte-inner.css
@@ -0,0 +1,95 @@
+
+body.el-rte-rtl, body.el-rte-rtl * {
+	direction:rtl;
+}
+
+body.el-rte-structure table,
+body.el-rte-structure caption,
+body.el-rte-structure td,
+body.el-rte-structure th,
+body.el-rte-structure p,
+body.el-rte-structure div,
+body.el-rte-structure blockquote
+{ outline:1px dotted #99ccff; }
+
+body.el-rte-structure a[name] {
+	display:inline-block;
+	vertical-align:baseline;
+	width:12px;
+	height:12px;
+	border:1px dotted #ccc;
+	background: url('../images/elrte-toolbar.png') -564px -8px no-repeat;
+}
+img { cursor: default; }
+
+img.elrte-webkit-hl { outline:1px dashed #777; }
+
+.elrtebm {
+}
+
+.elrte-media-x-shockwave-flash,
+.elrte-media-quicktime,
+.elrte-media-x-director,
+.elrte-media-x-mplayer2,
+.elrte-media-x-pn-realaudio-plugin,
+.elrte-media-youtube,
+.elrte-media-rutube,
+.elrte-media-vimeo,
+.elrte-yandex-maps,
+.elrte-google-maps,
+.elrte-media {
+	border:1px solid #ccc;
+	background:#eee url(../images/media-flash.png) center center no-repeat;
+}
+.elrte-media-x-shockwave-flash {
+	background-image:url(../images/media-flash.png);
+}
+.elrte-media-youtube {
+	background-image:url(../images/media-youtube.png);
+}
+.elrte-media-vimeo {
+	background-image:url(../images/media-vimeo.png);
+}
+.elrte-media-rutube {
+	background-image:url(../images/media-rutube.png);
+}
+.elrte-media-quicktime {
+	background-image:url(../images/media-quicktime.png);
+}
+.elrte-media-x-director {
+	background-image:url(../images/media-director.png);
+}
+.elrte-media-x-mplayer2 {
+	background-image:url(../images/media-winmedia.png);
+}
+.elrte-media-x-pn-realaudio-plugin {
+	background-image:url(../images/media-realaudio.png);
+}
+.elrte-yandex-maps {
+	background-image:url(../images/yandex-maps.png);
+}
+.elrte-google-maps {
+	display: block;
+	background-image:url(../images/google-maps.png);
+}
+
+.elrte-pagebreak {
+
+	display:block;
+	clear:both;
+	width:100%;
+	height:7px;
+	outline:1px dotted #777;
+	outline-left:none;
+	outline-right:none;
+	background:transparent url(../images/pagebreak.gif) center center no-repeat;
+}
+
+.elrte-pagebreak:after {
+  content: ".";
+  display: block;
+  font-size:0;
+  height: 0;
+  clear: both;
+  visibility: hidden;
+}
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/css/elrte.full.css b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/css/elrte.full.css
new file mode 100644
index 0000000..4bdf270
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/css/elrte.full.css
@@ -0,0 +1,524 @@
+/*!
+ * elRTE WYSIWYG HTML-editor
+ * Version 1.1 (2010-09-20)
+ * http://elrte.org
+ *
+ * Copyright 2010, Studio 42 Ltd.
+ * Licensed under a 3 clauses BSD license
+ */
+
+@charset "UTF-8";
+a { outline: none; }
+
+/*************  clearfix  **********************/
+
+.clearfix:after {
+  content: ".";
+  display: block;
+  font-size:0;
+  height: 0;
+  clear: both;
+  visibility: hidden;
+}
+
+.clearfix { display: block; }
+
+.rounded-2 { -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; }
+.rounded-3 { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }
+.rounded-4 { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
+.rounded-5 { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }
+.rounded-6 { -moz-border-radius: 6px; -webkit-border-radius: 5px; border-radius: 6px; }
+.rounded-7 { -moz-border-radius: 7px; -webkit-border-radius: 7px; border-radius: 7px; }
+.rounded-left-3 { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; }
+.rounded-bottom-7 { -moz-border-radius-bottomleft:7px; -moz-border-radius-bottomright:7px; -webkit-border-bottom-left-radius: 7px;-webkit-border-bottom-right-radius: 7px; border-bottom-left-radius: 7px; border-bottom-right-radius: 7px;}
+
+
+.ui-widget { font-size:.9em;}
+.ui-dialog .ui-dialog-buttonpane button { padding: .1em .6em .2em .6em; }
+
+/* colorpicker "button" */
+.el-colorpicker {
+	width  : 16px;
+	height : 16px;
+	border:1px solid #ccc;
+	position:relative;
+	cursor:default;
+}
+
+/* colors palette */
+.el-palette {
+	width: 182px;
+	border:1px solid #ccc;
+	background:#fff;
+	padding:3px 2px 3px 3px;
+	z-index:10000; /* fight with ui.dialog 0_o */
+	position:absolute;
+	top:16px;
+	left:0;
+}
+
+/* color cell in palette */
+.el-palette .color {
+	float:left;
+	width:14px;
+	height:14px;
+	line-height:1px;
+	border-top: 1px solid #eee;
+	border-left:1px solid #eee;
+}
+
+/* side below color cells */
+.el-palette .panel {
+	border-top:1px solid #ccc;
+	margin-top:7px;
+	padding:5px 3px 5px 3px;
+}
+
+/* "window" with selected color */
+.el-palette .panel .preview {
+	float:right;
+	width:18px;
+	height:18px;
+	border:1px solid #ccc;
+}
+
+/* color value text field */
+.el-palette .panel input {
+	border:1px solid #ccc;
+}
+/* dialog container */
+.ui-widget .el-dialogform {
+	padding:5px 3px;
+
+}
+
+.ui-widget .el-dialogform-rtl {
+	direction: rtl;
+}
+
+.ui-widget .el-dialogform-rtl .ui-tabs-nav li {
+	float:right;
+}
+
+.el-dialogform div.tab:hover { background:transparent; }
+.ui-dialog .ui-dialog-title, .ui-dialog .ui-dialog-content {
+	font-size:.9em;
+}
+
+/* tabs nav */
+.ui-tabs .ui-tabs-nav li a {
+	padding:.2em .7em;
+}
+
+/* tab container */
+.el-dialogform .tab {
+	padding:5px 0 12px 0;
+	border:none;
+}
+/* line separator */
+.el-dialogform .separator {
+	border-top:1px solid #ccc;
+	margin: 5px 2px;
+}
+
+/* table in dialog or in tab */
+.el-dialogform table {
+	width:100%;
+	border: none;
+}
+
+.el-dialogform  table td {
+	padding: 2px;
+}
+
+.el-dialogform input, .el-dialogform textarea {
+	border:1px solid #ccc;
+}
+
+.el-dialogform select {
+	padding:0;
+/*	font-size:11px;*/
+}
+
+.el-dialogform .spinner {
+	background:url(../images/loading.gif) 50% 50% no-repeat;
+	text-align:center;
+	width:150px;
+	height:50px;
+	margin:10px auto;
+	padding-top:33px;
+	font-weight:bold;
+}
+.el-dialogform-error {
+	background: #fee; color:#ff0000; border: 2px #844 solid; padding: 10px; margin-bottom: 1em 0;
+
+}
+.el-dialogform-message {
+	background: #efe; color: #040; border: 2px #484 solid; padding: 10px; margin-bottom: 1em 0;
+}
+
+
+.el-dialogform  table td .el-borderselect table {
+	width:auto;
+}
+
+.el-dialogform  table td .el-borderselect table td {
+	padding-left :0;
+	padding-right:2px;
+}
+.el-paddinginput {
+	display: block;
+	white-space: nowrap;
+}
+.el-paddinginput input {
+	margin :0 1px 0 0;
+	border:1px solid #ccc;
+}
+.el-paddinginput select {
+	padding:0;
+}/* container for elselect */
+.el-select {
+	height:17px;
+	width : 110px;
+	border:1px solid #ccc;
+	cursor: default;
+	position:relative;
+}
+.el-select.hover {
+	background-color:#eee;
+}
+
+/* selected element */
+.el-select label {
+	height:17px;
+	line-height:17px;
+/*	font-size:.92em;*/
+	padding: 0 5px;
+	margin: 0 12px 0 0;
+	display:block;
+	white-space:nowrap;
+	overflow:hidden;
+	background: #fff;
+	border-right:1px solid #ccc;
+}
+/* drop-down list */
+.el-select .list {
+	border:1px solid #ccc;
+	display:block;
+	position:absolute;
+	overflow:auto;
+	background:#fff;
+	z-index:1000;
+/*	height:1610px*/
+}
+/* drop-down list item */
+.el-select .list div {
+	position:relative;
+	padding:3px 25px 3px 7px;
+	border-bottom:1px solid #eee;
+}
+/* drop-down list item hovered */
+.el-select .list .hover {
+	background:#efefef;
+}
+/* drop-down list item selected */
+.el-select .list .active {
+	background-color:#c3dbef;
+}
+/* any elements in drop-down list item */
+.el-select .list div * {
+	padding:0;
+	margin:0;
+	border:none;
+	white-space:nowrap;
+	display:block;
+}
+
+/*  контейнер */
+.el-rte {
+	font-family: Trebuchet MS, Verdana, Geneva,sans-serif;
+/*	border:1px solid #aaa;*/
+}
+.el-rte.el-fullscreen {
+	position:absolute;
+	width:99%;
+/*	height:100%;*/
+	top:0;
+	left:0;
+	margin:0;
+/*	z-index:101;*/
+}
+
+.elrte-swf-placeholder {
+	width:1px;
+	background: url('../images/swf.png') 0 0 no-repeat;
+}
+
+/* style to detect images url */
+/*.el-rte */
+.elrtetesturl { color:red; background-image:url(../images/pixel.gif);}
+
+/* панель инструментов */
+.el-rte .toolbar {  background-color:#eee; padding:3px 7px 2px 7px; border:1px solid #ccc; white-space:normal; display:inline-block;}
+
+.el-rte-rtl .toolbar { direction: rtl; }
+
+/* панель кнопок */
+.el-rte .toolbar ul {
+	position:relative;
+	display:inline-block;
+	display: -moz-inline-stack;
+    display: inline-block;
+    vertical-align: top;
+    zoom: 1;
+    *display: inline;
+	margin:0;
+	list-style:none;
+	padding:0 2px 0 5px;
+	background: url('../images/elrte-toolbar.png') -934px -2px no-repeat;
+}
+/* первая панель кнопок */
+.el-rte .toolbar ul.first {
+	background:transparent;
+	padding-left:0;
+}
+/* кнопка */
+.el-rte .toolbar ul li {
+        clear:none;
+	display:inline-block;
+	display: -moz-inline-stack;
+    display: inline-block;
+	height:22px;
+	width:22px;
+    vertical-align: top;
+    zoom: 1;
+    *display: inline;
+	margin:1px 1px;
+	padding:0; /* Joomla 1.6 compat */
+	background:url('../images/elrte-toolbar.png') no-repeat;
+	border:1px solid #ccc;
+}
+/* активная и подсвеченная и неактивная кнопка */
+.el-rte .toolbar ul li.hover    { border:1px solid #54b9bf; }
+.el-rte .toolbar ul li.active   { background-color:#c3dbef; border:1px solid #fff; }
+.el-rte .toolbar ul li.disabled { opacity:alpha(0.3); opacity: 0.3; filter:Alpha(Opacity=30);}
+/*  кнопки  */
+.el-rte .toolbar ul li.about                {background-position:-829px -5px;}
+.el-rte .toolbar ul li.save                {background-position:-30px -2px;}
+.el-rte .toolbar ul li.new                 {background-position:-55px -2px}
+.el-rte .toolbar ul li.copy                {background-position:-78px -2px}
+.el-rte .toolbar ul li.css                 {background-position:-801px -5px}
+.el-rte .toolbar ul li.cut                 {background-position:-104px -2px}
+.el-rte .toolbar ul li.paste               {background-position:-128px -2px}
+.el-rte .toolbar ul li.pastetext           {background-position:-534px -2px}
+.el-rte .toolbar ul li.pasteformattext     {background-position:-154px -2px}
+.el-rte .toolbar ul li.removeformat        {background-position:-180px -2px}
+.el-rte .toolbar ul li.docstructure        {background-position:-712px -4px}
+.el-rte .toolbar ul li.undo                {background-position:-205px -2px}
+.el-rte .toolbar ul li.redo                {background-position:-230px -2px}
+.el-rte .toolbar ul li.bold                {background-position:-252px -2px; }
+.el-rte .toolbar ul li.italic              {background-position:-270px -2px;}
+.el-rte .toolbar ul li.underline           {background-position:-290px -2px; }
+.el-rte .toolbar ul li.strikethrough       {background-position:-149px -29px}
+.el-rte .toolbar ul li.subscript           {background-position:-54px -29px}
+.el-rte .toolbar ul li.superscript         {background-position:-76px -29px}
+.el-rte .toolbar ul li.justifyleft         {background-position:-311px -2px}
+.el-rte .toolbar ul li.justifycenter       {background-position:-335px -2px}
+.el-rte .toolbar ul li.justifyright        {background-position:-360px -2px}
+.el-rte .toolbar ul li.justifyfull         {background-position:-174px -29px}
+.el-rte .toolbar ul li.insertunorderedlist {background-position:-100px -29px}
+.el-rte .toolbar ul li.insertorderedlist   {background-position:-124px -29px}
+.el-rte .toolbar ul li.outdent             {background-position:-6px   -29px}
+.el-rte .toolbar ul li.indent              {background-position:-32px  -29px}
+.el-rte .toolbar ul li.blockquote          {background-position:-220px -30px}
+.el-rte .toolbar ul li.div                 {background-position:-655px -29px}
+.el-rte .toolbar ul li.stopfloat           {background-position:-771px -5px}
+.el-rte .toolbar ul li.nbsp                {background-position:-580px -2px}
+.el-rte .toolbar ul li.forecolor           {background-position:-372px -30px}
+.el-rte .toolbar ul li.hilitecolor         {background-position:-395px -30px}
+.el-rte .toolbar ul li.link                {background-position:-244px -29px}
+.el-rte .toolbar ul li.unlink              {background-position:-270px -29px}
+.el-rte .toolbar ul li.anchor              {background-position:-296px -30px}
+.el-rte .toolbar ul li.image               {background-position:-384px -2px}
+.el-rte .toolbar ul li.flash               {background-position:-410px -2px}
+.el-rte .toolbar ul li.file                {background-position:-436px -3px}
+.el-rte .toolbar ul li.table               {background-position:-421px -30px}
+.el-rte .toolbar ul li.tableprops          {background-position:-602px -29px}
+.el-rte .toolbar ul li.tbcellprops         {background-position:-806px -27px}
+.el-rte .toolbar ul li.tablerm             {background-position:-461px -2px}
+.el-rte .toolbar ul li.tbrowbefore         {background-position:-683px -4px}
+.el-rte .toolbar ul li.tbrowafter          {background-position:-654px -4px}
+.el-rte .toolbar ul li.tbrowrm             {background-position:-500px -30px}
+.el-rte .toolbar ul li.tbcolbefore         {background-position:-741px -27px}
+.el-rte .toolbar ul li.tbcolafter          {background-position:-772px -27px}
+.el-rte .toolbar ul li.tbcolrm             {background-position:-526px -30px}
+.el-rte .toolbar ul li.tbcellsmerge        {background-position:-552px -30px}
+.el-rte .toolbar ul li.tbcellsplit         {background-position:-629px -29px}
+.el-rte .toolbar ul li.smiley              {background-position:-322px -29px}
+.el-rte .toolbar ul li.spec-text           {background-position:-487px -2px}
+.el-rte .toolbar ul li.print               {background-position:-509px -2px}
+.el-rte .toolbar ul li.horizontalrule      {background-position:-199px -29px}
+.el-rte .toolbar ul li.fullscreen          {background-position:-348px -30px}
+.el-rte .toolbar ul li.elfinder            {background-position:-436px -2px}
+.el-rte .toolbar ul li.ltr                 {background-position:-855px -27px}
+.el-rte .toolbar ul li.rtl                 {background-position:-855px -3px}
+.el-rte .toolbar ul li.pagebreak           {background-position:-711px -28px}
+
+
+/* рабочая зона (обертка над iframe) */
+.el-rte .workzone { border:1px solid #eee; border-top:none; height:400px;}
+.el-rte.small .workzone { min-height:250px; }
+
+/* source code */
+.el-rte textarea  { width:100%;  height:100%;  border:none; zoom:1; outline:none;}
+.el-rte.small textarea  { min-height:250px;}
+/* редактор */
+.el-rte iframe    {
+	width: 100%;
+	height:400px;
+
+	outline:none;
+	border:0 solid;
+	padding:0;
+	margin:0;
+	background:#fff;
+	z-index:100;
+}
+.el-rte.small iframe  { min-height:250px;}
+
+/* панель статуса (путь) */
+.el-rte .statusbar {
+	height: 21px;
+	padding: 0 9px;
+	font: 11px/21px 'monaco', 'andale mono', 'lucida console', monospace;
+	background-color:#eee;
+	border-top:1px solid #ccc;
+	border-top:none;
+}
+
+.el-rte-rtl .statusbar {
+	direction:rtl;
+/*	text-align:right;*/
+}
+
+/* табы */
+.el-rte .tabsbar { display: block;  }
+.el-rte .tabsbar .tab {
+	float:left;
+	margin-right:2px;
+	padding: 6px 17px;
+	font-size: .82em;
+	font-weight:bold;
+	color:#777;
+	text-align:center;
+	border:1px solid #eee;
+	border-top:none;
+	background: #fff;
+	cursor: default;
+}
+.el-rte .tabsbar div.active { background: #eee; color:#444; }
+.el-rte-rtl .tabsbar .tab  { float:right; }
+
+/* выпадающие меню */
+/* container for elselect */
+.el-rte .toolbar ul li.el-select {
+	height:22px;
+	width : 120px;
+	border:1px solid #ccc;
+	font-size:.82em;
+	cursor: default;
+	background-position:-475px -30px;
+}
+
+.el-rte .toolbar ul li.el-select.hover {
+	background-color:#fefefe;
+}
+
+.el-rte .toolbar ul li.el-select label {
+	height:19px;
+	padding: 3px 5px 0 5px;
+	float:none; /* Joomla 1.6 compat */
+	width:96px; /* Joomla 1.6 compat */
+}
+
+/* textarea & iframe в диплогах вставки текста */
+.el-rte-paste-input {
+	width : 99%;
+	height: 250px;
+	border: 1px solid #ccc;
+	padding:0;
+	margin:0;
+	outline:none;
+}
+/* индикатор выбраного цвета на кнопке */
+.el-rte .toolbar ul li div.color-indicator {
+	width:18px;
+	height:4px;
+	margin:16px 0 2px 2px;
+	background-color: #000;
+}
+.el-rte-rtl .toolbar ul li div.color-indicator {
+	margin:16px 2px 2px 0;
+}
+/* colors palette */
+.el-palette { top:20px; }
+
+.el-dialogform, .el-dialogform td  { font-size:.9em; }
+.el-dialogform select { font-size:.9em;}
+.ui-dialog .ui-dialog-buttonpane { padding: .4em, 1em;}
+.ui-dialog .ui-dialog-buttonpane button { margin: .3em .4em .1em 0; font-size:.9em;}
+.ui-dialog .ui-dialog-titlebar { padding: .3em 1em .3em;   }
+/*.ui-dialog-buttonset { padding:0; background-color:#333;}*/
+/* диалоговые окна */
+.el-dialogform label {
+	display:block;
+}
+.el-dialogform label input {
+	margin-right:2px;
+}
+.el-dialogform iframe.el-rte-preview {
+	width : 100%;
+	height : 235px;
+	margin:0;
+	padding:0;
+	outline:none;
+	border:none;
+}
+.el-dialogform fieldset {
+	border:1px solid #ccc;
+	padding : 0;
+}
+.el-dialogform fieldset legend {
+	font-size:.9em;
+	padding: .1em .5em;
+	margin: 0 0 5px 1em;
+	border:1px solid #ccc;
+	background-color: #eee;
+}
+.el-dialogform p { padding:.2em .3em;}
+.el-dialogform h3 { color:#555; padding:1.2em 0 0 0; margin:0; font-size:1.2em; }
+
+.el-dialogform h4 { color:#555;font-size:1em; padding:0; margin: 3px 9px; }
+
+.elrte-logo {
+	width:48px;
+	height:46px;
+	float:left;
+	margin:.5em 1em;
+	background:url('../images/elrte-toolbar.png') -880px -7px no-repeat;
+}
+.elrte-ver { font-size:.9em; padding-left:.7em;}
+.elrte-copy { font-size:.9em; padding-left:.3em;}
+table.elrte-authors { margin-bottom:1em;}
+table.elrte-authors td { border-bottom:1px solid #eee;}
+/* widgets */
+.el-borderselect {}
+.el-borderselect table      {  margin:0; }
+.el-borderselect table td   { padding : 0 2px 0 0; vertical-align:middle; }
+.el-borderselect input      { margin:0;  border:1px solid #ccc; }
+
+.el-paddinginput        { display: block; white-space: nowrap; }
+.el-paddinginput input  { margin :0 1px 0 0; border:1px solid #ccc; }
+.el-paddinginput select { padding:0; }
+
+.el-rte-smiley { margin:5px; }
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/elrte-toolbar.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/elrte-toolbar.png
new file mode 100644
index 0000000000000000000000000000000000000000..206df93fa207070d0d3a96ca49e65e49c9553103
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/google-maps.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/google-maps.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b4cb1c62572de73201dc83192782132b2fcd886
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/loading.gif b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/loading.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6371884f868cfd5c1a53ca2ed9c1e63c81b07661
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-director.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-director.png
new file mode 100644
index 0000000000000000000000000000000000000000..274a62fb20cf79f24201c57c1666ebea2f4c6b82
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-flash.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-flash.png
new file mode 100644
index 0000000000000000000000000000000000000000..bc91e1fde5c371a3793a50f39d9b8d91f0665668
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-quicktime.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-quicktime.png
new file mode 100644
index 0000000000000000000000000000000000000000..979be8adb75790d5b5cdd374a45fa499e8547a2d
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-realaudio.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-realaudio.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ae2844e5fc6e715220146df176e1e0b2d332083
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-rutube.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-rutube.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd6424442303f01ba21066b48b405073ea80fea5
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-vimeo.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-vimeo.png
new file mode 100644
index 0000000000000000000000000000000000000000..97e58a5dc94a79a8ce535fbc5be0c0cdcb1d2b8e
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-winmedia.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-winmedia.png
new file mode 100644
index 0000000000000000000000000000000000000000..f107edf6cac8535dbb66f4f1c7195fb4100cfbf2
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-youtube.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/media-youtube.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6a0fc22081a6ea36c376d4fca56ead3e02e9a71
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/pagebreak.gif b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/pagebreak.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8d1cffd64af72709b1180b3b0a51bbfe30bcb8c6
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/pixel.gif b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/pixel.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e565824aafafe632011b281cba976baf8b3ba89a
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/evilgrin.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/evilgrin.png
new file mode 100644
index 0000000000000000000000000000000000000000..7e160885ee9c68df61e075eef05674359027ca58
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/grin.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/grin.png
new file mode 100644
index 0000000000000000000000000000000000000000..d972aedde57f5e2d0b1588f84020157333daf5d1
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/happy.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/happy.png
new file mode 100644
index 0000000000000000000000000000000000000000..dcbc0f485cb6ec3dd88fffc389ef22c9c4904c51
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/smile.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/smile.png
new file mode 100644
index 0000000000000000000000000000000000000000..d7d39ff5227d662fc457f713316e12a62ec5e2e9
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/surprised.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/surprised.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2dbc5b694bfd7a9c234e3e6642286194d5dd7e7
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/tongue.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/tongue.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b4f2d6f961df52e2022e664c643a7581b762a22
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/unhappy.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/unhappy.png
new file mode 100644
index 0000000000000000000000000000000000000000..f622a5ba50169b48c081db5b30985bc918f2046c
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/waii.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/waii.png
new file mode 100644
index 0000000000000000000000000000000000000000..082cc359d1a419796714600111ca4f43a2aee3fa
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/wink.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/smileys/wink.png
new file mode 100644
index 0000000000000000000000000000000000000000..9aa197819765da76d8d93aefb90b5e5ac34fd68a
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/yandex-maps.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/images/yandex-maps.png
new file mode 100644
index 0000000000000000000000000000000000000000..4fa3fc90e17347e09cbdbe562d39b86d82dff1bd
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/elrte.full.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/elrte.full.js
new file mode 100644
index 0000000..4ba6ba6
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/elrte.full.js
@@ -0,0 +1,8646 @@
+/*!
+ * elRTE WYSIWYG HTML-editor
+ * Version 1.1 (2010-09-20)
+ * http://elrte.org
+ *
+ * Copyright 2010, Studio 42 Ltd.
+ * Licensed under a 3 clauses BSD license
+ */
+
+/**
+ * @class eli18n
+ * Javascript applications localization
+ *
+ * @param Object o - class options. Object. {textdomain : 'имя_группы_сообщений', messages : {textdomain1 : {}[, textdomain2 : {}]...}}
+ *
+ * Usage:
+ *
+ * var msgs = { Hello : 'Превэд', 'Hello %user' : 'Превед %user' };
+ * //load messages and set default textdomain
+ * var translator = new eli18n( {textdomain : 'test', messages : {test : msgs}} )
+ * window.console.log(translator.translate('Hello'));
+ * window.console.log(translator.format('Hello %user', {user : 'David Blain'}))
+ * // create new textdomain
+ * translator.load({test2 : {'Goodbye' : 'Ja, deva mata!'} })
+ * // and use it, without changing default one
+ * window.console.log(translator.translate('Goodbye', 'test2'));
+ *
+ * @author:    Dmitry (dio) Levashov dio@std42.ru
+ * license:   BSD license
+ **/
+function eli18n(o) {
+
+	/**
+	 * Get/set default textdomain
+	 *
+	 * @param String d new textdomain name
+	 * @return String  default textdomain
+	 **/
+	this.textdomain = function(d) {
+		return this.messages[d] ? this._domain = d : this._domain;
+	}
+
+	o && o.messages   && this.load(o.messages);
+	o && o.textdomain && this.textdomain(o.textdomain);
+}
+
+eli18n.prototype = new function() {
+
+	/**
+	 * @var Object messages (key - messages in English or message handler, value - message in selected language)
+	 **/
+	this.messages = {};
+	/**
+	 * @var String default textdomain
+	 **/
+	this._domain   = '';
+
+	/**
+	 * Load new messages
+	 *
+	 * @param Object msgs - messages (key - textdomain name, value - messages Object)
+	 * @return Object this
+	 **/
+	this.load = function(msgs) {
+		if (typeof(msgs) == 'object') {
+			for (var d in msgs) {
+				var _msgs = msgs[d];
+				if (typeof(_msgs) == 'object') {
+					if (!this.messages[d]) {
+						this.messages[d] = {};
+					}
+					for (var k in _msgs) {
+						if (typeof(_msgs[k]) == 'string') {
+							this.messages[d][k] = _msgs[k];
+						}
+					}
+				}
+			}
+		}
+		return this;
+	}
+
+	/**
+	 * Return translated message, if message exists in required or default textdomain, otherwise returns original message
+	 *
+	 * @param  String msg - message
+	 * @param  String d - textdomain. If empty, default textdomain will be used
+	 * @return String translated message
+	 **/
+	this.translate = function(msg, d) {
+		var d = d && this.messages[d] ? d : this._domain;
+		return this.messages[d] && this.messages[d][msg] ? this.messages[d][msg] : msg;
+
+	}
+
+	/**
+	 * Translate message and replace placeholders (%placeholder)
+	 *
+	 * @param  String  msg - message
+	 * @param  Object  replacement for placeholders (keys - placeholders name without leading %, values - replacements)
+	 * @param  String  d - textdomain. If empty, default textdomain will be used
+	 * @return String  translated message
+	 **/
+	this.format = function(msg, data, d) {
+		msg = this.translate(msg, d);
+		if (typeof(data) == 'object') {
+			for (var i in data) {
+				msg = msg.replace('%'+i, this.translate(data[i], d));
+			}
+		}
+		return msg;
+	}
+}
+/**
+ * @class elDialogForm
+ * Wraper for jquery.ui.dialog and jquery.ui.tabs
+ *  Create form in dialog. You can decorate it as you wish - with tabs or/and tables
+ *
+ * Usage:
+ *   var d = new elDialogForm(opts)
+ *   d.append(['Field name: ', $('<input type="text" name="f1" />')])
+ *		.separator()
+ *		.append(['Another field name: ', $('<input type="text" name="f2" />')])
+ *      .open()
+ * will create dialog with pair text field separated by horizontal rule
+ * Calling append() with 2 additional arguments ( d.append([..], null, true))
+ *  - will create table in dialog and put text inputs and labels in table cells
+ *
+ * Dialog with tabs:
+ *   var d = new elDialogForm(opts)
+ *   d.tab('first', 'First tab label)
+ * 	  .tab('second', 'Second tab label)
+ *    .append(['Field name: ', $('<input type="text" name="f1" />')], 'first', true)  - add label and input to first tab in table (table will create automagicaly)
+ *    .append(['Field name 2: ', $('<input type="text" name="f2" />')], 'second', true)  - same in secon tab
+ *
+ * Options:
+ *   class     - css class for dialog
+ *   submit    - form submit event callback. Accept 2 args - event and this object
+ *   ajaxForm  - arguments for ajaxForm, if needed (dont forget include jquery.form.js)
+ *   tabs      - arguments for ui.tabs
+ *   dialog    - arguments for ui.dialog
+ *   name      - hidden text field in wich selected value will saved
+ *
+ * Notice!
+ * When close dialog, it will destroing insead of dialog('close'). Reason - strange bug with tabs in dialog on secondary opening.
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ *
+ **/
+
+function elDialogForm(o) {
+	var self = this;
+
+	var defaults = {
+		'class'   : 'el-dialogform',
+		submit    : function(e, d) { window.console && window.console.log && window.console.log('submit called'); d.close(); },
+		form      : { action : window.location.href,	method : 'post'	},
+		ajaxForm  : null,
+		validate  : null,
+		spinner   : 'Loading',
+		tabs      : { active: 0 },
+		tabPrefix : 'el-df-tab-',
+		dialog    : {
+			title     : 'dialog',
+			autoOpen  : false,
+			modal     : true,
+			resizable : false,
+			buttons  : {
+				Cancel : function() { self.close(); },
+				Ok     : function() { self.form.trigger('submit'); }
+			}
+		}
+	};
+
+	this.opts = jQuery.extend(true, defaults, o, {dialog : { autoOpen : false, close : function() { self.close(); } }});
+
+	if (this.opts.rtl) {
+		this.opts['class'] += ' el-dialogform-rtl';
+	}
+
+	if (o && o.dialog && o.dialog.buttons && typeof(o.dialog.buttons) == 'object') {
+		this.opts.dialog.buttons = o.dialog.buttons;
+	}
+	this.ul     = null;
+	this.tabs   = {};
+	this._table = null;
+	this.dialog = jQuery('<div />').addClass(this.opts['class']).dialog(this.opts.dialog);
+	this.message = jQuery('<div class="el-dialogform-message rounded-5" />').hide().appendTo(this.dialog);
+	this.error   = jQuery('<div class="el-dialogform-error rounded-5" />').hide().appendTo(this.dialog);
+	this.spinner = jQuery('<div class="spinner" />').hide().appendTo(this.dialog);
+	this.content = jQuery('<div class="el-dialogform-content" />').appendTo(this.dialog)
+	this.form   = jQuery('<form />').attr(this.opts.form).appendTo(this.content);
+
+	if (this.opts.submit) {
+		this.form.bind('submit', function(e) { self.opts.submit(e, self) })
+	}
+	if (this.opts.ajaxForm && jQuery.fn.ajaxForm) {
+		this.form.ajaxForm(this.opts.ajaxForm);
+	}
+	if (this.opts.validate) {
+		this.form.validate(this.opts.validate);
+	}
+
+	this.option = function(name, value) {
+		return this.dialog.dialog('option', name, value)
+	}
+
+	this.showError = function(msg, hideContent) {
+		this.hideMessage();
+		this.hideSpinner();
+		this.error.html(msg).show();
+		hideContent && this.content.hide();
+		return this;
+	}
+
+	this.hideError= function() {
+		this.error.text('').hide();
+		this.content.show();
+		return this;
+	}
+
+	this.showSpinner = function(txt) {
+		this.error.hide();
+		this.message.hide();
+		this.content.hide();
+		this.spinner.text(txt||this.opts.spinner).show();
+		this.option('buttons', {});
+		return this;
+	}
+
+	this.hideSpinner = function() {
+		this.content.show();
+		this.spinner.hide();
+		return this;
+	}
+
+	this.showMessage = function(txt, hideContent) {
+		this.hideError();
+		this.hideSpinner();
+		this.message.html(txt||'').show();
+		hideContent && this.content.hide();
+		return this;
+	}
+
+	this.hideMessage = function() {
+		this.message.hide();
+		this.content.show();
+		return this;
+	}
+
+	/**
+	 * Create new tab
+	 * @param string id    - tab id
+	 * @param string title - tab name
+	 * @return elDialogForm
+	**/
+	this.tab = function(id, title) {
+		id = this.opts.tabPrefix+id;
+
+		if (!this.ul) {
+			this.ul = jQuery('<ul />').prependTo(this.form);
+		}
+		jQuery('<li />').append(jQuery('<a />').attr('href', '#'+id).html(title)).appendTo(this.ul);
+		this.tabs[id] = {tab : jQuery('<div />').attr('id', id).addClass('tab').appendTo(this.form), table : null};
+		return this;
+	}
+
+	/**
+	 * Create new table
+	 * @param string id  tab id, if set - table will create in tab, otherwise - in dialog
+	 * @return elDialogForm
+	**/
+	this.table = function(id) {
+		id = id && id.indexOf(this.opts.tabPrefix) == -1 ? this.opts.tabPrefix+id : id;
+		if (id && this.tabs && this.tabs[id]) {
+			this.tabs[id].table = jQuery('<table />').appendTo(this.tabs[id].tab);
+		} else {
+			this._table = jQuery('<table />').appendTo(this.form);
+		}
+		return this;
+	}
+
+	/**
+	 * Append html, dom nodes or jQuery objects to dialog or tab
+	 * @param array|object|string  data object(s) to append to dialog
+	 * @param string               tid  tab id, if adding to tab
+	 * @param bool                 t    if true - data will added in table (creating automagicaly)
+	 * @return elDialogForm
+	**/
+	this.append = function(data, tid, t) {
+		tid = tid ? 'el-df-tab-'+tid : '';
+
+		if (!data) {
+			return this;
+		}
+
+		if (tid && this.tabs[tid]) {
+			if (t) {
+				!this.tabs[tid].table && this.table(tid);
+				var tr = jQuery('<tr />').appendTo(this.tabs[tid].table);
+				if (!jQuery.isArray(data)) {
+					tr.append(jQuery('<td />').append(data));
+				} else {
+					for (var i=0; i < data.length; i++) {
+						tr.append(jQuery('<td />').append(data[i]));
+					};
+				}
+			} else {
+				if (!jQuery.isArray(data)) {
+					this.tabs[tid].tab.append(data)
+				} else {
+					for (var i=0; i < data.length; i++) {
+						this.tabs[tid].tab.append(data[i]);
+					};
+				}
+			}
+
+		} else {
+			if (!t) {
+				if (!jQuery.isArray(data)) {
+					this.form.append(data);
+				} else {
+					for (var i=0; i < data.length; i++) {
+						this.form.append(data[i]);
+					};
+				}
+			} else {
+				if (!this._table) {
+					this.table();
+				}
+				var tr = jQuery('<tr />').appendTo(this._table);
+				if (!jQuery.isArray(data)) {
+					tr.append(jQuery('<td />').append(data));
+				} else {
+					for (var i=0; i < data.length; i++) {
+						tr.append(jQuery('<td />').append(data[i]));
+					};
+				}
+			}
+		}
+		return this;
+	}
+
+	/**
+	 * Append separator (div class="separator") to dialog or tab
+	 * @param  string tid  tab id, if adding to tab
+	 * @return elDialogForm
+	**/
+	this.separator = function(tid) {
+		tid = 'el-df-tab-'+tid;
+		if (this.tabs && this.tabs[tid]) {
+			this.tabs[tid].tab.append(jQuery('<div />').addClass('separator'));
+			this.tabs[tid].table && this.table(tid);
+		} else {
+			this.form.append(jQuery('<div />').addClass('separator'));
+		}
+		return this;
+	}
+
+	/**
+	 * Open dialog window
+	 * @return elDialogForm
+	**/
+	this.open = function() {
+		this.ul && this.form.tabs(this.opts.tabs);
+		this.form.find(':text').keyup(function(e) {
+			if (e.keyCode == 13) {
+				self.form.submit();
+			}
+		});
+
+		this.dialog.attr('unselectable', 'on').dialog('open');
+		var self = this;
+		if (this.form && this.form.find(':text').length) {
+			setTimeout(function() { self.form.find(':text')[0].focus(); }, 20);
+		}
+
+		return this;
+	}
+
+	/**
+	 * Close dialog window and destroy content
+	 * @return void
+	**/
+	this.close = function() {
+		if (typeof(this.opts.close) == 'function') {
+			this.opts.close();
+		}
+		this.dialog.dialog('destroy').remove();
+	}
+
+}
+
+/**
+ * elColorPicker. JQuery plugin
+ * Create drop-down colors palette.
+ *
+ * Usage:
+ * $(selector).elColorPicker(opts)
+ *
+ * set color after init:
+ * var c = $(selector).elColorPicker(opts)
+ * c.val('#ffff99)
+ *
+ * Get selected color:
+ * var color = c.val();
+ *
+ * Notice!
+ *   Palette created only after first click on element (lazzy loading)
+ *
+ * Options:
+ *   colors - colors array (by default display 256 web safe colors)
+ *   color  - current (selected) color
+ *   class - css class for display "button" (element on wich plugin was called)
+ *   paletteClass - css class for colors palette
+ *   palettePosition - string indicate where palette will created:
+ *      'inner' - palette will attach to element (acceptable in most cases)
+ *      'outer' - palette will attach to document.body.
+ *                Use, when create color picker inside element with overflow == 'hidden', for example in ui.dialog
+ *   update - function wich update button view on select color (by default set selected color as background)
+ *   change - callback, called when color was selected (by default write color to console.log)
+ *   name   - hidden text field in wich selected color value will saved
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ *
+ **/
+(function($) {
+
+	$.fn.elColorPicker = function(o) {
+		var self     = this;
+		var opts     = $.extend({}, $.fn.elColorPicker.defaults, o);
+		this.hidden  = $('<input type="hidden" />').attr('name', opts.name).val(opts.color||'').appendTo(this);
+		this.palette = null;
+		this.preview = null;
+		this.input   = null;
+
+		function setColor(c) {
+			self.val(c);
+			opts.change && opts.change(self.val());
+			self.palette.slideUp();
+		}
+
+		function init() {
+			self.palette  = $('<div />').addClass(opts.paletteClass+' rounded-3');
+			for (var i=0; i < opts.colors.length; i++) {
+				$('<div />')
+					.addClass('color')
+					.css('background-color', opts.colors[i])
+					.attr({title : opts.colors[i], unselectable : 'on'})
+					.appendTo(self.palette)
+					.mouseenter(function() {
+						var v = $(this).attr('title');
+						self.input.val(v);
+						self.preview.css('background-color', v);
+					})
+					.click(function(e) {
+						e.stopPropagation();
+						setColor($(this).attr('title'));
+					});
+			};
+			self.input = $('<input type="text" />')
+				.addClass('rounded-3')
+				.attr('size', 8)
+				.click(function(e) {
+					e.stopPropagation();
+				})
+				.keydown(function(e) {
+					if (e.ctrlKey || e.metaKey) {
+						return true;
+					}
+					var k = e.keyCode;
+					// on esc - close palette
+					if (k == 27) {
+						return self.mouseleave();
+					}
+					// allow input only hex color value
+					if (k!=8 && k != 13 && k!=46 && k!=37 && k != 39 && (k<48 || k>57) && (k<65 || k > 70)) {
+						return false;
+					}
+					var c = $(this).val();
+					if (c.length == 7 || c.length == 0) {
+						if (k == 13) {
+							e.stopPropagation();
+							e.preventDefault();
+							setColor(c);
+							self.palette.slideUp();
+						}
+						if (e.keyCode != 8 && e.keyCode != 46 && k!=37 && k != 39) {
+							return false;
+						}
+					}
+				})
+				.keyup(function(e) {
+					var c = $(this).val();
+					c.length == 7 && /^#[0-9abcdef]{6}$/i.test(c) && self.val(c);
+				});
+
+			self.preview = $('<div />')
+				.addClass('preview rounded-3')
+				.click(function(e) {
+					e.stopPropagation();
+					setColor(self.input.val());
+				});
+
+			self.palette
+				.append($('<div />').addClass('clearfix'))
+				.append($('<div />').addClass('panel').append(self.input).append(self.preview));
+
+			if (opts.palettePosition == 'outer') {
+				self.palette.hide()
+					.appendTo(self.parents('body').eq(0))
+					.mouseleave(function() {
+						$(this).slideUp();
+						self.val(self.val());
+					})
+				self.mouseleave(function(e) {
+					if (e.relatedTarget != self.palette.get(0)) {
+						self.palette.slideUp();
+						self.val(self.val());
+					}
+				})
+			} else {
+				self.append(self.palette.hide())
+					.mouseleave(function(e) {
+						self.palette.slideUp();
+						self.val(self.val());
+					});
+			}
+			self.val(self.val());
+		}
+
+		this.empty().addClass(opts['class']+' rounded-3')
+			.css({'position' : 'relative', 'background-color' : opts.color||''})
+		.click(function(e) {
+			if (!self.hasClass('disabled')) {
+				!self.palette && init();
+				if (opts.palettePosition == 'outer' && self.palette.css('display') == 'none') {
+					var o = $(this).offset();
+					var w = self.palette.width();
+					var l = self.parents('body').width() - o.left >= w ? o.left : o.left + $(this).outerWidth() - w;
+					self.palette.css({left : l+'px', top : o.top+$(this).height()+1+'px'});
+				}
+				self.palette.slideToggle();
+			}
+		});
+
+		this.val = function(v) {
+			if (!v && v!=='') {
+				return this.hidden.val();
+			} else {
+				this.hidden.val(v);
+				if (opts.update) {
+					opts.update(this.hidden.val());
+				} else {
+					this.css('background-color', v);
+				}
+
+				if (self.palette) {
+					self.preview.css('background-color', v);
+					self.input.val(v);
+				}
+			}
+			return this;
+		}
+
+		return this;
+	}
+
+	$.fn.elColorPicker.defaults = {
+		'class'         : 'el-colorpicker',
+		paletteClass    : 'el-palette',
+		palettePosition : 'inner',
+		name            : 'color',
+		color           : '',
+		update          : null,
+		change          : function(c) {  },
+		colors          : [
+			'#ffffff', '#cccccc', '#999999', '#666666', '#333333', '#000000',
+			'#ffcccc', '#cc9999', '#996666', '#663333', '#330000',
+			'#ff9999', '#cc6666', '#cc3333', '#993333', '#660000',
+			'#ff6666', '#ff3333', '#ff0000', '#cc0000', '#990000',
+			'#ff9966', '#ff6633', '#ff3300', '#cc3300', '#993300',
+			'#ffcc99', '#cc9966', '#cc6633', '#996633', '#663300',
+			'#ff9933', '#ff6600', '#ff9900', '#cc6600', '#cc9933',
+			'#ffcc66', '#ffcc33', '#ffcc00', '#cc9900', '#996600',
+			'#ffffcc', '#cccc99', '#999966', '#666633', '#333300',
+			'#ffff99', '#cccc66', '#cccc33', '#999933', '#666600',
+			'#ffff66', '#ffff33', '#ffff00', '#cccc00', '#999900',
+			'#ccff66', '#ccff33', '#ccff00', '#99cc00', '#669900',
+			'#ccff99', '#99cc66', '#99cc33', '#669933', '#336600',
+			'#99ff33', '#99ff00', '#66ff00', '#66cc00', '#66cc33',
+			'#99ff66', '#66ff33', '#33ff00', '#33cc00', '#339900',
+			'#ccffcc', '#99cc99', '#669966', '#336633', '#003300',
+			'#99ff99', '#66cc66', '#33cc33', '#339933', '#006600',
+			'#66ff66', '#33ff33', '#00ff00', '#00cc00', '#009900',
+			'#66ff99', '#33ff66', '#00ff33', '#00cc33', '#009933',
+			'#99ffcc', '#66cc99', '#33cc66', '#339966', '#006633',
+			'#33ff99', '#00ff66', '#00ff99', '#00cc66', '#33cc99',
+			'#66ffcc', '#33ffcc', '#00ffcc', '#00cc99', '#009966',
+			'#ccffff', '#99cccc', '#669999', '#336666', '#003333',
+			'#99ffff', '#66cccc', '#33cccc', '#339999', '#006666',
+			'#66cccc', '#33ffff', '#00ffff', '#00cccc', '#009999',
+			'#66ccff', '#33ccff', '#00ccff', '#0099cc', '#006699',
+			'#99ccff', '#6699cc', '#3399cc', '#336699', '#003366',
+			'#3399ff', '#0099ff', '#0066ff', '#066ccc', '#3366cc',
+			'#6699ff', '#3366ff', '#0033ff', '#0033cc', '#003399',
+			'#ccccff', '#9999cc', '#666699', '#333366', '#000033',
+			'#9999ff', '#6666cc', '#3333cc', '#333399', '#000066',
+			'#6666ff', '#3333ff', '#0000ff', '#0000cc', '#009999',
+			'#9966ff', '#6633ff', '#3300ff', '#3300cc', '#330099',
+			'#cc99ff', '#9966cc', '#6633cc', '#663399', '#330066',
+			'#9933ff', '#6600ff', '#9900ff', '#6600cc', '#9933cc',
+			'#cc66ff', '#cc33ff', '#cc00ff', '#9900cc', '#660099',
+			'#ffccff', '#cc99cc', '#996699', '#663366', '#330033',
+			'#ff99ff', '#cc66cc', '#cc33cc', '#993399', '#660066',
+			'#ff66ff', '#ff33ff', '#ff00ff', '#cc00cc', '#990099',
+			'#ff66cc', '#ff33cc', '#ff00cc', '#cc0099', '#990066',
+			'#ff99cc', '#cc6699', '#cc3399', '#993366', '#660033',
+			'#ff3399', '#ff0099', '#ff0066', '#cc0066', '#cc3366',
+			'#ff6699', '#ff3366', '#ff0033', '#cc0033', '#990033'
+			]
+	};
+
+})(jQuery);
+/**
+ * jQuery plugin. Create group of text input, elSelect and elColorPicker.
+ * Allow input border-width, border-style and border-color. Used in elRTE
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ **/
+(function($) {
+
+	$.fn.elBorderSelect = function(o) {
+
+		var $self = this;
+		var self  = this.eq(0);
+		var opts  = $.extend({}, $.fn.elBorderSelect.defaults, o);
+		var width = $('<input type="text" />')
+			.attr({'name' : opts.name+'[width]', size : 3}).css('text-align', 'right')
+			.change(function() { $self.change(); });
+
+		var color = $('<div />').css('position', 'relative')
+			.elColorPicker({
+				'class'         : 'el-colorpicker ui-icon ui-icon-pencil',
+				name            : opts.name+'[color]',
+				palettePosition : 'outer',
+				change          : function() { $self.change(); }
+			});
+
+
+		var style = $('<div />').elSelect({
+			tpl       : '<div style="border-bottom:4px %val #000;width:100%;margin:7px 0"> </div>',
+			tpls      : { '' : '%label'},
+			maxHeight : opts.styleHeight || null,
+			select    : function() { $self.change(); },
+			src       : {
+				''       : 'none',
+				solid    : 'solid',
+				dashed   : 'dashed',
+				dotted   : 'dotted',
+				'double' : 'double',
+				groove   : 'groove',
+				ridge    : 'ridge',
+				inset    : 'inset',
+				outset   : 'outset'
+			}
+		});
+
+		self.empty()
+			.addClass(opts['class'])
+			.attr('name', opts.name||'')
+			.append(
+				$('<table />').attr('cellspacing', 0).append(
+					$('<tr />')
+						.append($('<td />').append(width).append(' px'))
+						.append($('<td />').append(style))
+						.append($('<td />').append(color))
+				)
+			);
+
+		function rgb2hex(str) {
+		    function hex(x)  {
+			hexDigits = ["0", "1", "2", "3", "4", "5", "6", "7", "8","9", "a", "b", "c", "d", "e", "f"];
+		        return !x  ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x% 16];
+		    }
+			var rgb = (str||'').match(/\(([0-9]{1,3}),\s*([0-9]{1,3}),\s*([0-9]{1,3})\)/);
+			return rgb ? "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]) : '';
+		}
+
+		function toPixels(num) {
+			if (!num) {
+				return num;
+			}
+			var m = num.match(/([0-9]+\.?[0-9]*)\s*(px|pt|em|%)/);
+			if (m) {
+				num  = m[1];
+				unit = m[2];
+			}
+			if (num[0] == '.') {
+				num = '0'+num;
+			}
+			num = parseFloat(num);
+
+			if (isNaN(num)) {
+				return '';
+			}
+			var base = parseInt($(document.body).css('font-size')) || 16;
+			switch (unit) {
+				case 'em': return parseInt(num*base);
+				case 'pt': return parseInt(num*base/12);
+				case '%' : return parseInt(num*base/100);
+			}
+			return num;
+		}
+
+		this.change = function() {
+			opts.change && opts.change(this.val());
+		}
+
+		this.val = function(v) {
+			if (!v && v !== '') {
+				var w = parseInt(width.val());
+				return {width : !isNaN(w) ? w+'px' : '', style : style.val(), color : color.val()};
+			} else {
+				var m, w, s, c, b = '';
+				if (v.nodeName || v.css) {
+					if (!v.css) {
+						v = $(v);
+					}
+					var b = v.css('border')
+					if ((b = v.css('border'))) {
+						w = s = c = b;
+					} else {
+						w = v.css('border-width');
+						s = v.css('border-style');
+						c = v.css('border-color');
+					}
+
+				} else {
+					w = v.width||'';
+					s = v.style||'';
+					c = v.color||'';
+				}
+
+				width.val(toPixels(w));
+				var m = s ? s.match(/(solid|dashed|dotted|double|groove|ridge|inset|outset)/i) :'';
+				style.val(m ? m[1] : '');
+				color.val(rgb2hex(c));
+				return this;
+			}
+		}
+
+		this.val(opts.value);
+		return this;
+	}
+
+	$.fn.elBorderSelect.defaults = {
+		name      : 'el-borderselect',
+		'class'   : 'el-borderselect',
+		value     : {},
+		change    : null
+	}
+
+})(jQuery);
+/**
+ * jQuery plugin. Create group of text input fields and selects for setting padding/margin. Used in elRTE
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ **/
+(function($) {
+
+	$.fn.elPaddingInput = function(o) {
+		var self = this;
+		var opts = $.extend({}, $.fn.elPaddingInput.defaults, {name : this.attr('name')}, o);
+		this.regexps = {
+			main   : new RegExp(opts.type == 'padding' ? 'padding\s*:\s*([^;"]+)'        : 'margin\s*:\s*([^;"]+)',       'im'),
+			left   : new RegExp(opts.type == 'padding' ? 'padding-left\s*:\s*([^;"]+)'   : 'margin-left\s*:\s*([^;"]+)',  'im'),
+			top    : new RegExp(opts.type == 'padding' ? 'padding-top\s*:\s*([^;"]+)'    : 'margin-top\s*:\s*([^;"]+)',    'im'),
+			right  : new RegExp(opts.type == 'padding' ? 'padding-right\s*:\s*([^;"]+)'  : 'margin-right\s*:\s*([^;"]+)',  'im'),
+			bottom : new RegExp(opts.type == 'padding' ? 'padding-bottom\s*:\s*([^;"]+)' : 'margin-bottom\s*:\s*([^;"]+)', 'im')
+		};
+
+		$.each(['left', 'top', 'right', 'bottom'], function() {
+
+			self[this] = $('<input type="text" />')
+				.attr('size', 3)
+				.css('text-align', 'right')
+				.css('border-'+this, '2px solid red')
+				.bind('change', function() { $(this).val(parseNum($(this).val())); change(); })
+				.attr('name', opts.name+'['+this+']');
+		});
+		$.each(['uleft', 'utop', 'uright', 'ubottom'], function() {
+			self[this] = $('<select />')
+				.append('<option value="px">px</option>')
+				.append('<option value="em">em</option>')
+				.append('<option value="pt">pt</option>')
+				.bind('change', function() { change(); })
+				.attr('name', opts.name+'['+this+']');
+			if (opts.percents) {
+				self[this].append('<option value="%">%</option>');
+			}
+		});
+
+		this.empty().addClass(opts['class'])
+			.append(this.left).append(this.uleft).append(' x ')
+			.append(this.top).append(this.utop).append(' x ')
+			.append(this.right).append(this.uright).append(' x ')
+			.append(this.bottom).append(this.ubottom);
+
+		this.val = function(v) {
+			if (!v && v!=='') {
+				var l = parseNum(this.left.val());
+				var t = parseNum(this.top.val());
+				var r = parseNum(this.right.val());
+				var b = parseNum(this.bottom.val());
+				var ret = {
+					left   : l=='auto' || l==0 ? l : (l!=='' ? l+this.uleft.val()   : ''),
+					top    : t=='auto' || t==0 ? t : (t!=='' ? t+this.utop.val()    : ''),
+					right  : r=='auto' || r==0 ? r : (r!=='' ? r+this.uright.val()  : ''),
+					bottom : b=='auto' || b==0 ? b : (b!=='' ? b+this.ubottom.val() : ''),
+					css    : ''
+				};
+				if (ret.left!=='' && ret.right!=='' && ret.top!=='' && ret.bottom!=='') {
+					if (ret.left == ret.right && ret.top == ret.bottom) {
+						ret.css = ret.top+' '+ret.left;
+					} else{
+						ret.css = ret.top+' '+ret.right+' '+ret.bottom+' '+ret.left;
+					}
+				}
+
+				return ret;
+			} else {
+
+				if (v.nodeName || v.css) {
+					if (!v.css) {
+						v = $(v);
+					}
+					var val   = {left : '', top : '', right: '', bottom : ''};
+					var style = (v.attr('style')||'').toLowerCase();
+
+					if (style) {
+						style   = $.trim(style);
+						var m = style.match(this.regexps.main);
+						if (m) {
+							var tmp    = $.trim(m[1]).replace(/\s+/g, ' ').split(' ', 4);
+							val.top    = tmp[0];
+							val.right  = tmp[1] && tmp[1]!=='' ? tmp[1] : val.top;
+							val.bottom = tmp[2] && tmp[2]!=='' ? tmp[2] : val.top;
+							val.left   = tmp[3] && tmp[3]!=='' ? tmp[3] : val.right;
+						} else {
+							$.each(['left', 'top', 'right', 'bottom'], function() {
+								var name = this.toString();
+								m = style.match(self.regexps[name]);
+								if (m) {
+									val[name] = m[1];
+								}
+							});
+						}
+					}
+					var v = val;
+				}
+
+				$.each(['left', 'top', 'right', 'bottom'], function() {
+					var name = this.toString();
+					if (typeof(v[name]) != 'undefined' && v[name] !== null) {
+						v[name] = v[name].toString();
+						var _v = parseNum(v[name]);
+						self[name].val(_v);
+						var m = v[name].match(/(px|em|pt|%)/i);
+						self['u'+name].val(m ? m[1] : 'px');
+					}
+				});
+				return this;
+			}
+		}
+
+		function parseNum(num) {
+			num = $.trim(num.toString());
+			if (num[0] == '.') {
+				num = '0'+num;
+			}
+			n = parseFloat(num);
+			return !isNaN(n) ? n : (num == 'auto' ? num : '');
+		}
+
+		function change() {
+			opts.change && opts.change(self);
+		}
+
+		this.val(opts.value);
+
+		return this;
+	}
+
+	$.fn.elPaddingInput.defaults = {
+		name     : 'el-paddinginput',
+		'class'  : 'el-paddinginput',
+		type     : 'padding',
+		value    : {},
+		percents : true,
+		change   : null
+	}
+
+})(jQuery);
+/**
+ * elSelect JQuery plugin
+ * Replacement for select input
+ * Allow to put any html and css decoration in drop-down list
+ *
+ * Usage:
+ *   $(selector).elSelect(opts)
+ *
+ * set value after init:
+ *   var c = $(selector).elSelect(opts)
+ *   c.val('some value')
+ *
+ * Get selected value:
+ *   var val = c.val();
+ *
+ * Notice!
+ *   1. When called on multiply elements, elSelect create drop-down list only for fist element
+ *   2. Elements list created only after first click on element (lazzy loading)
+ *
+ * Options:
+ *   src       - object with pairs value:label to create drop-down list
+ *   value     - current (selected) value
+ *   class     - css class for display "button" (element on wich plugin was called)
+ *   listClass - css class for drop down elements list
+ *   select    - callback, called when value was selected (by default write value to console.log)
+ *   name      - hidden text field in wich selected value will saved
+ *   maxHeight - elements list max height (if height greater - scroll will appear)
+ *   tpl       - template for element in list (contains 2 vars: %var - for src key, %label - for src[val] )
+ *   labelTpl  - template for label (current selected element) (contains 2 placeholders: %var - for src key, %label - for src[val] )
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ **/
+(function($) {
+
+	$.fn.elSelect = function(o) {
+		var $self    = this;
+		var self     = this.eq(0);
+		var opts     = $.extend({}, $.fn.elSelect.defaults, o);
+		var hidden   = $('<input type="hidden" />').attr('name', opts.name);
+		var label    = $('<label />').attr({unselectable : 'on'}).addClass('rounded-left-3');
+		var list     = null;
+		var ieWidth  = null;
+
+		if (self.get(0).nodeName == 'SELECT') {
+			opts.src = {};
+			self.children('option').each(function() {
+				opts.src[$(this).val()] = $(this).text();
+			});
+			opts.value = self.val();
+			opts.name  = self.attr('name');
+			self.replaceWith((self = $('<div />')));
+		}
+
+		if (!opts.value || !opts.src[opts.val]) {
+			opts.value = null;
+			var i = 0;
+			for (var v in opts.src) {
+				if (i++ == 0) {
+					opts.value = v;
+				}
+			}
+		}
+
+		this.val = function(v) {
+			if (!v && v!=='') {
+				return hidden.val();
+			} else {
+				if (opts.src[v]) {
+					hidden.val(v);
+					updateLabel(v);
+					if (list) {
+						list.children().each(function() {
+							if ($(this).attr('name') == v) {
+								$(this).addClass('active');
+							} else {
+								$(this).removeClass('active');
+							}
+						});
+					}
+				}
+				return this;
+			}
+		}
+
+		// update label content
+		function updateLabel(v) {
+			var tpl = opts.labelTpl || opts.tpls[v] || opts.tpl;
+			label.html(tpl.replace(/%val/g, v).replace(/%label/, opts.src[v])).children().attr({unselectable : 'on'});
+		}
+
+		// init "select"
+		self.empty()
+			.addClass(opts['class']+' rounded-3')
+			.attr({unselectable : 'on'})
+			.append(hidden)
+			.append(label)
+			.hover(
+				function() { $(this).addClass('hover') },
+				function() { $(this).removeClass('hover') }
+			)
+			.click(function(e) {
+				!list && init();
+				list.slideToggle();
+				// stupid ie inherit width from parent
+				if ($.browser.msie && !ieWidth) {
+					list.children().each(function() {
+						ieWidth = Math.max(ieWidth, $(this).width());
+					});
+					if (ieWidth > list.width()) {
+						list.width(ieWidth+40);
+					}
+				}
+			});
+
+		this.val(opts.value);
+
+		// create drop-down list
+		function init() {
+			// not ul because of ie is stupid with mouseleave in it :(
+			list = $('<div />')
+				.addClass(opts.listClass+' rounded-3')
+				.hide()
+				.appendTo(self.mouseleave(function(e) { list.slideUp(); }));
+
+			for (var v in opts.src) {
+				var tpl = opts.tpls[v] || opts.tpl;
+				$('<div />')
+					.attr('name', v)
+					.append( $(tpl.replace(/%val/g, v).replace(/%label/g, opts.src[v])).attr({unselectable : 'on'}) )
+					.appendTo(list)
+					.hover(
+						function() { $(this).addClass('hover') },
+						function() { $(this).removeClass('hover') }
+					)
+					.click(function(e) {
+						e.stopPropagation();
+						e.preventDefault();
+
+						var v = $(this).attr('name');
+						$self.val(v);
+						opts.select(v);
+						list.slideUp();
+					});
+			};
+
+			var w = self.outerWidth();
+			if (list.width() < w) {
+				list.width(w);
+			}
+
+			var h = list.height();
+			if (opts.maxHeight>0 && h>opts.maxHeight) {
+				list.height(opts.maxHeight);
+			}
+
+			$self.val(hidden.val());
+		}
+
+		return this;
+	}
+
+	$.fn.elSelect.defaults = {
+		name      : 'el-select',
+		'class'   : 'el-select',
+		listClass : 'list',
+		labelTpl  : null,
+		tpl       : '<%val>%label</%val>',
+		tpls      : {},
+		value     : null,
+		src       : {},
+		select    : function(v) {  window.console &&  window.console.log && window.console.log('selected: '+v); },
+		maxHeight : 410
+	}
+
+})(jQuery);
+/*
+ * elRTE - WSWING editor for web
+ *
+ * Usage:
+ * var opts = {
+ *	.... // see elRTE.options.js
+ * }
+ * var editor = new elRTE($('#my-id').get(0), opts)
+ * or
+ * $('#my-id').elrte(opts)
+ *
+ * $('#my-id) may be textarea or any DOM Element with text
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * Copyright: Studio 42, http://www.std42.ru
+ */
+(function($) {
+
+elRTE = function(target, opts) {
+	if (!target || !target.nodeName) {
+		return alert('elRTE: argument "target" is not DOM Element');
+	}
+	var self     = this, html;
+	this.version = '1.1';
+	this.build   = '2010-09-20';
+	this.options = $.extend(true, {}, this.options, opts);
+	this.browser = $.browser;
+	this.target  = $(target);
+
+	this.lang      = (''+this.options.lang).toLowerCase();
+	this._i18n     = new eli18n({textdomain : 'rte', messages : { rte : this.i18Messages[this.lang] || {}} });
+	this.rtl = !!(/^(ar|fa|he)$/.test(this.lang) && this.i18Messages[this.lang]);
+
+	if (this.rtl) {
+		this.options.cssClass += ' el-rte-rtl';
+	}
+	this.toolbar   = $('<div class="toolbar"/>');
+	this.iframe    = document.createElement('iframe');
+	// this.source    = $('<textarea />').hide();
+	this.workzone  = $('<div class="workzone"/>').append(this.iframe).append(this.source);
+	this.statusbar = $('<div class="statusbar"/>');
+	this.tabsbar   = $('<div class="tabsbar"/>');
+	this.editor    = $('<div class="'+this.options.cssClass+'" />').append(this.toolbar).append(this.workzone).append(this.statusbar).append(this.tabsbar);
+
+	this.doc     = null;
+	this.$doc    = null;
+	this.window  = null;
+
+	this.utils  = new this.utils(this);
+	this.dom    = new this.dom(this);
+	this.filter = new this.filter(this)
+
+	/**
+	 * Sync iframes/textareas height with workzone height
+	 *
+	 * @return void
+	 */
+	this.updateHeight = function() {
+		self.workzone.add(self.iframe).add(self.source).height(self.workzone.height());
+	}
+
+	/**
+	 * Turn editor resizable on/off if allowed
+	 *
+	 * @param  Boolean
+	 * @return void
+	 **/
+	this.resizable = function(r) {
+		var self = this;
+		if (this.options.resizable && $.fn.resizable) {
+			if (r) {
+				this.editor.resizable({handles : 'se', alsoResize : this.workzone, minWidth :300, minHeight : 200 }).bind('resize', self.updateHeight);
+			} else {
+				this.editor.resizable('destroy').unbind('resize', self.updateHeight);
+			}
+		}
+	}
+
+	/* attach editor to document */
+	this.editor.insertAfter(target);
+	/* init editor textarea */
+	var content = '';
+	if (target.nodeName == 'TEXTAREA') {
+		this.source = this.target;
+		this.source.insertAfter(this.iframe).hide();
+		content = this.target.val();
+	} else {
+		this.source = $('<textarea />').insertAfter(this.iframe).hide();
+		content = this.target.hide().html();
+	}
+	this.source.attr('name', this.target.attr('name')||this.target.attr('id'));
+	content = $.trim(content);
+	if (!content) {
+		content = ' ';
+	}
+
+	/* add tabs */
+	if (this.options.allowSource) {
+		this.tabsbar.append('<div class="tab editor rounded-bottom-7 active">'+self.i18n('Editor')+'</div><div class="tab source rounded-bottom-7">'+self.i18n('Source')+'</div><div class="clearfix" style="clear:both"/>')
+			.children('.tab').click(function(e) {
+				if (!$(this).hasClass('active')) {
+					self.tabsbar.children('.tab').toggleClass('active');
+					self.workzone.children().toggle();
+
+					if ($(this).hasClass('editor')) {
+						self.updateEditor();
+						self.window.focus();
+						self.ui.update(true);
+					} else {
+						self.updateSource();
+						self.source.focus();
+						if ($.browser.msie) {
+							// @todo
+						} else {
+							self.source[0].setSelectionRange(0, 0);
+						}
+						self.ui.disable();
+						self.statusbar.empty();
+
+					}
+				}
+
+			});
+	}
+
+	this.window = this.iframe.contentWindow;
+	this.doc    = this.iframe.contentWindow.document;
+	this.$doc   = $(this.doc);
+
+	/* put content into iframe */
+	html = '<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+	$.each(self.options.cssfiles, function() {
+		html += '<link rel="stylesheet" type="text/css" href="'+this+'" />';
+	});
+	this.doc.open();
+	var s = this.filter.wysiwyg(content),
+		cl = this.rtl ? ' class="el-rte-rtl"' : '';
+	this.doc.write(self.options.doctype+html+'</head><body'+cl+'>'+(s)+'</body></html>');
+	this.doc.close();
+
+	/* make iframe editable */
+	if ($.browser.msie) {
+		this.doc.body.contentEditable = true;
+	} else {
+		try { this.doc.designMode = "on"; }
+		catch(e) { }
+		this.doc.execCommand('styleWithCSS', false, this.options.styleWithCSS);
+	}
+
+	if (this.options.height>0) {
+		this.workzone.height(this.options.height);
+
+	}
+	this.updateHeight();
+	this.resizable(true);
+	this.window.focus();
+
+	this.history = new this.history(this);
+
+	/* init selection object */
+	this.selection = new this.selection(this);
+	/* init buttons */
+	this.ui = new this.ui(this);
+
+
+	/* bind updateSource to parent form submit */
+	this.target.parents('form').bind('submit', function(e) {
+		self.source.parents('form').find('[name="el-select"]').remove()
+		self.beforeSave();
+	});
+
+	// on tab press - insert \t and prevent move focus
+	this.source.bind('keydown', function(e) {
+		if (e.keyCode == 9) {
+			e.preventDefault();
+
+			if ($.browser.msie) {
+				var r = document.selection.createRange();
+				r.text = "\t"+r.text;
+				this.focus();
+			} else {
+				var before = this.value.substr(0, this.selectionStart),
+					after = this.value.substr(this.selectionEnd);
+				this.value = before+"\t"+after;
+				this.setSelectionRange(before.length+1, before.length+1);
+			}
+		}
+	});
+
+	/* update buttons on click and keyup */
+	this.$doc.bind('mouseup', function() {
+		self.ui.update();
+	})
+	.bind('dragstart', function(e) {
+		e.preventDefault();
+		e.stopPropagation();
+	})
+	.bind('keyup', function(e) {
+		if ((e.keyCode >= 8 && e.keyCode <= 13) || (e.keyCode>=32 && e.keyCode<= 40) || e.keyCode == 46 || (e.keyCode >=96 && e.keyCode <= 111)) {
+			// self.log('keyup '+e.keyCode)
+			self.ui.update();
+		}
+	})
+	.bind('keydown', function(e) {
+		if ((e.metaKey || e.ctrlKey) && e.keyCode == 65) {
+			self.ui.update();
+		} else if (e.keyCode == 13) {
+			var n = self.selection.getNode();
+			// self.log(n)
+			if (self.dom.selfOrParent(n, /^PRE$/)) {
+				self.selection.insertNode(self.doc.createTextNode("\r\n"));
+				return false;
+			} else if ($.browser.safari && e.shiftKey) {
+				self.selection.insertNode(self.doc.createElement('br'))
+				return false;
+			}
+		}
+	})
+
+	this.typing = false;
+	this.lastKey = null;
+
+	this.$doc.bind('keydown', function(e) {
+		if ((e.keyCode>=48 && e.keyCode <=57) || e.keyCode==61 || e.keyCode == 109 || (e.keyCode>=65 && e.keyCode<=90) || e.keyCode==188 ||e.keyCode==190 || e.keyCode==191 || (e.keyCode>=219 && e.keyCode<=222)) {
+			if (!self.typing) {
+				self.history.add(true);
+			}
+			self.typing = true;
+			self.lastKey = null;
+		} else if (e.keyCode == 8 || e.keyCode == 46 || e.keyCode == 32 || e.keyCode == 13) {
+			if (e.keyCode != self.lastKey) {
+				self.history.add(true);
+			}
+			self.lastKey = e.keyCode;
+			self.typing = false;
+		}
+
+	})
+	.bind('mouseup', function() {
+		self.typing = false;
+		self.lastKey = null;
+	})
+	.bind('paste', function(e) {
+		if (!self.options.allowPaste) {
+			// paste denied
+			e.stopPropagation();
+			e.preventDefault();
+		} else {
+			var n = $(self.dom.create('div'))[0],
+				r = self.doc.createTextNode('_');
+			self.history.add(true);
+			self.typing = true;
+			self.lastKey = null;
+			n.appendChild(r);
+			self.selection.deleteContents().insertNode(n);
+			self.selection.select(r);
+			setTimeout(function() {
+				if (n.parentNode) {
+					// clean sandbox content
+					$(n).html(self.filter.proccess('paste', $(n).html()));
+					r = n.lastChild;
+					self.dom.unwrap(n);
+					if (r) {
+						self.selection.select(r);
+						self.selection.collapse(false);
+					}
+				} else {
+					// smth wrong - clean all doc
+					n.parentNode && n.parentNode.removeChild(n);
+					self.val(self.filter.proccess('paste', self.filter.wysiwyg2wysiwyg($(self.doc.body).html())));
+					self.selection.select(self.doc.body.firstChild);
+					self.selection.collapse(true);
+				}
+				$(self.doc.body).mouseup(); // to activate history buutons
+			}, 15);
+		}
+	});
+
+	if ($.browser.msie) {
+		this.$doc.bind('keyup', function(e) {
+			if (e.keyCode == 86 && (e.metaKey||e.ctrlKey)) {
+				self.history.add(true);
+				self.typing = true;
+				self.lastKey = null;
+				self.selection.saveIERange();
+				self.val(self.filter.proccess('paste', self.filter.wysiwyg2wysiwyg($(self.doc.body).html())));
+				self.selection.restoreIERange();
+				$(self.doc.body).mouseup();
+				this.ui.update();
+			}
+		});
+	}
+
+	if ($.browser.safari) {
+		this.$doc.bind('click', function(e) {
+			$(self.doc.body).find('.elrte-webkit-hl').removeClass('elrte-webkit-hl');
+			if (e.target.nodeName == 'IMG') {
+				$(e.target).addClass('elrte-webkit-hl');
+			}
+		}).bind('keyup', function(e) {
+			$(self.doc.body).find('.elrte-webkit-hl').removeClass('elrte-webkit-hl');
+		})
+	}
+
+	// this.resizable(true)
+	this.window.focus();
+	// this.log(this.editor.parents('form').find('[name="el-select"]'))
+
+
+}
+
+/**
+ * Return message translated to selected language
+ *
+ * @param  string  msg  message text in english
+ * @return string
+ **/
+elRTE.prototype.i18n = function(msg) {
+	return this._i18n.translate(msg);
+}
+
+
+
+/**
+ * Display editor
+ *
+ * @return void
+ **/
+elRTE.prototype.open = function() {
+	this.editor.show();
+}
+
+/**
+ * Hide editor and display elements on wich editor was created
+ *
+ * @return void
+ **/
+elRTE.prototype.close = function() {
+	this.editor.hide();
+}
+
+elRTE.prototype.updateEditor = function() {
+	this.val(this.source.val());
+}
+
+elRTE.prototype.updateSource = function() {
+	this.source.val(this.filter.source($(this.doc.body).html()));
+}
+
+/**
+ * Return edited text
+ *
+ * @return String
+ **/
+elRTE.prototype.val = function(v) {
+	if (typeof(v) == 'string') {
+		v = ''+v;
+		if (this.source.is(':visible')) {
+			this.source.val(this.filter.source2source(v));
+		} else {
+			if ($.browser.msie) {
+				this.doc.body.innerHTML = '<br />'+this.filter.wysiwyg(v);
+				this.doc.body.removeChild(this.doc.body.firstChild);
+			} else {
+				this.doc.body.innerHTML = this.filter.wysiwyg(v);
+			}
+
+		}
+	} else {
+		if (this.source.is(':visible')) {
+			return this.filter.source2source(this.source.val());
+		} else {
+			return this.filter.source($(this.doc.body).html());
+		}
+	}
+}
+
+elRTE.prototype.beforeSave = function() {
+	this.source.val(this.val()||'');
+}
+
+/**
+ * Submit form
+ *
+ * @return void
+ **/
+elRTE.prototype.save = function() {
+	this.beforeSave();
+	this.editor.parents('form').submit();
+}
+
+elRTE.prototype.log = function(msg) {
+	if (window.console && window.console.log) {
+		window.console.log(msg);
+	}
+
+}
+
+elRTE.prototype.i18Messages = {};
+
+$.fn.elrte = function(o, v) {
+	var cmd = typeof(o) == 'string' ? o : '', ret;
+
+	this.each(function() {
+		if (!this.elrte) {
+			this.elrte = new elRTE(this, typeof(o) == 'object' ? o : {});
+		}
+		switch (cmd) {
+			case 'open':
+			case 'show':
+				this.elrte.open();
+				break;
+			case 'close':
+			case 'hide':
+				this.elrte.close();
+				break;
+			case 'updateSource':
+				this.elrte.updateSource();
+				break;
+		}
+	});
+
+	if (cmd == 'val') {
+		if (!this.length) {
+			return '';
+		} else if (this.length == 1) {
+			return v ? this[0].elrte.val(v) : this[0].elrte.val();
+		} else {
+			ret = {}
+			this.each(function() {
+				ret[this.elrte.source.attr('name')] = this.elrte.val();
+			});
+			return ret;
+		}
+	}
+	return this;
+}
+
+})(jQuery);
+/*
+ * DOM utilites for elRTE
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ */
+(function($) {
+elRTE.prototype.dom = function(rte) {
+	this.rte = rte;
+	var self = this;
+	this.regExp = {
+		textNodes         : /^(A|ABBR|ACRONYM|ADDRESS|B|BDO|BIG|BLOCKQUOTE|CAPTION|CENTER|CITE|CODE|DD|DEL|DFN|DIV|DT|EM|FIELDSET|FONT|H[1-6]|I|INS|KBD|LABEL|LEGEND|LI|MARQUEE|NOBR|NOEMBED|P|PRE|Q|SAMP|SMALL|SPAN|STRIKE|STRONG|SUB|SUP|TD|TH|TT|VAR)$/,
+		textContainsNodes : /^(A|ABBR|ACRONYM|ADDRESS|B|BDO|BIG|BLOCKQUOTE|CAPTION|CENTER|CITE|CODE|DD|DEL|DFN|DIV|DL|DT|EM|FIELDSET|FONT|H[1-6]|I|INS|KBD|LABEL|LEGEND|LI|MARQUEE|NOBR|NOEMBED|OL|P|PRE|Q|SAMP|SMALL|SPAN|STRIKE|STRONG|SUB|SUP|TABLE|THEAD|TBODY|TFOOT|TD|TH|TR|TT|UL|VAR)$/,
+		block             : /^(APPLET|BLOCKQUOTE|BR|CAPTION|CENTER|COL|COLGROUP|DD|DIV|DL|DT|H[1-6]|EMBED|FIELDSET|LI|MARQUEE|NOBR|OBJECT|OL|P|PRE|TABLE|THEAD|TBODY|TFOOT|TD|TH|TR|UL)$/,
+		selectionBlock    : /^(APPLET|BLOCKQUOTE|BR|CAPTION|CENTER|COL|COLGROUP|DD|DIV|DL|DT|H[1-6]|EMBED|FIELDSET|LI|MARQUEE|NOBR|OBJECT|OL|P|PRE|TD|TH|TR|UL)$/,
+		header            : /^H[1-6]$/,
+		formElement       : /^(FORM|INPUT|HIDDEN|TEXTAREA|SELECT|BUTTON)$/
+	};
+
+	/********************************************************/
+	/*                      Утилиты                         */
+	/********************************************************/
+
+	/**
+	 * Возвращает body редактируемого документа
+	 *
+	 * @return Element
+	 **/
+	this.root = function() {
+		return this.rte.body;
+	}
+
+	this.create = function(t) {
+		return this.rte.doc.createElement(t);
+	}
+
+	/**
+	 * Return node for bookmark with unique ID
+	 *
+	 * @return DOMElement
+	 **/
+	this.createBookmark = function() {
+		var b = this.rte.doc.createElement('span');
+		b.id = 'elrte-bm-'+Math.random().toString().substr(2);
+		$(b).addClass('elrtebm');
+		return b;
+	}
+
+	/**
+	 * Вовращает индекс элемента внутри родителя
+	 *
+	 * @param  Element n  нода
+	 * @return integer
+	 **/
+	this.indexOf = function(n) {
+		var ndx = 0;
+		n = $(n);
+		while ((n = n.prev()) && n.length) {
+			ndx++;
+		}
+		return ndx;
+	}
+
+	/**
+	 * Вовращает значение аттрибута в нижнем регистре (ох уж этот IE)
+	 *
+	 * @param  Element n  нода
+	 * @param  String  attr имя аттрибута
+	 * @return string
+	 **/
+	this.attr = function(n, attr) {
+		var v = '';
+		if (n.nodeType == 1) {
+			v = $(n).attr(attr);
+			if (v && attr != 'src' && attr != 'href') {
+				v = v.toString().toLowerCase();
+			}
+		}
+		return v||'';
+	}
+
+	/**
+	 * Вовращает ближайший общий контейнер для 2-х эл-тов
+	 *
+	 * @param  Element n  нода1
+	 * @param  Element n  нода2
+	 * @return Element
+	 **/
+	this.findCommonAncestor = function(n1, n2) {
+		if (!n1 || !n2) {
+			return this.rte.log('dom.findCommonAncestor invalid arguments');
+		}
+		if (n1 == n2) {
+			return n1;
+		} else if (n1.nodeName == 'BODY' || n2.nodeName == 'BODY') {
+			return this.rte.doc.body;
+		}
+		var p1 = $(n1).parents(), p2 = $(n2).parents(), l  = p2.length-1, c  = p2[l];
+		for (var i = p1.length - 1; i >= 0; i--, l--){
+			if (p1[i] == p2[l]) {
+				c = p1[i];
+			} else {
+				break;
+			}
+		};
+		return c;
+	}
+	/**
+	 * Вовращает TRUE, если нода пустая
+	 * пустой считаем ноды:
+	 *  - текстовые эл-ты, содержащие пустую строку или тег br
+	 *  - текстовые ноды с пустой строкой
+	 *
+	 * @param  DOMElement n  нода
+	 * @return bool
+	 **/
+	this.isEmpty = function(n) {
+		if (n.nodeType == 1) {
+			return this.regExp.textNodes.test(n.nodeName) ? $.trim($(n).text()).length == 0 : false;
+		} else if (n.nodeType == 3) {
+			return /^(TABLE|THEAD|TFOOT|TBODY|TR|UL|OL|DL)$/.test(n.parentNode.nodeName)
+				|| n.nodeValue == ''
+				|| ($.trim(n.nodeValue).length== 0 && !(n.nextSibling && n.previousSibling && n.nextSibling.nodeType==1 && n.previousSibling.nodeType==1 && !this.regExp.block.test(n.nextSibling.nodeName) && !this.regExp.block.test(n.previousSibling.nodeName) ));
+		}
+		return true;
+	}
+
+	/********************************************************/
+	/*                  Перемещение по DOM                  */
+	/********************************************************/
+
+	/**
+	 * Вовращает следующую соседнюю ноду (не включаются текстовые ноды не создающие значимые пробелы между инлайн элементами)
+	 *
+	 * @param  DOMElement n  нода
+	 * @return DOMElement
+	 **/
+	this.next = function(n) {
+		while (n.nextSibling && (n = n.nextSibling)) {
+			if (n.nodeType == 1 || (n.nodeType == 3 && !this.isEmpty(n))) {
+				return n;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Вовращает предыдующую соседнюю ноду (не включаются текстовые ноды не создающие значимые пробелы между инлайн элементами)
+	 *
+	 * @param  DOMElement n  нода
+	 * @return DOMElement
+	 **/
+	this.prev = function(n) {
+		while (n.previousSibling && (n = n.previousSibling)) {
+			if (n.nodeType == 1 || (n.nodeType ==3 && !this.isEmpty(n))) {
+				return n;
+			}
+		}
+		return null;
+	}
+
+	this.isPrev = function(n, prev) {
+		while ((n = this.prev(n))) {
+			if (n == prev) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Вовращает все следующие соседнии ноды (не включаются текстовые ноды не создающие значимые пробелы между инлайн элементами)
+	 *
+	 * @param  DOMElement n  нода
+	 * @return Array
+	 **/
+	this.nextAll = function(n) {
+		var ret = [];
+		while ((n = this.next(n))) {
+			ret.push(n);
+		}
+		return ret;
+	}
+
+	/**
+	 * Вовращает все предыдующие соседнии ноды (не включаются текстовые ноды не создающие значимые пробелы между инлайн элементами)
+	 *
+	 * @param  DOMElement n  нода
+	 * @return Array
+	 **/
+	this.prevAll = function(n) {
+		var ret = [];
+		while ((n = this.prev(n))) {
+			ret.push(n);
+		}
+		return ret;
+	}
+
+	/**
+	 * Вовращает все следующие соседнии inline ноды (не включаются текстовые ноды не создающие значимые пробелы между инлайн элементами)
+	 *
+	 * @param  DOMElement n  нода
+	 * @return Array
+	 **/
+	this.toLineEnd = function(n) {
+		var ret = [];
+		while ((n = this.next(n)) && n.nodeName != 'BR' && n.nodeName != 'HR' && this.isInline(n)) {
+			ret.push(n);
+		}
+		return ret;
+	}
+
+	/**
+	 * Вовращает все предыдующие соседнии inline ноды (не включаются текстовые ноды не создающие значимые пробелы между инлайн элементами)
+	 *
+	 * @param  DOMElement n  нода
+	 * @return Array
+	 **/
+	this.toLineStart = function(n) {
+		var ret = [];
+		while ((n = this.prev(n)) && n.nodeName != 'BR' && n.nodeName != 'HR' && this.isInline(n) ) {
+			ret.unshift(n);
+		}
+		return ret;
+	}
+
+	/**
+	 * Вовращает TRUE, если нода - первый непустой эл-т внутри родителя
+	 *
+	 * @param  Element n  нода
+	 * @return bool
+	 **/
+	this.isFirstNotEmpty = function(n) {
+		while ((n = this.prev(n))) {
+			if (n.nodeType == 1 || (n.nodeType == 3 && $.trim(n.nodeValue)!='' ) ) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Вовращает TRUE, если нода - последний непустой эл-т внутри родителя
+	 *
+	 * @param  Element n  нода
+	 * @return bool
+	 **/
+	this.isLastNotEmpty = function(n) {
+		while ((n = this.next(n))) {
+			if (!this.isEmpty(n)) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Вовращает TRUE, если нода - единственный непустой эл-т внутри родителя
+	 *
+	 * @param  DOMElement n  нода
+	 * @return bool
+	 **/
+	this.isOnlyNotEmpty = function(n) {
+		return this.isFirstNotEmpty(n) && this.isLastNotEmpty(n);
+	}
+
+	/**
+	 * Вовращает последний непустой дочерний эл-т ноды или FALSE
+	 *
+	 * @param  Element n  нода
+	 * @return Element
+	 **/
+	this.findLastNotEmpty = function(n) {
+		this.rte.log('findLastNotEmpty Who is here 0_o');
+		if (n.nodeType == 1 && (l = n.lastChild)) {
+			if (!this.isEmpty(l)) {
+				return l;
+			}
+			while (l.previousSibling && (l = l.previousSibling)) {
+				if (!this.isEmpty(l)) {
+					return l;
+				}
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Возвращает TRUE, если нода "inline"
+	 *
+	 * @param  DOMElement n  нода
+	 * @return bool
+	 **/
+	this.isInline = function(n) {
+		if (n.nodeType == 3) {
+			return true;
+		} else if (n.nodeType == 1) {
+			n = $(n);
+			var d = n.css('display');
+			var f = n.css('float');
+			return d == 'inline' || d == 'inline-block' || f == 'left' || f == 'right';
+		}
+		return true;
+	}
+
+
+	/********************************************************/
+	/*                  Поиск элементов                     */
+	/********************************************************/
+
+	this.is = function(n, f) {
+		if (n && n.nodeName) {
+			if (typeof(f) == 'string') {
+				f = this.regExp[f]||/.?/;
+			}
+			if (f instanceof RegExp && n.nodeName) {
+				return f.test(n.nodeName);
+			} else if (typeof(f) == 'function') {
+				return f(n);
+			}
+		}
+
+		return false;
+	}
+
+	/**
+	 * Вовращает элемент(ы) отвечающие условиям поиска
+	 *
+	 * @param  DOMElement||Array  n       нода
+	 * @param  RegExp||String     filter  фильтр условия поиска (RegExp или имя ключа this.regExp или *)
+	 * @return DOMElement||Array
+	 **/
+	this.filter = function(n, filter) {
+		var ret = [], i;
+		if (!n.push) {
+			return this.is(n, filter) ? n : null;
+		}
+		for (i=0; i < n.length; i++) {
+			if (this.is(n[i], filter)) {
+				ret.push(n[i]);
+			}
+		};
+		return ret;
+	}
+
+
+	/**
+	 * Вовращает массив родительских элементов, отвечающих условиям поиска
+	 *
+	 * @param  DOMElement      n  нода, родителей, которой ищем
+	 * @param  RegExp||String  filter   фильтр условия поиска (RegExp или имя ключа this.regExp или *)
+	 * @return Array
+	 **/
+	this.parents = function(n, filter) {
+		var ret = [];
+
+		while (n && (n = n.parentNode) && n.nodeName != 'BODY' && n.nodeName != 'HTML') {
+			if (this.is(n, filter)) {
+				ret.push(n);
+			}
+		}
+		return ret;
+	}
+
+	/**
+	 * Вовращает ближайший родительский эл-т, отвечающий условиям поиска
+	 *
+	 * @param  DOMElement     n  нода, родителя, которой ищем
+	 * @param  RegExp||String f   фильтр условия поиска (RegExp или имя ключа this.regExp или *)
+	 * @return DOMElement
+	 **/
+	this.parent = function(n, f) {
+		return this.parents(n, f)[0] || null;
+	}
+
+	/**
+	 * Вовращает или саму ноду или ее ближайшего родителя, если выполняются условия sf для самой ноды или pf для родителя
+	 *
+	 * @param  DOMElement     n  нода, родителя, которой ищем
+	 * @param  RegExp||String sf   фильтр условия для самой ноды
+	* @param  RegExp||String  pf   фильтр условия для родителя
+	 * @return DOMElement
+	 **/
+	this.selfOrParent = function(n, sf, pf) {
+		return this.is(n, sf) ? n : this.parent(n, pf||sf);
+	}
+
+	/**
+	 * Вовращает родительскую ноду - ссылку
+	 *
+	 * @param  Element n  нода
+	 * @return Element
+	 **/
+	this.selfOrParentLink = function(n) {
+		n = this.selfOrParent(n, /^A$/);
+		return n && n.href ? n : null;
+	}
+
+	/**
+	 * Вовращает TRUE, если нода -  anchor
+	 *
+	 * @param  Element n  нода
+	 * @return bool
+	 **/
+	this.selfOrParentAnchor = function(n) {
+		n = this.selfOrParent(n, /^A$/);
+		return n && !n.href && n.name ? n : null;
+	}
+
+	/**
+	 * Вовращает массив дочерних ссылок
+	 *
+	 * @param  DOMElement n  нода
+	 * @return Array
+	 **/
+	this.childLinks = function(n) {
+		var res = [];
+		$('a[href]', n).each(function() { res.push(this); });
+		return res;
+	}
+
+	this.selectionHas = function(f) {
+		var n = this.rte.selection.cloneContents(), i;
+		if (n && n.childNodes && n.childNodes.length) {
+			for (i=0; i < n.childNodes.length; i++) {
+				if (typeof(f) == 'function') {
+					if (f(n.childNodes[i])) {
+						return true;
+					}
+				} else if (n instanceof RegExp) {
+					if (f.test(n.childNodes[i].nodeName)) {
+						return true;
+					}
+				}
+			};
+		}
+
+		return false;
+	}
+	/********************************************************/
+	/*                    Изменения DOM                     */
+	/********************************************************/
+
+	/**
+	 * Оборачивает одну ноду другой
+	 *
+	 * @param  DOMElement n  оборачиваемая нода
+	 * @param  DOMElement w  нода обертка или имя тега
+	 * @return DOMElement
+	 **/
+	this.wrap = function(n, w) {
+		n = $.isArray(n) ? n : [n];
+		w = w.nodeName ? w : this.create(w);
+
+		if (n[0] && n[0].nodeType && n[0].parentNode) {
+			w = n[0].parentNode.insertBefore(w, n[0]);
+			$(n).each(function() {
+				if (this!=w) {
+					w.appendChild(this);
+				}
+			});
+		}
+
+		return w;
+	}
+
+	/**
+	 * Replace node with its contents
+	 *
+	 * @param  DOMElement n node
+	 * @return void
+	 **/
+	this.unwrap = function(n) {
+		while (n.firstChild) {
+			n.parentNode.insertBefore(n.firstChild, n);
+		}
+		n.parentNode.removeChild(n);
+	}
+
+	/**
+	 * Оборачивает все содержимое ноды
+	 *
+	 * @param  DOMElement n  оборачиваемая нода
+	 * @param  DOMElement w  нода обертка или имя тега
+	 * @return DOMElement
+	 **/
+	this.wrapContents = function(n, w) {
+		w = w.nodeName ? w : this.create(w);
+		for (var i=0; i < n.childNodes.length; i++) {
+			w.appendChild(n.childNodes[i]);
+		};
+		n.appendChild(w);
+		return w;
+	}
+
+	this.cleanNode = function(n) {
+
+		if (n.nodeType != 1) {
+			return;
+		}
+		if (/^(P|LI)$/.test(n.nodeName) && (l = this.findLastNotEmpty(n)) && l.nodeName == 'BR') {
+			$(l).remove();
+		}
+		$n = $(n);
+		$n.children().each(function() {
+			this.cleanNode(this);
+		});
+		if (n.nodeName != 'BODY' && !/^(TABLE|TR|TD)$/.test(n) && this.isEmpty(n)) {
+			return $n.remove();
+		}
+		if ($n.attr('style') === '') {
+			$n.removeAttr('style');
+		}
+		if (this.rte.browser.safari && $n.hasClass('Apple-span')) {
+			$n.removeClass('Apple-span');
+		}
+		if (n.nodeName == 'SPAN' && !$n.attr('style') && !$n.attr('class') && !$n.attr('id')) {
+			$n.replaceWith($n.html());
+		}
+	}
+
+	this.cleanChildNodes = function(n) {
+		var cmd = this.cleanNode;
+		$(n).children().each(function() { cmd(this); });
+	}
+
+	/********************************************************/
+	/*                       Таблицы                        */
+	/********************************************************/
+
+	this.tableMatrix = function(n) {
+		var mx = [];
+		if (n && n.nodeName == 'TABLE') {
+			var max = 0;
+			function _pos(r) {
+				for (var i=0; i<=max; i++) {
+					if (!mx[r][i]) {
+						return i;
+					}
+				};
+			}
+
+			$(n).find('tr').each(function(r) {
+				if (!$.isArray(mx[r])) {
+					mx[r] = [];
+				}
+
+				$(this).children('td,th').each(function() {
+					var w = parseInt($(this).attr('colspan')||1);
+					var h = parseInt($(this).attr('rowspan')||1);
+					var i = _pos(r);
+					for (var y=0; y<h; y++) {
+						for (var x=0; x<w; x++) {
+							var _y = r+y;
+							if (!$.isArray(mx[_y])) {
+								mx[_y] = [];
+							}
+							var d = x==0 && y==0 ? this : (y==0 ? x : "-");
+							mx[_y][i+x] = d;
+						}
+					};
+					max= Math.max(max, mx[r].length);
+				});
+			});
+		}
+		return mx;
+	}
+
+	this.indexesOfCell = function(n, tbm) {
+		for (var rnum=0; rnum < tbm.length; rnum++) {
+			for (var cnum=0; cnum < tbm[rnum].length; cnum++) {
+				if (tbm[rnum][cnum] == n) {
+					return [rnum, cnum];
+				}
+
+			};
+		};
+	}
+
+	this.fixTable = function(n) {
+		if (n && n.nodeName == 'TABLE') {
+			var tb = $(n);
+			//tb.find('tr:empty').remove();
+			var mx = this.tableMatrix(n);
+			var x  = 0;
+			$.each(mx, function() {
+				x = Math.max(x, this.length);
+			});
+			if (x==0) {
+				return tb.remove();
+			}
+			// for (var i=0; i<mx.length; i++) {
+			// 	this.rte.log(mx[i]);
+			// }
+
+			for (var r=0; r<mx.length; r++) {
+				var l = mx[r].length;
+				//this.rte.log(r+' : '+l)
+
+				if (l==0) {
+					//this.rte.log('remove: '+tb.find('tr').eq(r))
+					tb.find('tr').eq(r).remove();
+//					tb.find('tr').eq(r).append('<td>remove</td>')
+				} else if (l<x) {
+					var cnt = x-l;
+					var row = tb.find('tr').eq(r);
+					for (i=0; i<cnt; i++) {
+						row.append('<td>&nbsp;</td>');
+					}
+				}
+			}
+
+		}
+	}
+
+	this.tableColumn = function(n, ext, fix) {
+		n      = this.selfOrParent(n, /^TD|TH$/);
+		var tb = this.selfOrParent(n, /^TABLE$/);
+		ret    = [];
+		info   = {offset : [], delta : []};
+		if (n && tb) {
+			fix && this.fixTable(tb);
+			var mx = this.tableMatrix(tb);
+			var _s = false;
+			var x;
+			for (var r=0; r<mx.length; r++) {
+				for (var _x=0; _x<mx[r].length; _x++) {
+					if (mx[r][_x] == n) {
+						x = _x;
+						_s = true;
+						break;
+					}
+				}
+				if (_s) {
+					break;
+				}
+			}
+
+			// this.rte.log('matrix');
+			// for (var i=0; i<mx.length; i++) {
+			// 	this.rte.log(mx[i]);
+			// }
+			if (x>=0) {
+				for(var r=0; r<mx.length; r++) {
+					var tmp = mx[r][x]||null;
+					if (tmp) {
+						if (tmp.nodeName) {
+							ret.push(tmp);
+							if (ext) {
+								info.delta.push(0);
+								info.offset.push(x);
+							}
+						} else {
+							var d = parseInt(tmp);
+							if (!isNaN(d) && mx[r][x-d] && mx[r][x-d].nodeName) {
+								ret.push(mx[r][x-d]);
+								if (ext) {
+									info.delta.push(d);
+									info.offset.push(x);
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		return !ext ? ret : {column : ret, info : info};
+	}
+}
+
+})(jQuery);
+(function($) {
+	/**
+	 * @class Filter - clean editor content
+	 * @param elRTE editor instance
+	 * @author Dmitry (dio) Levashov, dio@std42.ru
+	 */
+	elRTE.prototype.filter = function(rte) {
+		var self = this,
+			n = $('<span/>').addClass('elrtetesturl').appendTo(document.body)[0];
+		// media replacement image base url
+		this.url = (typeof(n.currentStyle )!= "undefined" ? n.currentStyle['backgroundImage'] : document.defaultView.getComputedStyle(n, null)['backgroundImage']).replace(/^url\((['"]?)([\s\S]+\/)[\s\S]+\1\)$/i, "$2");
+		$(n).remove();
+
+		this.rte = rte;
+		// flag - return xhtml tags?
+		this.xhtml = /xhtml/i.test(rte.options.doctype);
+		// boolean attributes
+		this.boolAttrs = rte.utils.makeObject('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'.split(','));
+		// tag regexp
+		this.tagRegExp = /<(\/?)([\w:]+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*\/?>/g;
+		// opened tag regexp
+		this.openTagRegExp = /<([\w:]+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*\/?>/g;
+		// attributes regexp
+		this.attrRegExp = /(\w+)(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^\s]+))?/g;
+		// script tag regexp
+		this.scriptRegExp = /<script([^>]*)>([\s\S]*?)<\/script>/gi;
+		// style tag regexp
+		this.styleRegExp = /(<style([^>]*)>[\s\S]*?<\/style>)/gi;
+		// link tag regexp
+		this.linkRegExp = /(<link([^>]+)>)/gi;
+		// cdata regexp
+		this.cdataRegExp = /<!\[CDATA\[([\s\S]+)\]\]>/g;
+		// object tag regexp
+		this.objRegExp = /<object([^>]*)>([\s\S]*?)<\/object>/gi;
+		// embed tag regexp
+		this.embRegExp = /<(embed)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*>/gi;
+		// param tag regexp
+		this.paramRegExp = /<(param)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*>/gi;
+		this.vimeoRegExp = /<(iframe)\s+([^>]*src\s*=\s*"http:\/\/[^"]+vimeo\.com\/\w+[^>]*)>([\s\S]*?)<\/iframe>/gi;
+		// yandex maps regexp
+		this.yMapsRegExp = /<div\s+([^>]*id\s*=\s*('|")?YMapsID[^>]*)>/gi;
+		// google maps regexp
+		this.gMapsRegExp = /<iframe\s+([^>]*src\s*=\s*"http:\/\/maps\.google\.\w+[^>]*)>([\s\S]*?)<\/iframe>/gi;
+		// video hostings url regexp
+		this.videoHostRegExp = /^(http:\/\/[\w\.]*)?(youtube|vimeo|rutube).*/i;
+		// elrte services classes regexp
+		this.serviceClassRegExp = /<(\w+)([^>]*class\s*=\s*"[^>]*elrte-[^>]*)>\s*(<\/\1>)?/gi;
+		this.pagebreakRegExp = /<(\w+)([^>]*style\s*=\s*"[^>]*page-break[^>]*)>\s*(<\/\1>)?/gi;
+
+		this.pbRegExp = new RegExp('<!-- pagebreak -->', 'gi');
+		// allowed tags
+		this.allowTags = rte.options.allowTags.length ? rte.utils.makeObject(rte.options.allowTags) : null;
+		// denied tags
+		this.denyTags = rte.options.denyTags.length ? rte.utils.makeObject(rte.options.denyTags) : null;
+		// deny attributes
+		this.denyAttr = rte.options.denyAttr ? rte.utils.makeObject(rte.options.denyAttr) : null;
+		// deny attributes for pasted html
+		this.pasteDenyAttr = rte.options.pasteDenyAttr ? rte.utils.makeObject(rte.options.pasteDenyAttr) : null;
+		// font sizes to convert size attr into css property
+		this.fontSize = ['medium', 'xx-small', 'small', 'medium','large','x-large','xx-large' ];
+		// font families regexp to detect family by font name
+		this.fontFamily = {
+			'sans-serif' : /^(arial|tahoma|verdana)$/i,
+			'serif'      : /^(times|times new roman)$/i,
+			'monospace'  : /^courier$/i
+		}
+		// scripts storage
+		this.scripts = {};
+		// cached chains of rules
+		this._chains = {};
+
+		// cache chains
+		$.each(this.chains, function(n) {
+			self._chains[n] = [];
+			$.each(this, function(i, r) {
+				typeof(self.rules[r]) == 'function' && self._chains[n].push(self.rules[r]);
+			});
+		});
+
+		/**
+		 * filtering through required chain
+		 *
+		 * @param  String  chain name
+		 * @param  String  html-code
+		 * @return String
+		 **/
+		this.proccess = function(chain, html) {
+			// remove whitespace at the begin and end
+			html = $.trim(html).replace(/^\s*(&nbsp;)+/gi, '').replace(/(&nbsp;|<br[^>]*>)+\s*$/gi, '');
+			// pass html through chain
+			$.each(this._chains[chain]||[], function() {
+				html = this.call(self, html);
+			});
+			return html.replace(/\t/g, '  ').replace(/\r/g, '').replace(/\s*\n\s*\n+/g, "\n")+'  ';
+		}
+
+		/**
+		 * wrapper for "wysiwyg" chain filtering
+		 *
+		 * @param  String
+		 * @return String
+		 **/
+		this.wysiwyg = function(html) {
+			return this.proccess('wysiwyg', html);
+		}
+
+		/**
+		 * wrapper for "source" chain filtering
+		 *
+		 * @param  String
+		 * @return String
+		 **/
+		this.source = function(html) {
+			return this.proccess('source', html);
+		}
+
+		/**
+		 * wrapper for "source2source" chain filtering
+		 *
+		 * @param  String
+		 * @return String
+		 **/
+		this.source2source = function(html) {
+			return this.proccess('source2source', html);
+		}
+
+		/**
+		 * wrapper for "wysiwyg2wysiwyg" chain filtering
+		 *
+		 * @param  String
+		 * @return String
+		 **/
+		this.wysiwyg2wysiwyg = function(html) {
+			return this.proccess('wysiwyg2wysiwyg', html);
+		}
+
+		/**
+		 * Parse attributes from string into object
+		 *
+		 * @param  String  string of attributes
+		 * @return Object
+		 **/
+		this.parseAttrs = function(s) {
+			var a = {},
+				b = this.boolAttrs,
+				m = s.match(this.attrRegExp),
+				t, n, v;
+
+			m && $.each(m, function(i, s) {
+				t = s.split('=');
+				n = $.trim(t[0]).toLowerCase();
+
+				if (t.length>2) {
+					t.shift();
+					v = t.join('=');
+				} else {
+					v = b[n] ||t[1]||'';
+				}
+				a[n] = $.trim(v).replace(/^('|")(.*)(\1)$/, "$2");
+			});
+
+			a.style = this.rte.utils.parseStyle(a.style);
+			a['class'] = this.rte.utils.parseClass(a['class']||'')
+			return a;
+		}
+
+		/**
+		 * Restore attributes string from hash
+		 *
+		 * @param  Object  attributes hash
+		 * @return String
+		 **/
+		this.serializeAttrs = function(a, c) {
+			var s = [], self = this;
+
+			$.each(a, function(n, v) {
+				if (n=='style') {
+					v = self.rte.utils.serializeStyle(v, c);
+				} else if (n=='class') {
+					v = self.rte.utils.serializeClass(v);
+				}
+				v && s.push(n+'="'+v+'"');
+			});
+			return s.join(' ');
+		}
+
+		/**
+		 * Remove/replace denied attributes/style properties
+		 *
+		 * @param  Object  attributes hash
+		 * @param  String  tag name to wich attrs belongs
+		 * @return Object
+		 **/
+		this.cleanAttrs = function(a, t) {
+			var self = this, ra = this.replaceAttrs;
+
+			// remove safari and mso classes
+			$.each(a['class'], function(n) {
+				/^(Apple-style-span|mso\w+)$/i.test(n) && delete a['class'][n];
+			});
+
+			function value(v) {
+				return v+(/\d$/.test(v) ? 'px' : '');
+			}
+
+			$.each(a, function(n, v) {
+				// replace required attrs with css
+				ra[n] && ra[n].call(self, a, t);
+				// remove/fix mso styles
+				if (n == 'style') {
+					$.each(v, function(sn, sv) {
+						switch (sn) {
+							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":
+								a.style[sn.replace(/^mso-|-alt$/g, '')] = value(sv);
+								delete a.style[sn];
+								break;
+
+							case "horiz-align":
+								a.style['text-align'] = sv;
+								delete a.style[sn];
+								break;
+
+							case "vert-align":
+								a.style['vertical-align'] = sv;
+								delete a.style[sn];
+								break;
+
+							case "font-color":
+							case "mso-foreground":
+								a.style.color = sv;
+								delete a.style[sn];
+							break;
+
+							case "mso-background":
+							case "mso-highlight":
+								a.style.background = sv;
+								delete a.style[sn];
+								break;
+
+							case "mso-default-height":
+								a.style['min-height'] = value(sv);
+								delete a.style[sn];
+								break;
+
+							case "mso-default-width":
+								a.style['min-width'] = value(sv);
+								delete a.style[sn];
+								break;
+
+							case "mso-padding-between-alt":
+								a.style['border-collapse'] = 'separate';
+								a.style['border-spacing'] = value(sv);
+								delete a.style[sn];
+								break;
+
+							case "text-line-through":
+								if (sv.match(/(single|double)/i)) {
+									a.style['text-decoration'] = 'line-through';
+								}
+								delete a.style[sn];
+								break;
+
+							case "mso-zero-height":
+								if (sv == 'yes') {
+									a.style.display = 'none';
+								}
+								delete a.style[sn];
+								break;
+
+							case 'font-weight':
+								if (sv == 700) {
+									a.style['font-weight'] = 'bold';
+								}
+								break;
+
+							default:
+								if (sn.match(/^(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)/)) {
+									delete a.style[sn]
+								}
+						}
+					});
+				}
+			});
+			return a;
+		}
+
+	}
+
+	// rules to replace tags
+	elRTE.prototype.filter.prototype.replaceTags = {
+		b         : { tag : 'strong' },
+		big       : { tag : 'span', style : {'font-size' : 'large'} },
+		center    : { tag : 'div',  style : {'text-align' : 'center'} },
+		i         : { tag : 'em' },
+		font      : { tag : 'span' },
+		nobr      : { tag : 'span', style : {'white-space' : 'nowrap'} },
+		menu      : { tag : 'ul' },
+		plaintext : { tag : 'pre' },
+		s         : { tag : 'strike' },
+		small     : { tag : 'span', style : {'font-size' : 'small'}},
+		u         : { tag : 'span', style : {'text-decoration' : 'underline'} },
+		xmp       : { tag : 'pre' }
+	}
+
+	// rules to replace attributes
+	elRTE.prototype.filter.prototype.replaceAttrs = {
+		align : function(a, n) {
+			switch (n) {
+				case 'img':
+					a.style[a.align.match(/(left|right)/) ? 'float' : 'vertical-align'] = a.align;
+					break;
+
+				case 'table':
+					if (a.align == 'center') {
+						a.style['margin-left'] = a.style['margin-right'] = 'auto';
+					} else {
+						a.style['float'] = a.align;
+					}
+					break;
+
+				default:
+					a.style['text-align'] = a.align;
+			}
+			delete a.align;
+		},
+		border : function(a) {
+			!a.style['border-width'] && (a.style['border-width'] = (parseInt(a.border)||1)+'px');
+			!a.style['border-style'] && (a.style['border-style'] = 'solid');
+			delete a.border;
+		},
+		bordercolor : function(a) {
+			!a.style['border-color'] && (a.style['border-color'] = a.bordercolor);
+			delete a.bordercolor;
+		},
+		background : function(a) {
+			!a.style['background-image'] && (a.style['background-image'] = 'url('+a.background+')');
+			delete a.background;
+		},
+		bgcolor : function(a) {
+			!a.style['background-color'] && (a.style['background-color'] = a.bgcolor);
+			delete a.bgcolor;
+		},
+		clear : function(a) {
+			a.style.clear = a.clear == 'all' ? 'both' : a.clear;
+			delete a.clear;
+		},
+		color : function(a) {
+			!a.style.color && (a.style.color = a.color);
+			delete a.color;
+		},
+		face : function(a) {
+			var f = a.face.toLowerCase();
+			$.each(this.fontFamily, function(n, r) {
+				if (f.match(r)) {
+					a.style['font-family'] = f+','+n;
+				}
+			});
+			delete a.face;
+		},
+		hspace : function(a, n) {
+			if (n == 'img') {
+				var v = parseInt(a.hspace)||0;
+				!a.style['margin-left'] && (a.style['margin-left'] = v+'px');
+				!a.style['margin-right'] && (a.style['margin-right'] = v+'px')
+				delete a.hspace;
+			}
+		},
+		size : function(a, n) {
+			if (n != 'input') {
+				a.style['font-size'] = this.fontSize[parseInt(a.size)||0]||'medium';
+				delete a.size;
+			}
+		},
+		valign : function(a) {
+			if (!a.style['vertical-align']) {
+				a.style['vertical-align'] = a.valign;
+			}
+			delete a.valign;
+		},
+		vspace : function(a, n) {
+			if (n == 'img') {
+				var v = parseInt(a.vspace)||0;
+				!a.style['margin-top'] && (a.style['margin-top'] = v+'px');
+				!a.style['margin-bottom'] && (a.style['margin-bottom'] = v+'px')
+				delete a.hspace;
+			}
+		}
+	}
+
+	// rules collection
+	elRTE.prototype.filter.prototype.rules = {
+		/**
+		 * If this.rte.options.allowTags is set - remove all except this ones
+		 *
+		 * @param String  html code
+		 * @return String
+		 **/
+		allowedTags : function(html) {
+			var a = this.allowTags;
+			return a ? html.replace(this.tagRegExp, function(t, c, n) { return a[n.toLowerCase()] ? t : ''; }) : html;
+		},
+		/**
+		 * If this.rte.options.denyTags is set - remove all deny tags
+		 *
+		 * @param String  html code
+		 * @return String
+		 **/
+		deniedTags : function(html) {
+			var d = this.denyTags;
+			return d ? html.replace(this.tagRegExp, function(t, c, n) { return d[n.toLowerCase()] ? '' : t }) : html;
+		},
+
+		/**
+		 * Replace not allowed tags/attributes
+		 *
+		 * @param String  html code
+		 * @return String
+		 **/
+		clean : function(html) {
+			var self = this,
+				rt   = this.replaceTags,
+				ra   = this.replaceAttrs,
+				da   = this.denyAttr,
+				n;
+
+			return html.replace(/<!DOCTYPE([\s\S]*)>/gi, '')
+				.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "<p><strong>$1</strong></p>")
+				.replace(/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s&nbsp;]*)<\/span>/gi, "$1")
+				.replace(/(<p[^>]*>\s*<\/p>|<p[^>]*\/>)/gi, '<br>')
+				.replace(this.tagRegExp, function(t, c, n, a) {
+					n = n.toLowerCase();
+
+					if (c) {
+						return '</'+(rt[n] ? rt[n].tag : n)+'>';
+					}
+
+					// create attributes hash and clean it
+					a = self.cleanAttrs(self.parseAttrs(a||''), n);
+
+					if (rt[n]) {
+						rt[n].style && $.extend(a.style, rt[n].style);
+						n = rt[n].tag;
+					}
+
+					da && $.each(a, function(na) {
+						if (da[na]) {
+							delete a[na];
+						}
+					});
+					a = self.serializeAttrs(a);
+					return '<'+n+(a?' ':'')+a+'>';
+				});
+		},
+
+		/**
+		 * Clean pasted html
+		 *
+		 * @param String  html code
+		 * @return String
+		 **/
+		cleanPaste : function(html) {
+			var self = this, d = this.pasteDenyAttr;
+
+			html = html
+				.replace(this.scriptRegExp, '')
+				.replace(this.styleRegExp, '')
+				.replace(this.linkRegExp, '')
+				.replace(this.cdataRegExp, '')
+				.replace(/\<\!--[\s\S]*?--\>/g, '');
+
+			if (this.rte.options.pasteOnlyText) {
+				html = html.replace(this.tagRegExp, function(t, c, n) {
+					return /br/i.test(n) || (c && /h[1-6]|p|ol|ul|li|div|blockquote|tr/i) ? '<br>' : '';
+				}).replace(/(&nbsp;|<br[^>]*>)+\s*$/gi, '');
+			} else if (d) {
+				html = html.replace(this.openTagRegExp, function(t, n, a) {
+					a = self.parseAttrs(a);
+					$.each(a, function(an) {
+						if (d[an]) {
+							delete a[an];
+						}
+					});
+					a = self.serializeAttrs(a, true);
+					return '<'+n+(a?' ':'')+a+'>';
+				});
+			}
+			return html;
+		},
+
+		/**
+		 * Replace script/style/media etc with placeholders
+		 *
+		 * @param String  html code
+		 * @return String
+		 **/
+		replace : function(html) {
+			var self = this, r = this.rte.options.replace||[], n;
+
+			// custom replaces if set
+			if (r.length) {
+				$.each(r, function(i, f) {
+					if (typeof(f) == 'function') {
+						html = f.call(self, html);
+					}
+				});
+			}
+
+			/**
+			 * Return media replacement - img html code
+			 *
+			 * @param Object  object to store in rel attr
+			 * @param String  media mime-type
+			 * @return String
+			 **/
+			function img(o, t) {
+				var s = src(),
+					c = s && self.videoHostRegExp.test(s) ? s.replace(self.videoHostRegExp, "$2") : t.replace(/^\w+\/(.+)/, "$1"),
+					w = parseInt((o.obj ? o.obj.width || o.obj.style.width : 0)||(o.embed ? o.embed.width || o.embed.style.width : 0))||150,
+					h = parseInt((o.obj ? o.obj.height || o.obj.style.height : 0)||(o.embed ? o.embed.height || o.embed.style.height : 0))||100,
+					id = 'media'+Math.random().toString().substring(2),
+					style ='',
+					l;
+
+				// find media src
+				function src() {
+					if (o.embed && o.embed.src) {
+						return o.embed.src;
+					}
+					if (o.params && o.params.length) {
+						l = o.params.length;
+						while (l--) {
+							if (o.params[l].name == 'src' || o.params[l].name == 'movie') {
+								return o.params[l].value;
+							}
+						}
+					}
+				}
+				if (o.obj && o.obj.style && o.obj.style['float']) {
+					style = ' style="float:'+o.obj.style['float']+'"';
+				}
+				self.scripts[id] = o;
+				return '<img src="'+self.url+'pixel.gif" class="elrte-media elrte-media-'+c+' elrte-protected" title="'+(s ? self.rte.utils.encode(s) : '')+'" rel="'+id+'" width="'+w+'" height="'+h+'"'+style+'>';
+			}
+
+			html = html
+				.replace(this.styleRegExp, "<!-- ELRTE_COMMENT$1 -->")
+				.replace(this.linkRegExp,  "<!-- ELRTE_COMMENT$1-->")
+				.replace(this.cdataRegExp, "<!--[CDATA[$1]]-->")
+				.replace(this.scriptRegExp, function(t, a, s) {
+					var id;
+					if (self.denyTags.script) {
+						return '';
+					}
+					id = 'script'+Math.random().toString().substring(2);
+					a = self.parseAttrs(a);
+					!a.type && (a.type = 'text/javascript');
+					self.scripts[id] = '<script '+self.serializeAttrs(a)+">"+s+"</script>";
+					return '<!-- ELRTE_SCRIPT:'+(id)+' -->';
+				})
+				.replace(this.yMapsRegExp, function(t, a) {
+					a = self.parseAttrs(a);
+					a['class']['elrte-yandex-maps'] = 'elrte-yandex-maps';
+					a['class']['elrte-protected'] = 'elrte-protected';
+					return '<div '+self.serializeAttrs(a)+'>';
+				})
+				.replace(this.gMapsRegExp, function(t, a) {
+					var id = 'gmaps'+Math.random().toString().substring(2), w, h;
+					a = self.parseAttrs(a);
+					w = parseInt(a.width||a.style.width||100);
+					h = parseInt(a.height||a.style.height||100);
+					self.scripts[id] = t;
+					return '<img src="'+self.url+'pixel.gif" class="elrte-google-maps elrte-protected" id="'+id+'" style="width:'+w+'px;height:'+h+'px">';
+				})
+				.replace(this.objRegExp, function(t, a, c) {
+					var m = c.match(self.embRegExp),
+						o = { obj : self.parseAttrs(a), embed : m && m.length ? self.parseAttrs(m[0].substring(7)) : null, params : [] },
+						i = self.rte.utils.mediaInfo(o.embed ? o.embed.type||'' : '', o.obj.classid||'');
+
+					if (i) {
+						if ((m = c.match(self.paramRegExp))) {
+							$.each(m, function(i, p) {
+								o.params.push(self.parseAttrs(p.substring(6)));
+							});
+						}
+						!o.obj.classid  && (o.obj.classid  = i.classid[0]);
+						!o.obj.codebase && (o.obj.codebase = i.codebase);
+						o.embed && !o.embed.type && (o.embed.type = i.type);
+						// ie bug with empty attrs
+						o.obj.width == '1' && delete o.obj.width;
+						o.obj.height == '1' && delete o.obj.height;
+						if (o.embed) {
+							o.embed.width == '1' && delete o.embed.width;
+							o.embed.height == '1' && delete o.embed.height;
+						}
+						return img(o, i.type);
+					}
+					return t;
+				})
+				.replace(this.embRegExp, function(t, n, a) {
+					var a = self.parseAttrs(a),
+						i = self.rte.utils.mediaInfo(a.type||'');
+					// ie bug with empty attrs
+					a.width == '1' && delete a.width;
+					a.height == '1' && delete a.height;
+					return i ? img({ embed : a }, i.type) : t;
+				})
+				.replace(this.vimeoRegExp, function(t, n, a) {
+					a = self.parseAttrs(a);
+					delete a.frameborder;
+					a.width == '1' && delete a.width;
+					a.height == '1' && delete a.height;
+					a.type = 'application/x-shockwave-flash';
+					return img({ embed : a }, 'application/x-shockwave-flash');
+				})
+				.replace(/<\/(embed|param)>/gi, '')
+				.replace(this.pbRegExp, function() {
+					return '<img src="'+self.url+'pixel.gif" class="elrte-protected elrte-pagebreak">';
+				});
+
+
+			n = $('<div>'+html+'</div>');
+			// remove empty spans and merge nested spans
+			n.find('span:not([id]):not([class])').each(function() {
+				var t = $(this);
+
+				if (!t.attr('style')) {
+					t.children().length ? self.rte.dom.unwrap(this) : t.remove();
+				}
+			}).end().find('span span:only-child').each(function() {
+				var t   = $(this),
+					p   = t.parent().eq(0),
+					tid = t.attr('id'),
+					pid = p.attr('id'), id, s, c;
+
+				if (self.rte.dom.is(this, 'onlyChild') && (!tid || !pid)) {
+					c = $.trim(p.attr('class')+' '+t.attr('class'))
+					c && p.attr('class', c);
+					s = self.rte.utils.serializeStyle($.extend(self.rte.utils.parseStyle($(this).attr('style')||''), self.rte.utils.parseStyle($(p).attr('style')||'')));
+					s && p.attr('style', s);
+					id = tid||pid;
+					id && p.attr('id', id);
+					this.firstChild ? $(this.firstChild).unwrap() : t.remove();
+				}
+			});
+
+
+
+			if (!this.rte.options.allowTextNodes) {
+				// wrap inline nodes with p
+				var dom = this.rte.dom,
+					nodes = [],
+					w = [];
+
+				if ($.browser.msie) {
+					for (var i = 0; i<n[0].childNodes.length; i++) {
+						nodes.push(n[0].childNodes[i])
+					}
+				} else {
+					nodes = Array.prototype.slice.call(n[0].childNodes);
+				}
+
+
+				function wrap() {
+					if (w.length && dom.filter(w, 'notEmpty').length) {
+						dom.wrap(w, document.createElement('p'));
+					}
+					w = [];
+				}
+				$.each(nodes, function(i, n) {
+					if (dom.is(n, 'block')) {
+						wrap();
+					} else {
+						if (w.length && n.previousSibling != w[w.length-1]) {
+							wrap();
+						}
+						w.push(n);
+					}
+				});
+				wrap();
+			}
+
+			return n.html();
+		},
+		/**
+		 * Restore script/style/media etc from placeholders
+		 *
+		 * @param String  html code
+		 * @return String
+		 **/
+		restore : function(html) {
+			var self =this, r = this.rte.options.restore|[];
+
+			// custom restore if set
+			if (r.length) {
+				$.each(r, function(i, f) {
+					if (typeof(f) == 'function') {
+						html = f.call(self, html);
+					}
+				});
+			}
+
+			html = html
+				.replace(/\<\!--\[CDATA\[([\s\S]*?)\]\]--\>/gi, "<![CDATA[$1]]>")
+				.replace(/\<\!--\s*ELRTE_SCRIPT\:\s*(script\d+)\s*--\>/gi, function(t, n) {
+					if (self.scripts[n]) {
+						t = self.scripts[n];
+						delete self.scripts[n];
+					}
+					return t||'';
+				})
+				.replace(/\<\!-- ELRTE_COMMENT([\s\S]*?) --\>/gi, "$1")
+				.replace(this.serviceClassRegExp, function(t, n, a, e) {
+					var a = self.parseAttrs(a), j, o = '';
+					// alert(t)
+					if (a['class']['elrte-media']) {
+						// alert(a.rel)
+						// return ''
+						// j = a.rel ? JSON.parse(self.rte.utils.decode(a.rel)) : {};
+						j = self.scripts[a.rel]||{};
+						// alert(j)
+						// j = a.rel ? $.parseJSON(self.rte.utils.decode(a.rel)) : {};
+						j.params && $.each(j.params, function(i, p) {
+							o += '<param '+self.serializeAttrs(p)+">\n";
+						});
+						j.embed && (o+='<embed '+self.serializeAttrs(j.embed)+">");
+						j.obj && (o = '<object '+self.serializeAttrs(j.obj)+">\n"+o+"\n</object>\n");
+						return o||t;
+					} else if (a['class']['elrte-google-maps']) {
+						var t = '';
+						if (self.scripts[a.id]) {
+							t = self.scripts[a.id];
+							delete self.scripts[a.id]
+						}
+						return t;
+					} else if (a['class']['elrte-pagebreak']) {
+						return '<!-- pagebreak -->';
+					}
+					$.each(a['class'], function(n) {
+						/^elrte-\w+/i.test(n) && delete(a['class'][n]);
+					});
+					return '<'+n+' '+self.serializeAttrs(a)+'>'+(e||'');
+
+				});
+
+			return html;
+		},
+		/**
+		 * compact styles and move tags and attributes names in lower case(for ie&opera)
+		 *
+		 * @param String  html code
+		 * return String
+		 **/
+		compactStyles : function(html) {
+			var self = this;
+
+			return html.replace(this.tagRegExp, function(t, c, n, a) {
+				a = !c && a ? self.serializeAttrs(self.parseAttrs(a), true) : '';
+				return '<'+c+n.toLowerCase()+(a?' ':'')+a+'>';
+			});
+		},
+		/**
+		 * return xhtml tags
+		 *
+		 * @param String  html code
+		 * return String
+		 **/
+		xhtmlTags : function(html) {
+			return this.xhtml ? html.replace(/<(img|hr|br|embed|param|link)([^>]*\/*)>/gi, "<$1$2 />") : html;
+		}
+	}
+
+	/**
+	 * Chains configuration
+	 * Default chains
+	 * wysiwyg - proccess html from source for wysiwyg editor mode
+	 * source  - proccess html from wysiwyg for source editor mode
+	 * paste   - clean pasted html
+	 * wysiwyg2wysiwyg - ciclyc rule to clean html from wysiwyg for wysiwyg paste
+	 * source2source - ciclyc rule to clean html from source for source paste
+	 * deniedTags is in the end of chain to protect google maps iframe from removed
+	 **/
+	elRTE.prototype.filter.prototype.chains = {
+		wysiwyg         : ['clean','allowedTags', 'replace', 'deniedTags', 'compactStyles'],
+		source          : ['clean','allowedTags', 'restore', 'compactStyles', 'xhtmlTags'],
+		paste           : ['clean','allowedTags', 'cleanPaste', 'replace', 'deniedTags', 'compactStyles'],
+		wysiwyg2wysiwyg : ['clean','allowedTags', 'restore', 'replace', 'deniedTags', 'compactStyles'],
+		source2source   : ['clean','allowedTags', 'replace', 'deniedTags', 'restore', 'compactStyles', 'xhtmlTags']
+	}
+
+
+
+})(jQuery);
+(function($) {
+elRTE.prototype.history = function(rte) {
+	this.rte = rte;
+	this._prev = []
+	this._next = [];
+
+
+	this.add = function() {
+		if (this.rte.options.historyLength>0 && this._prev.length>= this.rte.options.historyLength) {
+			this._prev.slice(this.rte.options.historyLength);
+		}
+		var b = this.rte.selection.getBookmark();
+		this._prev.push([$(this.rte.doc.body).html(), b]);
+		this.rte.selection.moveToBookmark(b);
+		// this._prev.push($(this.rte.doc.body).html());
+		this._next = [];
+	}
+
+	this.back = function() {
+
+		if (this._prev.length) {
+			var b = this.rte.selection.getBookmark(),
+				data = this._prev.pop();
+			this._next.push([$(this.rte.doc.body).html(), b]);
+
+			$(this.rte.doc.body).html(data[0]);
+			this.rte.selection.moveToBookmark(data[1]);
+		}
+	}
+
+	this.fwd = function() {
+		if (this._next.length) {
+			var b = this.rte.selection.getBookmark(),
+				data = this._next.pop();
+			this._prev.push([$(this.rte.doc.body).html(), b]);
+
+			$(this.rte.doc.body).html(data[0]);
+			this.rte.selection.moveToBookmark(data[1]);
+		}
+	}
+
+	this.canBack = function() {
+		return this._prev.length;
+	}
+
+	this.canFwd = function() {
+		return this._next.length;
+	}
+
+}
+})(jQuery);/*
+ * elRTE configuration
+ *
+ * @param doctype         - doctype for editor iframe
+ * @param cssClass        - css class for editor
+ * @param cssFiles        - array of css files, witch will inlude in iframe
+ * @param height          - not used now (may be deleted in future)
+ * @param lang            - interface language (requires file in i18n dir)
+ * @param toolbar         - name of toolbar to load
+ * @param absoluteURLs    - convert files and images urls to absolute or not
+ * @param allowSource     - is source editing allowing
+ * @param stripWhiteSpace - strip лишние whitespaces/tabs or not
+ * @param styleWithCSS    - use style=... instead of strong etc.
+ * @param fmAllow         - allow using file manger (elFinder)
+ * @param fmOpen          - callback for open file manager
+ * @param buttons         - object with pairs of buttons classes names and titles (when create new button, you have to add iys name here)
+ * @param panels          - named groups of buttons
+ * @param panelNames      - title of panels (required for one planned feature)
+ * @param toolbars        - named redy to use toolbals (you may combine your own toolbar)
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * Copyright: Studio 42, http://www.std42.ru
+ */
+(function($) {
+elRTE.prototype.options   = {
+	doctype         : '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',
+	cssClass        : 'el-rte',
+	cssfiles        : [],
+	height          : null,
+	resizable       : true,
+	lang            : 'en',
+	toolbar         : 'normal',
+	absoluteURLs    : true,
+	allowSource     : true,
+	stripWhiteSpace : true,
+	styleWithCSS    : false,
+	fmAllow         : true,
+	fmOpen          : null,
+	/* if set all other tag will be removed */
+	allowTags : [],
+	/* if set this tags will be removed */
+	denyTags : ['applet', 'base', 'basefont', 'bgsound', 'blink', 'body', 'col', 'colgroup', 'iframe', 'isindex', 'frameset', 'html', 'head', 'meta', 'marquee', 'noframes', 'noembed', 'o:p', 'title', 'xml'],
+	denyAttr : [],
+	/* on paste event this attributes will removed from pasted html */
+	pasteDenyAttr : ['id', 'name', 'class', 'style', 'language', 'onclick', 'ondblclick', 'onhover', 'onkeup', 'onkeydown', 'onkeypress'],
+	/* If false - all text nodes will be wrapped by paragraph tag */
+	allowTextNodes : false,
+	/* allow browser specific styles like -moz|-webkit|-o */
+	allowBrowsersSpecStyles : false,
+	/* allow paste content into editor */
+	allowPaste : true,
+	/* if true - only text will be pasted (not in ie) */
+	pasteOnlyText : false,
+	/* user replacement rules */
+	replace : [],
+	/* user restore rules */
+	restore : [],
+	pagebreak : '<div style="page-break-after: always;"></div>', //'<!-- pagebreak -->',
+	buttons         : {
+		'save'                : 'Save',
+		'copy'                : 'Copy',
+		'cut'                 : 'Cut',
+		'css'                 : 'Css style and class',
+		'paste'               : 'Paste',
+		'pastetext'           : 'Paste only text',
+		'pasteformattext'     : 'Paste formatted text',
+		'removeformat'        : 'Clean format',
+		'undo'                : 'Undo last action',
+		'redo'                : 'Redo previous action',
+		'bold'                : 'Bold',
+		'italic'              : 'Italic',
+		'underline'           : 'Underline',
+		'strikethrough'       : 'Strikethrough',
+		'superscript'         : 'Superscript',
+		'subscript'           : 'Subscript',
+		'justifyleft'         : 'Align left',
+		'justifyright'        : 'Ailgn right',
+		'justifycenter'       : 'Align center',
+		'justifyfull'         : 'Align full',
+		'indent'              : 'Indent',
+		'outdent'             : 'Outdent',
+		'rtl' : 'Right to left',
+		'ltr' : 'Left to right',
+		'forecolor'           : 'Font color',
+		'hilitecolor'         : 'Background color',
+		'formatblock'         : 'Format',
+		'fontsize'            : 'Font size',
+		'fontname'            : 'Font',
+		'insertorderedlist'   : 'Ordered list',
+		'insertunorderedlist' : 'Unordered list',
+		'horizontalrule'      : 'Horizontal rule',
+		'blockquote'          : 'Blockquote',
+		'div'                 : 'Block element (DIV)',
+		'link'                : 'Link',
+		'unlink'              : 'Delete link',
+		'anchor'              : 'Bookmark',
+		'image'               : 'Image',
+		'pagebreak'           : 'Page break',
+		'smiley'              : 'Smiley',
+		'flash'               : 'Flash',
+		'table'               : 'Table',
+		'tablerm'             : 'Delete table',
+		'tableprops'          : 'Table properties',
+		'tbcellprops'         : 'Table cell properties',
+		'tbrowbefore'         : 'Insert row before',
+		'tbrowafter'          : 'Insert row after',
+		'tbrowrm'             : 'Delete row',
+		'tbcolbefore'         : 'Insert column before',
+		'tbcolafter'          : 'Insert column after',
+		'tbcolrm'             : 'Delete column',
+		'tbcellsmerge'        : 'Merge table cells',
+		'tbcellsplit'         : 'Split table cell',
+		'docstructure'        : 'Toggle display document structure',
+		'elfinder'            : 'Open file manager',
+		'fullscreen'          : 'Toggle full screen mode',
+		'nbsp'                : 'Non breakable space',
+		'stopfloat'           : 'Stop element floating',
+		'about'               : 'About this software'
+	},
+	panels      : {
+		save       : ['save'],
+		copypaste  : ['copy', 'cut', 'paste', 'pastetext', 'pasteformattext', 'removeformat', 'docstructure'],
+		undoredo   : ['undo', 'redo'],
+		style      : ['bold', 'italic', 'underline', 'strikethrough', 'subscript', 'superscript'],
+		colors     : ['forecolor', 'hilitecolor'],
+		alignment  : ['justifyleft', 'justifycenter', 'justifyright', 'justifyfull'],
+		indent     : ['outdent', 'indent'],
+		format     : ['formatblock', 'fontsize', 'fontname'],
+		lists      : ['insertorderedlist', 'insertunorderedlist'],
+		elements   : ['horizontalrule', 'blockquote', 'div', 'stopfloat', 'css', 'nbsp', 'smiley', 'pagebreak'],
+		direction  : ['ltr', 'rtl'],
+		links      : ['link', 'unlink', 'anchor'],
+		images     : ['image'],
+		media      : ['image', 'flash'],
+		tables     : ['table', 'tableprops', 'tablerm',  'tbrowbefore', 'tbrowafter', 'tbrowrm', 'tbcolbefore', 'tbcolafter', 'tbcolrm', 'tbcellprops', 'tbcellsmerge', 'tbcellsplit'],
+		elfinder   : ['elfinder'],
+		fullscreen : ['fullscreen', 'about']
+	},
+	toolbars    : {
+		tiny     : ['style'],
+		compact  : ['save', 'undoredo', 'style', 'alignment', 'lists', 'links', 'fullscreen'],
+		normal   : ['save', 'copypaste', 'undoredo', 'style', 'alignment', 'colors', 'indent', 'lists', 'links', 'elements', 'images', 'fullscreen'],
+		complete : ['save', 'copypaste', 'undoredo', 'style', 'alignment', 'colors', 'format', 'indent', 'lists', 'links', 'elements', 'media', 'fullscreen'],
+		maxi     : ['save', 'copypaste', 'undoredo', 'elfinder', 'style', 'alignment', 'direction', 'colors', 'format', 'indent', 'lists', 'links', 'elements', 'media', 'tables', 'fullscreen'],
+		eldorado : ['save', 'copypaste', 'elfinder', 'undoredo', 'style', 'alignment', 'colors', 'format', 'indent', 'lists', 'links', 'elements', 'media', 'tables', 'fullscreen']
+
+	},
+	panelNames : {
+		save      : 'Save',
+		copypaste : 'Copy/Pase',
+		undoredo  : 'Undo/Redo',
+		style     : 'Text styles',
+		colors    : 'Colors',
+		alignment : 'Alignment',
+		indent    : 'Indent/Outdent',
+		format    : 'Text format',
+		lists     : 'Lists',
+		elements  : 'Misc elements',
+		direction : 'Script direction',
+		links     : 'Links',
+		images    : 'Images',
+		media     : 'Media',
+		tables    : 'Tables',
+		elfinder  : 'File manager (elFinder)'
+	}
+};
+})(jQuery);
+/**
+ * @class selection  - elRTE utils for working with text selection
+ *
+ * @param  elRTE  rte  объект-редактор
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ **/
+(function($) {
+elRTE.prototype.selection = function(rte) {
+	this.rte      = rte;
+	var self      = this;
+	this.w3cRange = null;
+	var start, end, node, bm;
+
+	$(this.rte.doc)
+		.keyup(function(e) {
+			if (e.ctrlKey || e.metaKey || (e.keyCode >= 8 && e.keyCode <= 13) || (e.keyCode>=32 && e.keyCode<= 40) || e.keyCode == 46 || (e.keyCode >=96 && e.keyCode <= 111)) {
+				self.cleanCache();
+			}
+		})
+		.mousedown(function(e) {
+			// self.rte.log(e)
+			if (e.target.nodeName == 'HTML') {
+				start = self.rte.doc.body;
+			} else {
+				start = e.target;
+			}
+			end   = node = null;
+		})
+		.mouseup(function(e) {
+			if (e.target.nodeName == 'HTML') {
+				end = self.rte.doc.body;
+			} else {
+				end = e.target;
+			}
+			end  = e.target;
+			node = null;
+		}).click();
+
+	/**
+	 * возвращает selection
+	 *
+	 * @return  Selection
+	 **/
+	function selection() {
+		return self.rte.window.getSelection ? self.rte.window.getSelection() : self.rte.window.document.selection;
+	}
+
+	/**
+	 * Вспомогательная функция
+	 * Возвращает самого верхнего родителя, отвечающего условию - текущая нода - его единственная непустая дочерняя нода
+	 *
+	 * @param   DOMElement  n нода, для которой ищем родителя
+	 * @param   DOMElement  p если задана - нода, выше которой не поднимаемся
+	 * @param   String      s строна поиска (left||right||null)
+	 * @return  DOMElement
+	 **/
+	function realSelected(n, p, s) {
+		while (n.nodeName != 'BODY' && n.parentNode && n.parentNode.nodeName != 'BODY' && (p ? n!== p && n.parentNode != p : 1) && ((s=='left' && self.rte.dom.isFirstNotEmpty(n)) || (s=='right' && self.rte.dom.isLastNotEmpty(n)) || (self.rte.dom.isFirstNotEmpty(n) && self.rte.dom.isLastNotEmpty(n))) ) {
+			n = n.parentNode;
+		}
+		return n;
+	}
+
+	/**
+	 * Возвращает TRUE, если выделение "схлопнуто"
+	 *
+	 * @return  bool
+	 **/
+	this.collapsed = function() {
+		return this.getRangeAt().isCollapsed();
+	}
+
+	/**
+	 * "Схлопывает" выделение
+	 *
+	 * @param   bool  toStart  схлопнуть к начальной точке
+	 * @return  void
+	 **/
+	this.collapse = function(st) {
+		var s = selection(),
+			r = this.getRangeAt();
+		r.collapse(st?true:false);
+		if (!$.browser.msie) {
+			s.removeAllRanges();
+			s.addRange(r);
+
+		}
+		return this;
+	}
+
+	/**
+	 * Возвращает TextRange
+	 * Для нормальных браузеров - нативный range
+	 * для "самизнаетечего" - эмуляцию w3c range
+	 *
+	 * @return  range|w3cRange
+	 **/
+	this.getRangeAt = function(updateW3cRange) {
+		if (this.rte.browser.msie) {
+			if (!this.w3cRange) {
+				this.w3cRange = new this.rte.w3cRange(this.rte);
+			}
+			updateW3cRange && this.w3cRange.update();
+			return this.w3cRange;
+		}
+
+		var s = selection();
+		var r = s.rangeCount > 0 ? s.getRangeAt(0) : this.rte.doc.createRange();
+		r.getStart = function() {
+			return this.startContainer.nodeType==1
+				? this.startContainer.childNodes[Math.min(this.startOffset, this.startContainer.childNodes.length-1)]
+				: this.startContainer;
+		}
+
+		r.getEnd = function() {
+			return this.endContainer.nodeType==1
+				? this.endContainer.childNodes[ Math.min(this.startOffset == this.endOffset ? this.endOffset : this.endOffset-1, this.endContainer.childNodes.length-1)]
+				: this.endContainer;
+		}
+		r.isCollapsed = function() {
+			return this.collapsed;
+		}
+		return r;
+	}
+
+	this.saveIERange = function() {
+		if ($.browser.msie) {
+			bm = this.getRangeAt().getBookmark();
+		}
+	}
+
+	this.restoreIERange = function() {
+		$.browser.msie && bm && this.getRangeAt().moveToBookmark(bm);
+	}
+
+	this.cloneContents = function() {
+		var n = this.rte.dom.create('div'), r, c, i;
+		if ($.browser.msie) {
+			try {
+				r = this.rte.window.document.selection.createRange();
+			} catch(e) {
+				r = this.rte.doc.body.createTextRange();
+			}
+			$(n).html(r.htmlText);
+		} else {
+			c = this.getRangeAt().cloneContents();
+			for (i=0; i<c.childNodes.length; i++) {
+				n.appendChild(c.childNodes[i].cloneNode(true));
+			}
+		}
+		return n;
+	}
+
+	/**
+	 * Выделяет ноды
+	 *
+	 * @param   DOMNode  s  нода начала выделения
+	 * @param   DOMNode  e  нода конца выделения
+	 * @return  selection
+	 **/
+	this.select = function(s, e) {
+		e = e||s;
+
+		if (this.rte.browser.msie) {
+			var r  = this.rte.doc.body.createTextRange(),
+				r1 = r.duplicate(),
+				r2 = r.duplicate();
+
+			r1.moveToElementText(s);
+			r2.moveToElementText(e);
+			r.setEndPoint('StartToStart', r1);
+			r.setEndPoint('EndToEnd',     r2);
+			r.select();
+		} else {
+
+			var sel = selection(),
+				r = this.getRangeAt();
+			r.setStartBefore(s);
+			r.setEndAfter(e);
+			sel.removeAllRanges();
+			sel.addRange(r);
+		}
+		return this.cleanCache();
+	}
+
+	/**
+	 * Выделяет содержимое ноды
+	 *
+	 * @param   Element  n  нода
+	 * @return  selection
+	 **/
+	this.selectContents = function(n) {
+		var r = this.getRangeAt();
+		if (n && n.nodeType == 1) {
+			if (this.rte.browser.msie) {
+				r.range();
+				r.r.moveToElementText(n.parentNode);
+				r.r.select();
+			} else {
+				try {
+					r.selectNodeContents(n);
+				} catch (e) {
+					return this.rte.log('unable select node contents '+n);
+				}
+				var s = selection();
+				s.removeAllRanges();
+				s.addRange(r);
+			}
+		}
+		return this;
+	}
+
+	this.deleteContents = function() {
+		if (!$.browser.msie) {
+			this.getRangeAt().deleteContents();
+		}
+		return this;
+	}
+
+	/**
+	 * Вставляет ноду в текущее выделение
+	 *
+	 * @param   Element  n  нода
+	 * @return  selection
+	 **/
+	this.insertNode = function(n, collapse) {
+		if (collapse && !this.collapsed()) {
+			this.collapse();
+		}
+
+		if (this.rte.browser.msie) {
+			var html = n.nodeType == 3 ? n.nodeValue : $(this.rte.dom.create('span')).append($(n)).html();
+			 var r = this.getRangeAt();
+			r.insertNode(html);
+		} else {
+			var r = this.getRangeAt();
+			r.insertNode(n);
+			r.setStartAfter(n);
+			r.setEndAfter(n);
+			var s = selection();
+			s.removeAllRanges();
+			s.addRange(r);
+		}
+		return this.cleanCache();
+	}
+
+	/**
+	 * Вставляет html в текущее выделение
+	 *
+	 * @param   Element  n  нода
+	 * @return  selection
+	 **/
+	this.insertHtml = function(html, collapse) {
+		if (collapse && !this.collapsed()) {
+			this.collapse();
+		}
+
+		if (this.rte.browser.msie) {
+			this.getRangeAt().range().pasteHTML(html);
+		} else {
+			var n = $(this.rte.dom.create('span')).html(html||'').get(0);
+			this.insertNode(n);
+			$(n).replaceWith($(n).html());
+		}
+		return this.cleanCache();
+	}
+
+	/**
+	 * Вставляет ноду в текущее выделение
+	 *
+	 * @param   Element  n  нода
+	 * @return  selection
+	 **/
+	this.insertText = function(text, collapse) {
+		var n = this.rte.doc.createTextNode(text);
+		return this.insertHtml(n.nodeValue);
+	}
+
+	this.getBookmark = function() {
+		this.rte.window.focus();
+		var r, r1, r2, _s, _e,
+			s = this.rte.dom.createBookmark(),
+			e = this.rte.dom.createBookmark();
+
+
+
+		if ($.browser.msie) {
+			try {
+				r = this.rte.window.document.selection.createRange();
+			} catch(e) {
+				r = this.rte.doc.body.createTextRange();
+			}
+
+			if (r.item) {
+				var n = r.item(0);
+				r = this.rte.doc.body.createTextRange();
+				r.moveToElementText(n);
+			}
+
+			r1 = r.duplicate();
+			r2 = r.duplicate();
+			_s = this.rte.dom.create('span');
+			_e = this.rte.dom.create('span');
+
+			_s.appendChild(s);
+			_e.appendChild(e);
+
+			r1.collapse(true);
+			r1.pasteHTML(_s.innerHTML);
+			r2.collapse(false);
+			r2.pasteHTML(_e.innerHTML);
+		} else {
+				var sel = selection();
+				var r = sel.rangeCount > 0 ? sel.getRangeAt(0) : this.rte.doc.createRange();
+
+			// r  = this.getRangeAt();
+			r1 = r.cloneRange();
+			r2 = r.cloneRange();
+
+			// this.insertNode(this.rte.dom.create('hr'))
+			// return
+			r2.collapse(false);
+			r2.insertNode(e);
+			r1.collapse(true);
+			r1.insertNode(s);
+			this.select(s, e);
+		}
+
+		return [s.id, e.id];
+	}
+
+	this.moveToBookmark = function(b) {
+		this.rte.window.focus();
+
+		if (b && b.length==2) {
+			var s = this.rte.doc.getElementById(b[0]),
+				e = this.rte.doc.getElementById(b[1]),
+				sel, r;
+			if (s && e) {
+				this.select(s, e);
+				if (this.rte.dom.next(s) == e) {
+					this.collapse(true);
+				}
+				if (!$.browser.msie) {
+					sel = selection();
+					r = sel.rangeCount > 0 ? sel.getRangeAt(0) : this.rte.doc.createRange();
+					sel.removeAllRanges();
+					sel.addRange(r);
+				}
+
+				s.parentNode.removeChild(s);
+				e.parentNode.removeChild(e);
+			}
+		}
+		return this;
+	}
+
+	this.removeBookmark = function(b) {
+		this.rte.window.focus();
+		if (b.length==2) {
+			var s = this.rte.doc.getElementById(b[0]),
+				e = this.rte.doc.getElementById(b[1]);
+			if (s && e) {
+				s.parentNode.removeChild(s);
+				e.parentNode.removeChild(e);
+			}
+		}
+	}
+
+	/**
+	 * Очищает кэш
+	 *
+	 * @return  selection
+	 **/
+	this.cleanCache = function() {
+		start = end = node = null;
+		return this;
+	}
+
+
+	/**
+	 * Возвращает ноду начала выделения
+	 *
+	 * @return  DOMElement
+	 **/
+	this.getStart = function() {
+		if (!start) {
+			var r = this.getRangeAt();
+			start = r.getStart();
+		}
+		return start;
+	}
+
+	/**
+	 * Возвращает ноду конца выделения
+	 *
+	 * @return  DOMElement
+	 **/
+	this.getEnd = function() {
+		if (!end) {
+			var r = this.getRangeAt();
+			end = r.getEnd();
+		}
+		return end;
+	}
+
+	/**
+	 * Возвращает выбраную ноду (общий контейнер всех выбранных нод)
+	 *
+	 * @return  Element
+	 **/
+	this.getNode = function() {
+		if (!node) {
+			node = this.rte.dom.findCommonAncestor(this.getStart(), this.getEnd());
+		}
+		return node;
+	}
+
+
+	/**
+	 * Возвращает массив выбранных нод
+	 *
+	 * @param   Object  o  параметры получения и обработки выбраных нод
+	 * @return  Array
+	 **/
+	this.selected = function(o) {
+		var opts = {
+			collapsed : false,  // вернуть выделение, даже если оно схлопнуто
+			blocks    : false,  // блочное выделение
+			filter    : false,  // фильтр результатов
+			wrap      : 'text', // что оборачиваем
+			tag       : 'span'  // во что оборачиваем
+		}
+		opts = $.extend({}, opts, o);
+
+		// блочное выделение - ищем блочную ноду, но не таблицу
+		if (opts.blocks) {
+			var n  = this.getNode(), _n = null;
+			if (_n = this.rte.dom.selfOrParent(n, 'selectionBlock') ) {
+				return [_n];
+			}
+		}
+
+		var sel    = this.selectedRaw(opts.collapsed, opts.blocks);
+		var ret    = [];
+		var buffer = [];
+		var ndx    = null;
+
+		// оборачиваем ноды в буффере
+		function wrap() {
+
+			function allowParagraph() {
+				for (var i=0; i < buffer.length; i++) {
+					if (buffer[i].nodeType == 1 && (self.rte.dom.selfOrParent(buffer[i], /^P$/) || $(buffer[i]).find('p').length>0)) {
+						return false;
+					}
+				};
+				return true;
+			}
+
+			if (buffer.length>0) {
+				var tag  = opts.tag == 'p' && !allowParagraph() ? 'div' : opts.tag;
+				var n    = self.rte.dom.wrap(buffer, tag);
+				ret[ndx] = n;
+				ndx      = null;
+				buffer   = [];
+			}
+		}
+
+		// добавляем ноды в буффер
+		function addToBuffer(n) {
+			if (n.nodeType == 1) {
+				if (/^(THEAD|TFOOT|TBODY|COL|COLGROUP|TR)$/.test(n.nodeName)) {
+					$(n).find('td,th').each(function() {
+						var tag = opts.tag == 'p' && $(this).find('p').length>0 ? 'div' : opts.tag;
+						var n = self.rte.dom.wrapContents(this, tag);
+						return ret.push(n);
+					})
+				} else if (/^(CAPTION|TD|TH|LI|DT|DD)$/.test(n.nodeName)) {
+					var tag = opts.tag == 'p' && $(n).find('p').length>0 ? 'div' : opts.tag;
+					var n = self.rte.dom.wrapContents(n, tag);
+					return ret.push(n);
+				}
+			}
+			var prev = buffer.length>0 ? buffer[buffer.length-1] : null;
+			if (prev && prev != self.rte.dom.prev(n)) {
+				wrap();
+			}
+			buffer.push(n);
+			if (ndx === null) {
+				ndx = ret.length;
+				ret.push('dummy'); // заглушка для оборачиваемых элементов
+			}
+		}
+
+		if (sel.nodes.length>0) {
+
+			for (var i=0; i < sel.nodes.length; i++) {
+				var n = sel.nodes[i];
+					// первую и посл текстовые ноды разрезаем, если необходимо
+					 if (n.nodeType == 3 && (i==0 || i == sel.nodes.length-1) && $.trim(n.nodeValue).length>0) {
+						if (i==0 && sel.so>0) {
+							n = n.splitText(sel.so);
+						}
+						if (i == sel.nodes.length-1 && sel.eo>0) {
+							n.splitText(i==0 && sel.so>0 ? sel.eo - sel.so : sel.eo);
+						}
+					}
+
+					switch (opts.wrap) {
+						// оборачиваем только текстовые ноды с br
+						case 'text':
+							if ((n.nodeType == 1 && n.nodeName == 'BR') || (n.nodeType == 3 && $.trim(n.nodeValue).length>0)) {
+								addToBuffer(n);
+							} else if (n.nodeType == 1) {
+								ret.push(n);
+							}
+							break;
+						// оборачиваем все инлайн элементы
+						case 'inline':
+							if (this.rte.dom.isInline(n)) {
+								addToBuffer(n);
+							} else if (n.nodeType == 1) {
+
+								ret.push(n);
+							}
+							break;
+						// оборачиваем все
+						case 'all':
+							if (n.nodeType == 1 || !this.rte.dom.isEmpty(n)) {
+								addToBuffer(n);
+							}
+							break;
+						// ничего не оборачиваем
+						default:
+							if (n.nodeType == 1 || !this.rte.dom.isEmpty(n)) {
+								ret.push(n);
+							}
+					}
+			};
+			wrap();
+		}
+
+		if (ret.length) {
+			this.rte.window.focus();
+
+			this.select(ret[0], ret[ret.length-1]);
+		}
+		return opts.filter ? this.rte.dom.filter(ret, opts.filter) : ret;
+	}
+
+	this.dump = function(ca, s, e, so, eo) {
+		var r = this.getRangeAt();
+		this.rte.log('commonAncestorContainer');
+		this.rte.log(ca || r.commonAncestorContainer);
+		// this.rte.log('commonAncestorContainer childs num')
+		// this/rte.log((ca||r.commonAncestorContainer).childNodes.length)
+		this.rte.log('startContainer');
+		this.rte.log(s || r.startContainer);
+		this.rte.log('startOffset: '+(so>=0 ? so : r.startOffset));
+		this.rte.log('endContainer');
+		this.rte.log(e||r.endContainer);
+		this.rte.log('endOffset: '+(eo>=0 ? eo : r.endOffset));
+	}
+
+	/**
+	 * Возвращает массив выбранных нод, как есть
+	 *
+	 * @param   bool           возвращать если выделение схлопнуто
+	 * @param   bool           "блочное" выделение (текстовые ноды включаются полностью, не зависимо от offset)
+	 * @return  Array
+	 **/
+	this.selectedRaw = function(collapsed, blocks) {
+		var res = {so : null, eo : null, nodes : []};
+		var r   = this.getRangeAt(true);
+		var ca  = r.commonAncestorContainer;
+		var s, e;  // start & end nodes
+		var sf  = false; // start node fully selected
+		var ef  = false; // end node fully selected
+
+		// возвращает true, если нода не текстовая или выделена полностью
+		function isFullySelected(n, s, e) {
+			if (n.nodeType == 3) {
+				e = e>=0 ? e : n.nodeValue.length;
+				return (s==0 && e==n.nodeValue.length) || $.trim(n.nodeValue).length == $.trim(n.nodeValue.substring(s, e)).length;
+			}
+			return true;
+		}
+
+		// возвращает true, если нода пустая или в ней не выделено ни одного непробельного символа
+		function isEmptySelected(n, s, e) {
+			if (n.nodeType == 1) {
+				return self.rte.dom.isEmpty(n);
+			} else if (n.nodeType == 3) {
+				return $.trim(n.nodeValue.substring(s||0, e>=0 ? e : n.nodeValue.length)).length == 0;
+			}
+			return true;
+		}
+
+
+		//this.dump()
+		// начальная нода
+		if (r.startContainer.nodeType == 1) {
+			if (r.startOffset<r.startContainer.childNodes.length) {
+				s = r.startContainer.childNodes[r.startOffset];
+				res.so = s.nodeType == 1 ? null : 0;
+			} else {
+				s = r.startContainer.childNodes[r.startOffset-1];
+				res.so = s.nodeType == 1 ? null : s.nodeValue.length;
+			}
+		} else {
+			s = r.startContainer;
+			res.so = r.startOffset;
+		}
+
+		// выделение схлопнуто
+		if (r.collapsed) {
+			if (collapsed) {
+				//  блочное выделение
+				if (blocks) {
+					s = realSelected(s);
+					if (!this.rte.dom.isEmpty(s) || (s = this.rte.dom.next(s))) {
+						res.nodes = [s];
+					}
+
+					// добавляем инлайн соседей
+					if (this.rte.dom.isInline(s)) {
+						res.nodes = this.rte.dom.toLineStart(s).concat(res.nodes, this.rte.dom.toLineEnd(s));
+					}
+
+					// offset для текстовых нод
+					if (res.nodes.length>0) {
+						res.so = res.nodes[0].nodeType == 1 ? null : 0;
+						res.eo = res.nodes[res.nodes.length-1].nodeType == 1 ? null : res.nodes[res.nodes.length-1].nodeValue.length;
+					}
+
+				} else if (!this.rte.dom.isEmpty(s)) {
+					res.nodes = [s];
+				}
+
+			}
+			return res;
+		}
+
+		// конечная нода
+		if (r.endContainer.nodeType == 1) {
+			e = r.endContainer.childNodes[r.endOffset-1];
+			res.eo = e.nodeType == 1 ? null : e.nodeValue.length;
+		} else {
+			e = r.endContainer;
+			res.eo = r.endOffset;
+		}
+		// this.rte.log('select 1')
+		//this.dump(ca, s, e, res.so, res.eo)
+
+		// начальная нода выделена полностью - поднимаемся наверх по левой стороне
+		if (s.nodeType == 1 || blocks || isFullySelected(s, res.so, s.nodeValue.length)) {
+//			this.rte.log('start text node is fully selected')
+			s = realSelected(s, ca, 'left');
+			sf = true;
+			res.so = s.nodeType == 1 ? null : 0;
+		}
+		// конечная нода выделена полностью - поднимаемся наверх по правой стороне
+		if (e.nodeType == 1 || blocks || isFullySelected(e, 0,  res.eo)) {
+//			this.rte.log('end text node is fully selected')
+			e = realSelected(e, ca, 'right');
+			ef = true;
+			res.eo = e.nodeType == 1 ? null : e.nodeValue.length;
+		}
+
+		// блочное выделение - если ноды не элементы - поднимаемся к родителю, но ниже контейнера
+		if (blocks) {
+			if (s.nodeType != 1 && s.parentNode != ca && s.parentNode.nodeName != 'BODY') {
+				s = s.parentNode;
+				res.so = null;
+			}
+			if (e.nodeType != 1 && e.parentNode != ca && e.parentNode.nodeName != 'BODY') {
+				e = e.parentNode;
+				res.eo = null;
+			}
+		}
+
+		// если контенер выделен полностью, поднимаемся наверх насколько можно
+		if (s.parentNode == e.parentNode && s.parentNode.nodeName != 'BODY' && (sf && this.rte.dom.isFirstNotEmpty(s)) && (ef && this.rte.dom.isLastNotEmpty(e))) {
+//			this.rte.log('common parent')
+			s = e = s.parentNode;
+			res.so = s.nodeType == 1 ? null : 0;
+			res.eo = e.nodeType == 1 ? null : e.nodeValue.length;
+		}
+		// начальная нода == конечной ноде
+		if (s == e) {
+//			this.rte.log('start is end')
+			if (!this.rte.dom.isEmpty(s)) {
+				res.nodes.push(s);
+			}
+			return res;
+		}
+		 // this.rte.log('start 2')
+		  //this.dump(ca, s, e, res.so, res.eo)
+
+		// находим начальную и конечную точки - ноды из иерархии родителей начальной и конечно ноды, у которых родитель - контейнер
+		var sp = s;
+		while (sp.nodeName != 'BODY' && sp.parentNode !== ca && sp.parentNode.nodeName != 'BODY') {
+			sp = sp.parentNode;
+		}
+		//this.rte.log(s.nodeName)
+		// this.rte.log('start point')
+		// this.rte.log(sp)
+
+		var ep = e;
+//		this.rte.log(ep)
+		while (ep.nodeName != 'BODY' && ep.parentNode !== ca && ep.parentNode.nodeName != 'BODY') {
+			// this.rte.log(ep)
+			ep = ep.parentNode;
+		}
+		// this.rte.log('end point')
+		// this.rte.log(ep)
+
+
+		//  если начальная нода не пустая - добавляем ее
+		if (!isEmptySelected(s, res.so, s.nodeType==3 ? s.nodeValue.length : null)) {
+			res.nodes.push(s);
+		}
+		// поднимаемся от начальной ноды до начальной точки
+		var n = s;
+		while (n !== sp) {
+			var _n = n;
+			while ((_n = this.rte.dom.next(_n))) {
+					res.nodes.push(_n);
+			}
+			n = n.parentNode;
+		}
+		// от начальной точки до конечной точки
+		n = sp;
+		while ((n = this.rte.dom.next(n)) && n!= ep ) {
+//			this.rte.log(n)
+			res.nodes.push(n);
+		}
+		// поднимаемся от конечной ноды до конечной точки, результат переворачиваем
+		var tmp = [];
+		n = e;
+		while (n !== ep) {
+			var _n = n;
+			while ((_n = this.rte.dom.prev(_n))) {
+				tmp.push(_n);
+			}
+			n = n.parentNode;
+		}
+		if (tmp.length) {
+			res.nodes = res.nodes.concat(tmp.reverse());
+		}
+		//  если конечная нода не пустая и != начальной - добавляем ее
+		if (!isEmptySelected(e, 0, e.nodeType==3 ? res.eo : null)) {
+			res.nodes.push(e);
+		}
+
+		if (blocks) {
+			// добавляем инлайн соседей слева
+			if (this.rte.dom.isInline(s)) {
+				res.nodes = this.rte.dom.toLineStart(s).concat(res.nodes);
+				res.so    = res.nodes[0].nodeType == 1 ? null : 0;
+			}
+			// добавляем инлайн соседей справа
+			if (this.rte.dom.isInline(e)) {
+				res.nodes = res.nodes.concat(this.rte.dom.toLineEnd(e));
+				res.eo    = res.nodes[res.nodes.length-1].nodeType == 1 ? null : res.nodes[res.nodes.length-1].nodeValue.length;
+			}
+		}
+
+		// все радуются! :)
+		return res;
+	}
+
+}
+
+})(jQuery);/**
+ * @class elRTE User interface controller
+ *
+ * @param  elRTE  rte объект-редактор
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @todo: this.domElem.removeClass('disabled') - move to ui.update;
+ * @todo: add dom and selection as button members
+ * Copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui = function(rte) {
+	this.rte      = rte;
+	this._buttons = [];
+	var self      = this,
+		tb        = this.rte.options.toolbars[rte.options.toolbar && rte.options.toolbars[rte.options.toolbar] ? rte.options.toolbar : 'normal'],
+		tbl       = tb.length,
+		p, pname, pl, n, c, b, i;
+
+	// add prototype to all buttons
+	for (i in this.buttons) {
+		if (this.buttons.hasOwnProperty(i) && i != 'button') {
+			this.buttons[i].prototype = this.buttons.button.prototype;
+		}
+	}
+
+	// create buttons and put on toolbar
+	while (tbl--) {
+		pname = tb[tbl];
+		p = $('<ul class="panel-'+pname+(tbl == 0 ? ' first' : '')+'" />').prependTo(this.rte.toolbar);
+		p.bind('mousedown', function(e) {
+			e.preventDefault();
+		})
+		pl = this.rte.options.panels[pname].length;
+		while (pl--) {
+			n = this.rte.options.panels[pname][pl];
+			c = this.buttons[n] || this.buttons.button;
+			this._buttons.push((b = new c(this.rte, n)));
+			p.prepend(b.domElem);
+		}
+	}
+
+	this.update();
+
+	this.disable = function() {
+		$.each(self._buttons, function() {
+			!this.active && this.domElem.addClass('disabled');
+		});
+	}
+
+}
+
+/**
+ * Обновляет кнопки - вызывает метод update() для каждой кнопки
+ *
+ * @return void
+ **/
+elRTE.prototype.ui.prototype.update = function(cleanCache) {
+	cleanCache && this.rte.selection.cleanCache();
+	var n    = this.rte.selection.getNode(),
+		p    = this.rte.dom.parents(n, '*'),
+		rtl = this.rte.rtl,
+		sep  = rtl ? ' &laquo; ' : ' &raquo; ',
+		path = '', name, i;
+
+	function _name(n) {
+		var name = n.nodeName.toLowerCase();
+		n = $(n)
+		if (name == 'img') {
+			if (n.hasClass('elrte-media')) {
+				name = 'media';
+			} else if (n.hasClass('elrte-google-maps')) {
+				name = 'google map';
+			} else if (n.hasClass('elrte-yandex-maps')) {
+				name = 'yandex map';
+			} else if (n.hasClass('elrte-pagebreak')) {
+				name = 'pagebreak';
+			}
+		}
+		return name;
+	}
+
+	if (n && n.nodeType == 1 && n.nodeName != 'BODY') {
+		p.unshift(n);
+	}
+
+	if (!rtl) {
+		p = p.reverse();
+	}
+
+	for (i=0; i < p.length; i++) {
+		path += (i>0 ? sep : '')+_name(p[i]);
+	}
+
+	this.rte.statusbar.html(path);
+	$.each(this._buttons, function() {
+		this.update();
+	});
+	this.rte.window.focus();
+}
+
+
+
+elRTE.prototype.ui.prototype.buttons = {
+
+	/**
+	 * @class кнопка на toolbar редактора
+	 * реализует поведение по умолчанию и является родителем для других кнопок
+	 *
+	 * @param  elRTE  rte   объект-редактор
+	 * @param  String name  название кнопки (команда исполняемая document.execCommand())
+	 **/
+	button : function(rte, name) {
+		var self     = this;
+		this.rte     = rte;
+		this.active = false;
+		this.name    = name;
+		this.val     = null;
+		this.domElem = $('<li style="-moz-user-select:-moz-none" class="'+name+' rounded-3" name="'+name+'" title="'+this.rte.i18n(this.rte.options.buttons[name] || name)+'" unselectable="on" />')
+			.hover(
+				function() { $(this).addClass('hover'); },
+				function() { $(this).removeClass('hover'); }
+			)
+			.click( function(e) {
+				e.stopPropagation();
+				e.preventDefault();
+				if (!$(this).hasClass('disabled')) {
+					self.command();
+				}
+				self.rte.window.focus();
+			});
+	}
+}
+
+/**
+ * Обработчик нажатия на кнопку на тулбаре. Выполнение команды или открытие окна|меню и тд
+ *
+ * @return void
+ **/
+elRTE.prototype.ui.prototype.buttons.button.prototype.command = function() {
+	this.rte.history.add();
+	try {
+		this.rte.doc.execCommand(this.name, false, this.val);
+	} catch(e) {
+		return this.rte.log('commands failed: '+this.name);
+	}
+
+	this.rte.ui.update(true);
+}
+
+/**
+ * Обновляет состояние кнопки
+ *
+ * @return void
+ **/
+elRTE.prototype.ui.prototype.buttons.button.prototype.update = function() {
+	try {
+		if (!this.rte.doc.queryCommandEnabled(this.name)) {
+			return this.domElem.addClass('disabled');
+		} else {
+			this.domElem.removeClass('disabled');
+		}
+	} catch (e) {
+		return;
+	}
+	try {
+		if (this.rte.doc.queryCommandState(this.name)) {
+			this.domElem.addClass('active');
+		} else {
+			this.domElem.removeClass('active');
+		}
+	} catch (e) { }
+}
+
+})(jQuery);/*
+ * Misc utils for elRTE
+ *
+ * @param Object rte - editor
+ * @todo Подумать, что из этого реально нужно и навести порядок. Возможно часть перенести в ellib
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * Copyright: Studio 42, http://www.std42.ru
+ */
+(function($) {
+elRTE.prototype.utils = function(rte) {
+	this.rte     = rte;
+	this.url     = null;
+	// domo arigato, Steave, http://blog.stevenlevithan.com/archives/parseuri
+	this.reg     = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
+	this.baseURL = '';
+	this.path    = '';
+	/**
+	 * entities map
+	 **/
+	this.entities = {'&' : '&amp;', '"' : '&quot;', '<' : '&lt;', '>' : '&gt;'};
+	/**
+	 * entities regexp
+	 **/
+	this.entitiesRegExp = /[<>&\"]/g;
+	/**
+	 * media info
+	 **/
+	this.media = [{
+			type     : 'application/x-shockwave-flash',
+			classid  : ['clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'],
+			codebase : 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'
+		}, {
+			type     : 'application/x-director',
+			classid  : ['clsid:166b1bca-3f9c-11cf-8075-444553540000'],
+			codebase : 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'
+		}, {
+			type     : 'application/x-mplayer2',
+			classid  : ['clsid:6bf52a52-394a-11d3-b153-00c04f79faa6', 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95', 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a'],
+			codebase : 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'
+		}, {
+			type     : 'video/quicktime',
+			classid  : ['clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b'],
+			codebase : 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'
+		}, {
+			type     : 'audio/x-pn-realaudio-plugin',
+			classid  : ['clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa'],
+			codebase : 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'
+		}];
+
+	// rgb color regexp
+	this.rgbRegExp = /\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*/i;
+	// regexp to detect color in border/background properties
+	this.colorsRegExp = /aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|rgb\s*\([^\)]+\)/i;
+	// web safe colors
+	this.colors = {
+		aqua    : '#00ffff',
+		black   : '#000000',
+		blue    : '#0000ff',
+		fuchsia : '#ff00ff',
+		gray    : '#808080',
+		green   : '#008000',
+		lime    : '#00ff00',
+		maroon  : '#800000',
+		navy    : '#000080',
+		olive   : '#808000',
+		orange  : '#ffa500',
+		purple  : '#800080',
+		red     : '#ff0000',
+		silver  : '#c0c0c0',
+		teal    : '#008080',
+		white   : '#fffffff',
+		yellow  : '#ffff00'
+	}
+
+	var self     = this;
+
+	this.rgb2hex = function(str) {
+		return this.color2Hex(''+str)
+	}
+
+	this.toPixels = function(num) {
+		var m = num.match(/([0-9]+\.?[0-9]*)\s*(px|pt|em|%)/);
+		if (m) {
+			num  = m[1];
+			unit = m[2];
+		}
+		if (num[0] == '.') {
+			num = '0'+num;
+		}
+		num = parseFloat(num);
+
+		if (isNaN(num)) {
+			return '';
+		}
+		var base = parseInt($(document.body).css('font-size')) || 16;
+		switch (unit) {
+			case 'em': return parseInt(num*base);
+			case 'pt': return parseInt(num*base/12);
+			case '%' : return parseInt(num*base/100);
+		}
+		return num;
+	}
+
+	// TODO: add parse rel path ../../etc
+	this.absoluteURL = function(url) {
+		!this.url && this._url();
+		url = $.trim(url);
+		if (!url) {
+			return '';
+		}
+		// ссылки на якоря не переводим в абс
+		if (url[0] == '#') {
+			return url;
+		}
+		var u = this.parseURL(url);
+
+		if (!u.host && !u.path && !u.anchor) {
+			//this.rte.log('Invalid URL: '+url)
+			return '';
+		}
+		if (!this.rte.options.absoluteURLs) {
+			return url;
+		}
+		if (u.protocol) {
+			//this.rte.log('url already absolute: '+url);
+			return url;
+		}
+		if (u.host && (u.host.indexOf('.')!=-1 || u.host == 'localhost')) {
+			//this.rte.log('no protocol');
+			return this.url.protocol+'://'+url;
+		}
+		if (url[0] == '/') {
+			url = this.baseURL+url;
+		} else {
+			if (url.indexOf('./') == 0) {
+				url = url.substring(2);
+			}
+			url = this.baseURL+this.path+url;
+		}
+		return url;
+	}
+
+	this.parseURL = function(url) {
+		var u   = url.match(this.reg);
+		var ret = {};
+		$.each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], function(i) {
+			ret[this] = u[i];
+		});
+		if (!ret.host.match(/[a-z0-9]/i)) {
+			ret.host = '';
+		}
+		return ret;
+	}
+
+	this.trimEventCallback = function(c) {
+		c = c ? c.toString() : '';
+		return $.trim(c.replace(/\r*\n/mg, '').replace(/^function\s*on[a-z]+\s*\(\s*event\s*\)\s*\{(.+)\}$/igm, '$1'));
+	}
+
+	this._url = function() {
+		this.url     = this.parseURL(window.location.href);
+		this.baseURL = this.url.protocol+'://'+(this.url.userInfo ?  parts.userInfo+'@' : '')+this.url.host+(this.url.port ? ':'+this.url.port : '');
+		this.path    = !this.url.file ? this.url.path : this.url.path.substring(0, this.url.path.length - this.url.file.length);
+	}
+
+
+	/**
+	 * Create object (map) from array
+	 *
+	 * @param   Array
+	 * @return  Object
+	 **/
+	this.makeObject = function(o) {
+		var m = {};
+		$.each(o, function(i, e) {
+			m[e] = e;
+		});
+		return m;
+	}
+
+	/**
+	 * Encode entities in string
+	 *
+	 * @param   String
+	 * @return  String
+	 **/
+	this.encode = function(s) {
+		var e = this.entities;
+		return (''+s).replace(this.entitiesRegExp, function(c) {
+			return e[c];
+		});
+	}
+
+	/**
+	 * Decode entities in string
+	 *
+	 * @param   String
+	 * @return  String
+	 **/
+	this.decode = function(s) {
+		return $('<div/>').html(s||'').text();
+	}
+
+	/**
+	 * Parse style string into object
+	 *
+	 * @param   String
+	 * @return  Object
+	 **/
+	this.parseStyle = function(s) {
+		var st = {}, a = this.rte.options.allowBrowsersSpecStyles, t, n, v;
+
+		if (typeof(s) == 'string' && s.length) {
+			$.each(s.replace(/&quot;/gi, "'").split(';'), function() {
+				t = this.toString().split(':');
+				if (t[0] && t[1]) {
+					n = $.trim(t[0]).toLowerCase();
+					v = $.trim(t[1]);
+					if (n == 'color' || n == 'background-color') {
+						v = v.toLowerCase();
+					}
+					if (n && v && (a || n.substring(0, 1) != '-')) {
+						st[n] = v;
+					}
+				}
+			});
+		}
+		return st;
+	}
+
+
+	/**
+	 * Compact some style properties and convert colors in hex
+	 *
+	 * @param   Object
+	 * @return  Object
+	 **/
+	this.compactStyle = function(s) {
+		var self = this;
+
+		if (s.border == 'medium none') {
+			delete s.border;
+		}
+
+		$.each(s, function(n, v) {
+			if (/color$/i.test(n)) {
+				s[n] = self.color2Hex(v);
+			} else if (/^(border|background)$/i.test(n)) {
+				s[n] = v.replace(self.colorsRegExp, function(m) {
+					return self.color2Hex(m);
+				});
+			}
+		});
+
+		if (s['border-width']) {
+			s.border = s['border-width']+' '+(s['border-style']||'solid')+' '+(s['border-color']||'#000');
+			delete s['border-width'];
+			delete s['border-style'];
+			delete s['border-color'];
+		}
+
+		if (s['background-image']) {
+			s.background = (s['background-color']+' ')||''+s['background-image']+' '+s['background-position']||'0 0'+' '+s['background-repeat']||'repeat';
+			delete s['background-image'];
+			delete['background-image'];
+			delete['background-position'];
+			delete['background-repeat'];
+		}
+
+		if (s['margin-top'] && s['margin-right'] && s['margin-bottom'] && s['margin-left']) {
+			s.margin = s['margin-top']+' '+s['margin-right']+' '+s['margin-bottom']+' '+s['margin-left'];
+			delete s['margin-top'];
+			delete s['margin-right'];
+			delete s['margin-bottom'];
+			delete s['margin-left'];
+		}
+
+		if (s['padding-top'] && s['padding-right'] && s['padding-bottom'] && s['padding-left']) {
+			s.padding = s['padding-top']+' '+s['padding-right']+' '+s['padding-bottom']+' '+s['padding-left'];
+			delete s['padding-top'];
+			delete s['padding-right'];
+			delete s['padding-bottom'];
+			delete s['padding-left'];
+		}
+
+		if (s['list-style-type'] || s['list-style-position'] || s['list-style-image']) {
+			s['list-style'] = $.trim(s['list-style-type']||' '+s['list-style-position']||''+s['list-style-image']||'');
+			delete s['list-style-type'];
+			delete s['list-style-position'];
+			delete s['list-style-image'];
+		}
+
+		return s;
+	}
+
+	/**
+	 * Serialize style object into string
+	 *
+	 * @param   Object  style map
+	 * @param   Boolean flag - compact style?
+	 * @return  String
+	 **/
+	this.serializeStyle = function(o, c) {
+		var s = [];
+		// c=true
+		$.each(c ? this.compactStyle(o) : o, function(n, v) {
+			v && s.push(n+':'+v);
+		});
+		return s.join(';');
+	}
+
+	/**
+	 * Parse class string into object
+	 *
+	 * @param   String
+	 * @return  Object
+	 **/
+	this.parseClass = function(c) {
+		c = $.trim(c);
+		// this.rte.log(c)
+		return c.length ? this.makeObject(c.split(/\s+/)) : {};
+		return c.length ? c.split(/\s+/) : [];
+	}
+
+	/**
+	 * Serialize class object into string
+	 *
+	 * @param   Object
+	 * @return  String
+	 **/
+	this.serializeClass = function(c) {
+		// return c.join(' ')
+		var s = [];
+		$.each(c, function(n) {
+			s.push(n);
+		});
+		return s.join(' ');
+	}
+
+	/**
+	 * Return required media type info
+	 *
+	 * @param   String  mimetype
+	 * @param   String  classid
+	 * @return  Object
+	 **/
+	this.mediaInfo = function(t, c) {
+		var l = this.media.length;
+
+		while (l--) {
+			if (t === this.media[l].type || (c && $.inArray(c, this.media[l].classid) != -1)) {
+				return this.media[l];
+			}
+		}
+	}
+
+	/**
+	 * Return color hex value
+	 *
+	 * @param   String   color name or rgb
+	 * @return  String
+	 **/
+	this.color2Hex = function(c) {
+		var m;
+
+		if (c.indexOf('#') === 0) {
+			return c;
+		}
+
+		c = c||'';
+		function hex(s) {
+			s = parseInt(s).toString(16);
+			return s.length > 1 ? s : '0' + s;
+		};
+
+		if (this.colors[c]) {
+			return this.colors[c];
+		}
+		if ((m = c.match(this.rgbRegExp))) {
+			return '#'+hex(m[1])+hex(m[2])+hex(m[3]);
+		}
+		return '';
+	}
+
+
+
+
+}
+
+})(jQuery);/**
+ * @class w3cRange  - w3c text range emulation for "strange" browsers
+ *
+ * @param  elRTE  rte  объект-редактор
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * Copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.w3cRange = function(rte) {
+	var self                     = this;
+	this.rte                     = rte;
+	this.r                       = null;
+	this.collapsed               = true;
+	this.startContainer          = null;
+	this.endContainer            = null;
+	this.startOffset             = 0;
+	this.endOffset               = 0;
+	this.commonAncestorContainer = null;
+
+	this.range = function() {
+		try {
+			this.r = this.rte.window.document.selection.createRange();
+		} catch(e) {
+			this.r = this.rte.doc.body.createTextRange();
+		}
+		return this.r;
+	}
+
+	this.insertNode = function(html) {
+		this.range();
+		self.r.collapse(false)
+		var r = self.r.duplicate();
+		r.pasteHTML(html);
+	}
+
+	this.getBookmark = function() {
+		this.range();
+		if (this.r.item) {
+			var n = this.r.item(0);
+			this.r = this.rte.doc.body.createTextRange();
+			this.r.moveToElementText(n);
+		}
+		return this.r.getBookmark();
+	}
+
+	this.moveToBookmark = function(bm) {
+		this.rte.window.focus();
+		this.range().moveToBookmark(bm);
+		this.r.select();
+	}
+
+	/**
+	 * Обновляет данные о выделенных нодах
+	 *
+	 * @return void
+	 **/
+	this.update = function() {
+
+		function _findPos(start) {
+			var marker = '\uFEFF';
+			var ndx = offset = 0;
+			var r = self.r.duplicate();
+			r.collapse(start);
+			var p = r.parentElement();
+			if (!p || p.nodeName == 'HTML') {
+				return {parent : self.rte.doc.body, ndx : ndx, offset : offset};
+			}
+
+			r.pasteHTML(marker);
+
+			childs = p.childNodes;
+			for (var i=0; i < childs.length; i++) {
+				var n = childs[i];
+				if (i>0 && (n.nodeType!==3 || childs[i-1].nodeType !==3)) {
+					ndx++;
+				}
+				if (n.nodeType !== 3) {
+					offset = 0;
+				} else {
+					var pos = n.nodeValue.indexOf(marker);
+					if (pos !== -1) {
+						offset += pos;
+						break;
+					}
+					offset += n.nodeValue.length;
+				}
+			};
+			r.moveStart('character', -1);
+			r.text = '';
+			return {parent : p, ndx : Math.min(ndx, p.childNodes.length-1), offset : offset};
+		}
+
+		this.range();
+		this.startContainer = this.endContainer = null;
+
+		if (this.r.item) {
+			this.collapsed = false;
+			var i = this.r.item(0);
+			this.setStart(i.parentNode, this.rte.dom.indexOf(i));
+			this.setEnd(i.parentNode, this.startOffset+1);
+		} else {
+			this.collapsed = this.r.boundingWidth == 0;
+			var start = _findPos(true);
+			var end   = _findPos(false);
+
+			start.parent.normalize();
+			end.parent.normalize();
+			start.ndx = Math.min(start.ndx, start.parent.childNodes.length-1);
+			end.ndx = Math.min(end.ndx, end.parent.childNodes.length-1);
+			if (start.parent.childNodes[start.ndx].nodeType && start.parent.childNodes[start.ndx].nodeType == 1) {
+				this.setStart(start.parent, start.ndx);
+			} else {
+				this.setStart(start.parent.childNodes[start.ndx], start.offset);
+			}
+			if (end.parent.childNodes[end.ndx].nodeType && end.parent.childNodes[end.ndx].nodeType == 1) {
+				this.setEnd(end.parent, end.ndx);
+			} else {
+				this.setEnd(end.parent.childNodes[end.ndx], end.offset);
+			}
+			// this.dump();
+			this.select();
+		}
+		return this;
+	}
+
+	this.isCollapsed = function() {
+		this.range();
+		this.collapsed = this.r.item ? false : this.r.boundingWidth == 0;
+		return this.collapsed;
+	}
+
+	/**
+	 * "Схлопывает" выделение
+	 *
+	 * @param  bool  toStart - схлопывать выделение к началу или к концу
+	 * @return void
+	 **/
+	this.collapse = function(toStart) {
+		this.range();
+		if (this.r.item) {
+			var n = this.r.item(0);
+			this.r = this.rte.doc.body.createTextRange();
+			this.r.moveToElementText(n);
+		}
+		this.r.collapse(toStart);
+		this.r.select();
+		this.collapsed = true;
+	}
+
+	this.getStart = function() {
+		this.range();
+		if (this.r.item) {
+			return this.r.item(0);
+		}
+		var r = this.r.duplicate();
+		r.collapse(true);
+		var s = r.parentElement();
+		return s && s.nodeName == 'BODY' ? s.firstChild : s;
+	}
+
+
+	this.getEnd = function() {
+		this.range();
+		if (this.r.item) {
+			return this.r.item(0);
+		}
+		var r = this.r.duplicate();
+		r.collapse(false);
+		var e = r.parentElement();
+		return e && e.nodeName == 'BODY' ? e.lastChild : e;
+	}
+
+
+	/**
+	 * Устанавливает начaло выделения на указаную ноду
+	 *
+	 * @param  Element  node    нода
+	 * @param  Number   offset  отступ от начала ноды
+	 * @return void
+	 **/
+	this.setStart = function(node, offset) {
+		this.startContainer = node;
+		this.startOffset    = offset;
+		if (this.endContainer) {
+			this.commonAncestorContainer = this.rte.dom.findCommonAncestor(this.startContainer, this.endContainer);
+		}
+	}
+
+	/**
+	 * Устанавливает конец выделения на указаную ноду
+	 *
+	 * @param  Element  node    нода
+	 * @param  Number   offset  отступ от конца ноды
+	 * @return void
+	 **/
+	this.setEnd = function(node, offset) {
+		this.endContainer = node;
+		this.endOffset    = offset;
+		if (this.startContainer) {
+			this.commonAncestorContainer = this.rte.dom.findCommonAncestor(this.startContainer, this.endContainer);
+		}
+	}
+
+	/**
+	 * Устанавливает начaло выделения перед указаной нодой
+	 *
+	 * @param  Element  node    нода
+	 * @return void
+	 **/
+	this.setStartBefore = function(n) {
+		if (n.parentNode) {
+			this.setStart(n.parentNode, this.rte.dom.indexOf(n));
+		}
+	}
+
+	/**
+	 * Устанавливает начaло выделения после указаной ноды
+	 *
+	 * @param  Element  node    нода
+	 * @return void
+	 **/
+	this.setStartAfter = function(n) {
+		if (n.parentNode) {
+			this.setStart(n.parentNode, this.rte.dom.indexOf(n)+1);
+		}
+	}
+
+	/**
+	 * Устанавливает конец выделения перед указаной нодой
+	 *
+	 * @param  Element  node    нода
+	 * @return void
+	 **/
+	this.setEndBefore = function(n) {
+		if (n.parentNode) {
+			this.setEnd(n.parentNode, this.rte.dom.indexOf(n));
+		}
+	}
+
+	/**
+	 * Устанавливает конец выделения после указаной ноды
+	 *
+	 * @param  Element  node    нода
+	 * @return void
+	 **/
+	this.setEndAfter = function(n) {
+		if (n.parentNode) {
+			this.setEnd(n.parentNode, this.rte.dom.indexOf(n)+1);
+		}
+	}
+
+	/**
+	 * Устанавливает новое выделение после изменений
+	 *
+	 * @return void
+	 **/
+	this.select = function() {
+		// thanks tinymice authors
+		function getPos(n, o) {
+			if (n.nodeType != 3) {
+				return -1;
+			}
+			var c   ='\uFEFF';
+			var val = n.nodeValue;
+			var r   = self.rte.doc.body.createTextRange();
+			n.nodeValue = val.substring(0, o) + c + val.substring(o);
+			r.moveToElementText(n.parentNode);
+			r.findText(c);
+			var p = Math.abs(r.moveStart('character', -0xFFFFF));
+			n.nodeValue = val;
+			return p;
+		};
+
+		this.r = this.rte.doc.body.createTextRange();
+		var so = this.startOffset;
+		var eo = this.endOffset;
+		var s = this.startContainer.nodeType == 1
+			? this.startContainer.childNodes[Math.min(so, this.startContainer.childNodes.length - 1)]
+			: this.startContainer;
+		var e = this.endContainer.nodeType == 1
+			? this.endContainer.childNodes[Math.min(so == eo ? eo : eo - 1, this.endContainer.childNodes.length - 1)]
+			: this.endContainer;
+
+		if (this.collapsed) {
+			if (s.nodeType == 3) {
+				var p = getPos(s, so);
+				this.r.move('character', p);
+			} else {
+				this.r.moveToElementText(s);
+				this.r.collapse(true);
+			}
+		} else {
+			var r  = this.rte.doc.body.createTextRange();
+			var sp = getPos(s, so);
+			var ep = getPos(e, eo);
+			if (s.nodeType == 3) {
+				this.r.move('character', sp);
+			} else {
+				this.r.moveToElementText(s);
+			}
+			if (e.nodeType == 3) {
+				r.move('character', ep);
+			} else {
+				r.moveToElementText(e);
+			}
+			this.r.setEndPoint('EndToEnd', r);
+		}
+
+		try {
+			this.r.select();
+		} catch(e) {
+
+		}
+		if (r) {
+			r = null;
+		}
+	}
+
+	this.dump = function() {
+		this.rte.log('collapsed: '+this.collapsed);
+		//this.rte.log('commonAncestorContainer: '+this.commonAncestorContainer.nodeName||'#text')
+		this.rte.log('startContainer: '+(this.startContainer ? this.startContainer.nodeName : 'non'));
+		this.rte.log('startOffset: '+this.startOffset);
+		this.rte.log('endContainer: '+(this.endContainer ? this.endContainer.nodeName : 'none'));
+		this.rte.log('endOffset: '+this.endOffset);
+	}
+
+}
+})(jQuery);
+(function($) {
+	elRTE.prototype.ui.prototype.buttons.about = function(rte, name)  {
+
+		this.constructor.prototype.constructor.call(this, rte, name);
+		this.active  = true;
+		this.command = function() {
+			var opts, d, txt;
+
+			opts = {
+				rtl : rte.rtl,
+				submit : function(e, d) {  d.close(); },
+				dialog : {
+					width : 560,
+					title : this.rte.i18n('About this software'),
+					buttons     : {
+						Ok : function() { $(this).dialog('destroy'); }
+					}
+				}
+			}
+
+			txt = '<div class="elrte-logo"></div><h3>'+this.rte.i18n('About elRTE')+'</h3><br clear="all"/>'
+				+'<div class="elrte-ver">'+this.rte.i18n('Version')+': '+this.rte.version+' ('+this.rte.build+')</div>'
+				+'<div class="elrte-ver">jQuery: '+$('<div/>').jquery+'</div>'
+				+'<div class="elrte-ver">jQueryUI: '+$.ui.version+'</div>'
+				+'<div class="elrte-ver">'+this.rte.i18n('Licence')+': BSD Licence</div>'
+				+'<p>'
+				+this.rte.i18n('elRTE is an open-source JavaScript based WYSIWYG HTML-editor.')+'<br/>'
+				+this.rte.i18n('Main goal of the editor - simplify work with text and formating (HTML) on sites, blogs, forums and other online services.')+'<br/>'
+				+this.rte.i18n('You can use it in any commercial or non-commercial projects.')
+				+'</p>'
+				+'<h4>'+this.rte.i18n('Authors')+'</h4>'
+				+'<table class="elrte-authors">'
+				+'<tr><td>Dmitry (dio) Levashov &lt;dio@std42.ru&gt;</td><td>'+this.rte.i18n('Chief developer')+'</td></tr>'
+				+'<tr><td>Troex Nevelin &lt;troex@fury.scancode.ru&gt;</td><td>'+this.rte.i18n('Developer, tech support')+'</td></tr>'
+				+'<tr><td>Valentin Razumnyh &lt;content@std42.ru&gt;</td><td>'+this.rte.i18n('Interface designer')+'</td></tr>'
+				+'<tr><td>Evgeny eSabbath &lt;sabbath.codemg@gmail.com&gt;</td><td>'+this.rte.i18n('Developer')+'</td></tr>'
+				+'<tr><td>Andrzej Borowicz &lt;eltre@borowicz.info&gt;</td><td>'+this.rte.i18n('Polish localization')+'</td></tr>'
+				+'<tr><td>Artem Vasiliev</td><td>'+this.rte.i18n('Ukranian localization')+'</td></tr>'
+				+'<tr><td>Francois Mazerolle &lt;fmaz008@gmail.com&gt;</td><td>'+this.rte.i18n('French localization')+'</td></tr>'
+				+'<tr><td>Kurt Aerts</td><td>'+this.rte.i18n('Dutch localization')+'</td></tr>'
+				+'<tr><td>Michal Marek &lt;fmich.marek@gmail.com&gt;</td><td>'+this.rte.i18n('Czech localization')+'</td></tr>'
+				+'<tr><td>Ricardo Obregón &lt;robregonm@gmail.com&gt;</td><td>'+this.rte.i18n('Spanish localization')+'</td></tr>'
+				+'<tr><td>Saleh Souzanchi &lt;saleh.souzanchi@gmail.com&gt;</td><td>'+this.rte.i18n('Persian (farsi) localization')+'</td></tr>'
+				+'<tr><td>Tawfek Daghistani &lt;tawfekov@gmail.com&gt;</td><td>'+this.rte.i18n('Arabic localization')+', '+this.rte.i18n('RTL support')+'</td></tr>'
+				+'<tr><td>Tad &lt;tad0616@gmail.com&gt;</td><td>'+this.rte.i18n('Traditional Chinese localization')+'</td></tr>'
+				+'<tr><td>Tomoaki Yoshida &lt;info@yoshida-studio.jp&gt;</td><td>'+this.rte.i18n('Japanese localization')+'</td></tr>'
+				+'<tr><td>Uldis Plotiņš &lt;uldis.plotins@gmail.com&gt;</td><td>'+this.rte.i18n('Latvian localization')+'</td></tr>'
+				+'<tr><td>Vasiliy Razumnyh &lt;rvn@std42.ru&gt;</td><td>'+this.rte.i18n('German localization')+'</td></tr>'
+				+'<tr><td>Viktor Tamas &lt;tamas.viktor@totalstudio.hu&gt;</td><td>'+this.rte.i18n('Hungarian localization')+'</td></tr>'
+				+'<tr><td>Ugo Punzolo, &lt;sadraczerouno@gmail.com&gt;</td><td>'+this.rte.i18n('Italian localization')+'</td></tr>'
+				+'</table>'
+				+'<div class="elrte-copy">Copyright &copy; 2009-2010, <a href="http://www.std42.ru">Studio 42 LTD</a></div>'
+				+'<div class="elrte-copy">'+this.rte.i18n('For more information about this software visit the')+' <a href="http://elrte.org">'+this.rte.i18n('elRTE website')+'.</a></div>'
+				+'<div class="elrte-copy">Twitter: <a href="http://twitter.com/elrte_elfinder">elrte_elfinder</a></div>';
+
+			d = new elDialogForm(opts);
+			d.append(txt);
+			d.open();
+		}
+
+		this.update = function() {
+			this.domElem.removeClass('disabled');
+		}
+
+	}
+
+})(jQuery);
+/**
+ * @class кнопка - Закладка (открывает диалоговое окно)
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.anchor = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	this.input = $('<input type="text" />').attr('name', 'anchor').attr('size', '16')
+	var self = this;
+
+	this.command = function() {
+		var opts = {
+			rtl : this.rte.rtl,
+			submit : function(e, d) { e.stopPropagation(); e.preventDefault(); d.close(); self.set();  },
+			dialog : {
+				title : this.rte.i18n('Bookmark')
+			}
+		}
+
+
+		this.anchor = this.rte.dom.selfOrParentAnchor(this.rte.selection.getEnd()) || rte.dom.create('a');
+		!this.rte.selection.collapsed() && this.rte.selection.collapse(false);
+		this.input.val($(this.anchor).addClass('el-rte-anchor').attr('name'));
+		this.rte.selection.saveIERange();
+		var d = new elDialogForm(opts);
+		d.append([this.rte.i18n('Bookmark name'), this.input], null, true).open();
+		setTimeout(function() { self.input.focus()}, 20);
+	}
+
+	this.update = function() {
+		var n = this.rte.selection.getNode();
+		if (this.rte.dom.selfOrParentLink(n)) {
+			this.domElem.addClass('disabled');
+		} else if (this.rte.dom.selfOrParentAnchor(n)) {
+			this.domElem.removeClass('disabled').addClass('active');
+		} else {
+			this.domElem.removeClass('disabled').removeClass('active');
+		}
+	}
+
+	this.set = function() {
+		var n = $.trim(this.input.val());
+
+		if (n) {
+			this.rte.history.add();
+			if (!this.anchor.parentNode) {
+				this.rte.selection.insertHtml('<a name="'+n+'" title="'+this.rte.i18n('Bookmark')+': '+n+'" class="el-rte-anchor"></a>');
+			} else {
+				this.anchor.name = n;
+				this.anchor.title = this.rte.i18n('Bookmark')+': '+n;
+			}
+		} else if (this.anchor.parentNode) {
+			this.rte.history.add();
+			this.anchor.parentNode.removeChild(this.anchor);
+		}
+	}
+}
+})(jQuery);
+/**
+ * @class кнопка - Цитата
+ * Если выделение схлопнуто и находится внутри цитаты - она удаляется
+ * Новые цитаты создаются только из несхлопнутого выделения
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.blockquote = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+
+	this.command = function() {
+		var n, nodes;
+		this.rte.history.add();
+		if (this.rte.selection.collapsed() && (n = this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^BLOCKQUOTE$/))) {
+			$(n).replaceWith($(n).html());
+		} else {
+			nodes = this.rte.selection.selected({wrap : 'all', tag : 'blockquote'});
+			nodes.length && this.rte.selection.select(nodes[0], nodes[nodes.length-1]);
+		}
+		this.rte.ui.update(true);
+	}
+
+	this.update = function() {
+		if (this.rte.selection.collapsed()) {
+			if (this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^BLOCKQUOTE$/)) {
+				this.domElem.removeClass('disabled').addClass('active');
+			} else {
+				this.domElem.addClass('disabled').removeClass('active');
+			}
+		} else {
+			this.domElem.removeClass('disabled active');
+		}
+	}
+}
+})(jQuery);
+/**
+ * @class кнопки "копировать/вырезать/вставить"
+ * в firefox показывает предложение нажать Ctl+c, в остальных - копирует
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.copy = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+
+	this.command = function() {
+
+		if (this.rte.browser.mozilla) {
+			try {
+				this.rte.doc.execCommand(this.name, false, null);
+			} catch (e) {
+				var s = ' Ctl + C';
+				if (this.name == 'cut') {
+					s = ' Ctl + X';
+				} else if (this.name == 'paste') {
+					s = ' Ctl + V';
+				}
+				var opts = {
+					dialog : {
+						title   : this.rte.i18n('Warning'),
+						buttons : { Ok : function() { $(this).dialog('close'); } }
+					}
+				}
+
+				var d = new elDialogForm(opts);
+				d.append(this.rte.i18n('This operation is disabled in your browser on security reason. Use shortcut instead.')+': '+s).open();
+			}
+		} else {
+			this.constructor.prototype.command.call(this);
+		}
+	}
+}
+
+elRTE.prototype.ui.prototype.buttons.cut   = elRTE.prototype.ui.prototype.buttons.copy;
+elRTE.prototype.ui.prototype.buttons.paste = elRTE.prototype.ui.prototype.buttons.copy;
+
+})(jQuery);(function($) {
+
+	elRTE.prototype.ui.prototype.buttons.css = function(rte, name) {
+		var self = this;
+		this.constructor.prototype.constructor.call(this, rte, name);
+		this.cssStyle = $('<input type="text" size="42" name="style" />');
+		this.cssClass = $('<input type="text" size="42" name="class" />');
+
+
+		this.command = function() {
+			var n = this.node(), opts;
+			this.rte.selection.saveIERange();
+			if (n) {
+				var opts = {
+
+					submit : function(e, d) { e.stopPropagation(); e.preventDefault(); d.close(); self.set();  },
+					dialog : {
+						title : this.rte.i18n('Style'),
+						width : 450,
+						resizable : true,
+						modal : true
+					}
+				}
+				this.cssStyle.val($(n).attr('style'));
+				this.cssClass.val($(n).attr('class'));
+				var d = new elDialogForm(opts);
+				d.append([this.rte.i18n('Css style'), this.cssStyle], null, true)
+				d.append([this.rte.i18n('Css class'), this.cssClass], null, true).open();
+				setTimeout(function() { self.cssStyle.focus() }, 20)
+			}
+		}
+
+		this.set = function() {
+			var n = this.node();
+			this.rte.selection.restoreIERange();
+			if (n) {
+				$(n).attr('style', this.cssStyle.val());
+				$(n).attr('class', this.cssClass.val());
+				this.rte.ui.update();
+			}
+		}
+
+		this.node = function() {
+			var n = this.rte.selection.getNode();
+			if (n.nodeType == 3) {
+				n = n.parentNode;
+			}
+			return n.nodeType == 1 && n.nodeName != 'BODY' ? n : null;
+		}
+
+		this.update = function() {
+			this.domElem.toggleClass('disabled', this.node()?false:true);
+		}
+
+	}
+
+})(jQuery);
+(function($) {
+	/**
+	 * @class button - right to left direction (not work yet with text nodes in body)
+	 *
+	 * @param  elRTE  rte   объект-редактор
+	 * @param  String name  название кнопки
+	 *
+	 * @author:    Dmitry Levashov (dio) dio@std42.ru
+	 * Copyright: Studio 42, http://www.std42.ru
+	 **/
+	elRTE.prototype.ui.prototype.buttons.rtl = function(rte, name)  {
+		this.constructor.prototype.constructor.call(this, rte, name);
+		var self = this;
+
+		this.command = function() {
+			var n = this.rte.selection.getNode(), self = this;
+			if ($(n).attr('dir') == 'rtl' || $(n).parents('[dir="rtl"]').length || $(n).find('[dir="rtl"]').length) {
+				$(n).removeAttr('dir');
+				$(n).parents('[dir="rtl"]').removeAttr('dir');
+				$(n).find('[dir="rtl"]').removeAttr('dir');
+			} else {
+				if (this.rte.dom.is(n, 'textNodes') && this.rte.dom.is(n, 'block')) {
+					$(n).attr('dir', 'rtl');
+				} else {
+					$.each(this.rte.dom.parents(n, 'textNodes'), function(i, n) {
+						if (self.rte.dom.is(n, 'block')) {
+							$(n).attr('dir', 'rtl');
+							return false;
+						}
+					});
+				}
+			}
+			this.rte.ui.update();
+		}
+
+		this.update = function() {
+			var n = this.rte.selection.getNode();
+			this.domElem.removeClass('disabled');
+			if ($(n).attr('dir') == 'rtl' || $(n).parents('[dir="rtl"]').length || $(n).find('[dir="rtl"]').length) {
+				this.domElem.addClass('active');
+			} else {
+				this.domElem.removeClass('active');
+			}
+		}
+	}
+
+	/**
+	 * @class button - left to right direction (not work yet with text nodes in body)
+	 *
+	 * @param  elRTE  rte   объект-редактор
+	 * @param  String name  название кнопки
+	 *
+	 * @author:    Dmitry Levashov (dio) dio@std42.ru
+	 * Copyright: Studio 42, http://www.std42.ru
+	 **/
+	elRTE.prototype.ui.prototype.buttons.ltr = function(rte, name)  {
+		this.constructor.prototype.constructor.call(this, rte, name);
+		var self = this;
+
+		this.command = function() {
+			var n = this.rte.selection.getNode(), self = this;
+			if ($(n).attr('dir') == 'ltr' || $(n).parents('[dir="ltr"]').length || $(n).find('[dir="ltr"]').length) {
+				$(n).removeAttr('dir');
+				$(n).parents('[dir="ltr"]').removeAttr('dir');
+				$(n).find('[dir="ltr"]').removeAttr('dir');
+			} else {
+				if (this.rte.dom.is(n, 'textNodes') && this.rte.dom.is(n, 'block')) {
+					$(n).attr('dir', 'ltr');
+				} else {
+					$.each(this.rte.dom.parents(n, 'textNodes'), function(i, n) {
+						if (self.rte.dom.is(n, 'block')) {
+							$(n).attr('dir', 'ltr');
+							return false;
+						}
+					});
+				}
+			}
+			this.rte.ui.update();
+		}
+
+		this.update = function() {
+			var n = this.rte.selection.getNode();
+			this.domElem.removeClass('disabled');
+			if ($(n).attr('dir') == 'ltr' || $(n).parents('[dir="ltr"]').length || $(n).find('[dir="ltr"]').length) {
+				this.domElem.addClass('active');
+			} else {
+				this.domElem.removeClass('active');
+			}
+		}
+	}
+
+})(jQuery);/**
+ * @class кнопка - DIV
+ * Если выделение схлопнуто и находится внутри div'a - он удаляется
+ * Новые div'ы создаются только из несхлопнутого выделения
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.div = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+
+	this.command = function() {
+		var n, nodes;
+		this.rte.history.add();
+
+		if (this.rte.selection.collapsed()) {
+			n = this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^DIV$/);
+			if (n) {
+				$(n).replaceWith($(n).html());
+			}
+		} else {
+			nodes = this.rte.selection.selected({wrap : 'all', tag : 'div'});
+			nodes.length && this.rte.selection.select(nodes[0], nodes[nodes.length-1]);
+		}
+		this.rte.ui.update(true);
+	}
+
+	this.update = function() {
+		if (this.rte.selection.collapsed()) {
+			if (this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^DIV$/)) {
+				this.domElem.removeClass('disabled').addClass('active');
+			} else {
+				this.domElem.addClass('disabled active');
+			}
+		} else {
+			this.domElem.removeClass('disabled active');
+		}
+	}
+}
+})(jQuery);
+/**
+ * @class кнопка - Включение/выключение показа структуры документа
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.docstructure = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+
+	this.command = function() {
+		this.domElem.toggleClass('active');
+		$(this.rte.doc.body).toggleClass('el-rte-structure');
+	}
+	this.command();
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+	}
+}
+})(jQuery);
+/**
+ * @class button - open elfinder window (not needed for image or link buttons).Used in ELDORADO.CMS for easy file manipulations.
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.elfinder = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+	this.command = function() {
+		if (self.rte.options.fmAllow && typeof(self.rte.options.fmOpen) == 'function') {
+			self.rte.options.fmOpen( function(url) { self.rte.log(url) } );
+		}
+	}
+
+	this.update = function() {
+		if (self.rte.options.fmAllow && typeof(self.rte.options.fmOpen) == 'function') {
+			this.domElem.removeClass('disabled');
+		} else {
+			this.domElem.addClass('disabled');
+		}
+	}
+}
+
+})(jQuery);(function($) {
+
+	elRTE.prototype.ui.prototype.buttons.flash = function(rte, name) {
+		this.constructor.prototype.constructor.call(this, rte, name);
+		var self = this;
+		this.swf = null;
+		this.placeholder = null;
+		this.src = {
+			url    : $('<input type="text" name="url" />').css('width', '99%'),
+			type   : $('<select name="type"/>')
+						.append('<option value="application/x-shockwave-flash">Flash</option>')
+						.append('<option value="video/quicktime">Quicktime movie</option>')
+						.append('<option value="application/x-mplayer2">Windows media</option>'),
+			width  : $('<input type="text" />').attr('size', 5).css('text-align', 'right'),
+			height : $('<input type="text" />').attr('size', 5).css('text-align', 'right'),
+			wmode  : $('<select />')
+						.append($('<option />').val('').text(this.rte.i18n('Not set', 'dialogs')))
+						.append($('<option />').val('transparent').text(this.rte.i18n('Transparent'))),
+			align  : $('<select />')
+						.append($('<option />').val('').text(this.rte.i18n('Not set', 'dialogs')))
+						.append($('<option />').val('left'       ).text(this.rte.i18n('Left')))
+						.append($('<option />').val('right'      ).text(this.rte.i18n('Right')))
+						.append($('<option />').val('top'        ).text(this.rte.i18n('Top')))
+						.append($('<option />').val('text-top'   ).text(this.rte.i18n('Text top')))
+						.append($('<option />').val('middle'     ).text(this.rte.i18n('middle')))
+						.append($('<option />').val('baseline'   ).text(this.rte.i18n('Baseline')))
+						.append($('<option />').val('bottom'     ).text(this.rte.i18n('Bottom')))
+						.append($('<option />').val('text-bottom').text(this.rte.i18n('Text bottom'))),
+			margin : $('<div />')
+		}
+
+		this.command = function() {
+
+			var n = this.rte.selection.getEnd(), opts, url='', w='', h='', f, a, d, mid, o, wm;
+			this.rte.selection.saveIERange();
+			this.src.margin.elPaddingInput({ type : 'margin' });
+			this.placeholder = null;
+			this.swf = null;
+			if ($(n).hasClass('elrte-media') && (mid = $(n).attr('rel')) &&  this.rte.filter.scripts[mid]) {
+				this.placeholder = $(n);
+				o = this.rte.filter.scripts[mid];
+				url = '';
+				if (o.embed && o.embed.src) {
+					url = o.embed.src;
+				}
+				if (o.params && o.params.length) {
+					l = o.params.length;
+					while (l--) {
+						if (o.params[l].name == 'src' || o.params[l].name == 'movie') {
+							url =  o.params[l].value;
+						}
+					}
+				}
+
+				if (o.embed) {
+					w = o.embed.width||parseInt(o.embed.style.width)||'';
+					h = o.embed.height||parseInt(o.embed.style.height)||'';
+					wm = o.embed.wmode||'';
+				} else if (o.obj) {
+					w = o.obj.width||parseInt(o.obj.style.width)||'';
+					h = o.obj.height||parseInt(o.obj.style.height)||'';
+					wm = o.obj.wmode||'';
+				}
+
+				if (o.obj) {
+					f = o.obj.style['float']||'';
+					a = o.obj.style['vertical-align']||'';
+				} else if (o.embed) {
+					f = o.embed.style['float']||'';
+					a = o.embed.style['vertical-align']||'';
+				}
+				this.src.margin.val(n);
+				this.src.type.val(o.embed ? o.embed.type : '');
+			}
+			if ($(n).hasClass('elrte-swf-placeholder')) {
+				this.placeholder = $(n);
+				url = $(n).attr('rel');
+				w = parseInt($(n).css('width'))||'';
+				h = parseInt($(n).css('height'))||'';
+				f = $(n).css('float');
+				a = $(n).css('vertical-align');
+				this.src.margin.val(n);
+				this.src.wmode.val($(n).attr('wmode'));
+			}
+			this.src.url.val(url);
+			this.src.width.val(w);
+			this.src.height.val(h);
+			this.src.align.val(f||a);
+			this.src.wmode.val(wm);
+
+
+
+
+			var opts = {
+				rtl : this.rte.rtl,
+				submit : function(e, d) { e.stopPropagation(); e.preventDefault(); self.set(); d.close(); },
+				dialog : {
+					width    : 580,
+					position : 'top',
+					title    : this.rte.i18n('Flash')
+				}
+			}
+			var d = new elDialogForm(opts);
+
+			if (this.rte.options.fmAllow && this.rte.options.fmOpen) {
+				var src = $('<span />').append(this.src.url.css('width', '85%'))
+						.append(
+							$('<span />').addClass('ui-state-default ui-corner-all')
+								.css({'float' : 'right', 'margin-right' : '3px'})
+								.attr('title', self.rte.i18n('Open file manger'))
+								.append($('<span />').addClass('ui-icon ui-icon-folder-open'))
+									.click( function() {
+										self.rte.options.fmOpen( function(url) { self.src.url.val(url).change(); } );
+									})
+									.hover(function() {$(this).addClass('ui-state-hover')}, function() { $(this).removeClass('ui-state-hover')})
+							);
+			} else {
+				var src = this.src.url;
+			}
+
+			d.append([this.rte.i18n('URL'), src], null, true);
+			d.append([this.rte.i18n('Type'), this.src.type], null, true);
+			d.append([this.rte.i18n('Size'), $('<span />').append(this.src.width).append(' x ').append(this.src.height).append(' px')], null, true)
+			d.append([this.rte.i18n('Wmode'), this.src.wmode], null, true);
+			d.append([this.rte.i18n('Alignment'), this.src.align], null, true);
+			d.append([this.rte.i18n('Margins'), this.src.margin], null, true);
+
+
+
+			d.open();
+			setTimeout( function() {self.src.url.focus()}, 100)
+
+
+			var fs = $('<fieldset />').append($('<legend />').text(this.rte.i18n('Preview')))
+			d.append(fs, 'main');
+			var frame = document.createElement('iframe');
+			$(frame).attr('src', '#').addClass('el-rte-preview').appendTo(fs);
+			html = this.rte.options.doctype+'<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style="padding:0;margin:0;font-size:9px"> Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin</body></html>';
+			frame.contentWindow.document.open();
+			frame.contentWindow.document.write(html);
+			frame.contentWindow.document.close();
+			this.frame = frame.contentWindow.document;
+			this.preview = $(frame.contentWindow.document.body);
+
+			this.src.type.change(function() {
+				self.src.url.change();
+			});
+
+			this.src.width.change(function() {
+				if (self.swf) {
+					var w = parseInt($(this).val())||'';
+					$(this).val(w);
+					self.swf.css('width', w);
+					self.swf.children('embed').css('width', w);
+				} else {
+					$(this).val('');
+				}
+			});
+
+			this.src.height.change(function() {
+				if (self.swf) {
+					var h = parseInt($(this).val())||'';
+					$(this).val(h);
+					self.swf.css('height', h);
+					self.swf.children('embed').css('height', h);
+				} else {
+					$(this).val('');
+				}
+			});
+
+			this.src.wmode.change(function() {
+				if (self.swf) {
+					var wm = $(this).val();
+					if (wm) {
+						self.swf.attr('wmode', wm);
+						self.swf.children('embed').attr('wmode', wm);
+					} else {
+						self.swf.removeAttr('wmode');
+						self.swf.children('embed').removeAttr('wmode');
+					}
+				}
+			});
+
+			this.src.align.change(function() {
+				var v = $(this).val(), f = v=='left' || v=='right';
+				if (self.swf) {
+					self.swf.css({
+						'float' : f ? v : '',
+						'vertical-align' : f ? '' : v
+					});
+				} else {
+					$(this).val('');
+				}
+			});
+
+			this.src.margin.change(function() {
+				if (self.swf) {
+					var m = self.src.margin.val();
+					if (m.css) {
+						self.swf.css('margin', m.css);
+					} else {
+						self.swf.css('margin-top', m.top);
+						self.swf.css('margin-right', m.right);
+						self.swf.css('margin-bottom', m.bottom);
+						self.swf.css('margin-left', m.left);
+					}
+				}
+			});
+
+			this.src.url.change(function() {
+				var url = self.rte.utils.absoluteURL($(this).val()), i, swf;
+				if (url) {
+					i = self.rte.utils.mediaInfo(self.src.type.val());
+					if (!i) {
+						i = self.rte.util.mediaInfo('application/x-shockwave-flash');
+					}
+					swf = '<object classid="'+i.classid+'" codebase="'+i.codebase+'"><param name="src" value="'+url+'" /><embed quality="high" src="'+url+'" type="'+i.type+'"></object>';
+					self.preview.children('object').remove().end().prepend(swf);
+					self.swf = self.preview.children('object').eq(0);
+				} else if (self.swf){
+					self.swf.remove();
+					self.swf = null;
+				}
+				self.src.width.trigger('change');
+				self.src.height.trigger('change');
+				self.src.align.trigger('change');
+
+			}).trigger('change');
+		};
+
+		this.set = function() {
+			self.swf = null
+			var url = this.rte.utils.absoluteURL(this.src.url.val()),
+				w = parseInt(this.src.width.val()) || '',
+				h = parseInt(this.src.height.val()) || '',
+				wm = this.src.wmode.val(),
+				a = this.src.align.val(),
+				f = a == 'left' || a == 'right' ? a : '',
+				mid = this.placeholder ? this.placeholder.attr('rel') : '', o, _o, c,
+				m = this.src.margin.val(), margin;
+
+
+
+			if (!url) {
+				if (this.placeholder) {
+					this.placeholder.remove();
+					delete this.rte.filter.scripts[mid];
+				}
+			} else {
+				i = self.rte.utils.mediaInfo(self.src.type.val());
+				if (!i) {
+					i = self.rte.util.mediaInfo('application/x-shockwave-flash');
+				}
+				c = this.rte.filter.videoHostRegExp.test(url) ? url.replace(this.rte.filter.videoHostRegExp, "$2") : i.type.replace(/^\w+\/(.+)/, "$1");
+
+				o = {
+					obj : {
+						classid : i.classid[0],
+						codebase : i.codebase,
+						style : {}
+					},
+					params :[ { name : 'src', value : url } ],
+					embed :{
+						src : url,
+						type : i.type,
+						quality : 'high',
+						wmode : wm,
+						style : {}
+					}
+				};
+
+				if (w) {
+					o.obj.width = w;
+					o.embed.width = w;
+				}
+				if (h) {
+					o.obj.height = h;
+					o.embed.height = h;
+				}
+				if (f) {
+					o.obj.style['float'] = f;
+				} else if (a) {
+					o.obj.style['vertical-align'] = a;
+				}
+
+				if (m.css) {
+					margin = { margin : m.css };
+				} else {
+					margin = {
+						'margin-top' : m.top,
+						'margin-right' : m.right,
+						'margin-bottom' : m.bottom,
+						'margin-left' : m.left
+					};
+				}
+
+				o.obj.style = $.extend({}, o.obj.style, margin);
+
+				if (this.placeholder && mid) {
+					_o = this.rte.filter.scripts[mid]||{};
+
+					o = $.extend(true, _o, o);
+					delete o.obj.style.width;
+					delete o.obj.style.height;
+					delete o.embed.style.width;
+					delete o.embed.style.height;
+					this.rte.filter.scripts[mid] = o;
+					this.placeholder.removeAttr('class');
+				} else {
+					var id = 'media'+Math.random().toString().substring(2);
+					this.rte.filter.scripts[id] = o;
+					this.placeholder = $(this.rte.dom.create('img')).attr('rel', id).attr('src', this.rte.filter.url+'pixel.gif');
+					var ins = true;
+				}
+				this.placeholder.attr('title', this.rte.utils.encode(url)).attr('width', w||150).attr('height', h||100).addClass('elrte-protected elrte-media elrte-media-'+c).css(o.obj.style);
+				if (f) {
+					this.placeholder.css('float', f).css('vertical-align', '');
+				} else if (a) {
+					this.placeholder.css('float', '').css('vertical-align', a);
+				} else {
+					this.placeholder.css('float', '').css('vertical-align', '');
+				}
+
+				if (ins) {
+					this.rte.window.focus();
+					this.rte.selection.restoreIERange();
+					this.rte.selection.insertNode(this.placeholder.get(0));
+				}
+			}
+		}
+
+		this.update = function() {
+			this.domElem.removeClass('disabled');
+			var n = this.rte.selection.getNode();
+			this.domElem.toggleClass('active', n && n.nodeName == 'IMG' && $(n).hasClass('elrte-media'))
+
+		}
+
+
+	}
+})(jQuery);/**
+ * @class drop-down menu - font-family for selected text
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.fontname = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+	var opts = {
+		tpl      : '<span style="font-family:%val">%label</span>',
+		select   : function(v) { self.set(v); },
+		src      : {
+			''                                              : this.rte.i18n('Font'),
+			'andale mono,sans-serif'                        : 'Andale Mono',
+			'arial,helvetica,sans-serif'                    : 'Arial',
+			'arial black,gadget,sans-serif'                 : 'Arial Black',
+			'book antiqua,palatino,sans-serif'              : 'Book Antiqua',
+			'comic sans ms,cursive'                         : 'Comic Sans MS',
+			'courier new,courier,monospace'                 : 'Courier New',
+			'georgia,palatino,serif'                        : 'Georgia',
+			'helvetica,sans-serif'                          : 'Helvetica',
+			'impact,sans-serif'                             : 'Impact',
+			'lucida console,monaco,monospace'               : 'Lucida console',
+			'lucida sans unicode,lucida grande,sans-serif'  : 'Lucida grande',
+			'tahoma,sans-serif'                             : 'Tahoma',
+			'times new roman,times,serif'                   : 'Times New Roman',
+			'trebuchet ms,lucida grande,verdana,sans-serif' : 'Trebuchet MS',
+			'verdana,geneva,sans-serif'                     : 'Verdana'
+		}
+	}
+
+	this.select = this.domElem.elSelect(opts);
+
+	this.command = function() {
+	}
+
+	this.set = function(size) {
+		this.rte.history.add();
+		var nodes = this.rte.selection.selected({filter : 'textContainsNodes'});
+		$.each(nodes, function() {
+			$this = /^(THEAD|TFOOT|TBODY|COL|COLGROUP|TR)$/.test(this.nodeName) ? $(this).find('td,th') : $(this);
+			$(this).css('font-family', size).find('[style]').css('font-family', '');
+		});
+		this.rte.ui.update();
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+		var n = this.rte.selection.getNode();
+		if (n.nodeType != 1) {
+			n = n.parentNode;
+		}
+		var v = $(n).css('font-family');
+		v = v ? v.toString().toLowerCase().replace(/,\s+/g, ',').replace(/'|"/g, '') : '';
+		this.select.val(opts.src[v] ? v : '');
+	}
+}
+
+})(jQuery);/**
+ * @class drop-down menu - font size for selected text
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.fontsize = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+	var opts = {
+		labelTpl : '%label',
+		tpl      : '<span style="font-size:%val;line-height:1.2em">%label</span>',
+		select   : function(v) { self.set(v); },
+		src      : {
+			''         : this.rte.i18n('Font size'),
+			'xx-small' : this.rte.i18n('Small (8pt)'),
+			'x-small'  : this.rte.i18n('Small (10px)'),
+			'small'    : this.rte.i18n('Small (12pt)'),
+			'medium'   : this.rte.i18n('Normal (14pt)'),
+			'large'    : this.rte.i18n('Large (18pt)'),
+			'x-large'  : this.rte.i18n('Large (24pt)'),
+			'xx-large' : this.rte.i18n('Large (36pt)')
+		}
+	}
+
+	this.select = this.domElem.elSelect(opts);
+
+	this.command = function() {
+	}
+
+	this.set = function(size) {
+		this.rte.history.add();
+		var nodes = this.rte.selection.selected({filter : 'textContainsNodes'});
+		$.each(nodes, function() {
+			$this = /^(THEAD|TFOOT|TBODY|COL|COLGROUP|TR)$/.test(this.nodeName) ? $(this).find('td,th') : $(this);
+			$this.css('font-size', size).find("[style]").css('font-size', '');
+		});
+		this.rte.ui.update();
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+		var n = this.rte.selection.getNode();
+		this.select.val((m = this.rte.dom.attr(n, 'style').match(/font-size:\s*([^;]+)/i)) ? m[1] : '');
+	}
+}
+
+})(jQuery);/**
+ * @class color pallete for text color and background
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.forecolor = function(rte, name) {
+	var self = this;
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var opts = {
+		'class' : '',
+		color   : this.defaultColor,
+		update  : function(c) { self.indicator.css('background-color', c); },
+		change  : function(c) { self.set(c) }
+	}
+
+	this.defaultColor = this.name == 'forecolor' ? '#000000' : '#ffffff';
+	this.picker       = this.domElem.elColorPicker(opts);
+	this.indicator    = $('<div />').addClass('color-indicator').prependTo(this.domElem);
+
+	this.command = function() {
+	}
+
+	this.set = function(c) {
+		if (!this.rte.selection.collapsed()) {
+			this.rte.history.add();
+			var nodes = this.rte.selection.selected({collapse : false, wrap : 'text'}),
+				css   = this.name == 'forecolor' ? 'color' : 'background-color';
+			$.each(nodes, function() {
+				if (/^(THEAD|TBODY|TFOOT|TR)$/.test(this.nodeName)) {
+					$(this).find('td,th').each(function() {
+						$(this).css(css, c).find('*').css(css, '');
+					})
+				} else {
+					$(this).css(css, c).find('*').css(css, '');
+				}
+			});
+			this.rte.ui.update(true);
+		}
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+		var n = this.rte.selection.getNode();
+		this.picker.val(this.rte.utils.rgb2hex($(n.nodeType != 1 ? n.parentNode : n).css(this.name == 'forecolor' ? 'color' : 'background-color'))||this.defaultColor)
+	}
+}
+
+elRTE.prototype.ui.prototype.buttons.hilitecolor = elRTE.prototype.ui.prototype.buttons.forecolor;
+
+})(jQuery);/**
+ * @class drop-down menu - formatting text block
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.formatblock = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+
+	var cmd = this.rte.browser.msie
+		? function(v) { self.val = v; self.constructor.prototype.command.call(self); }
+		: function(v) { self.ieCommand(v); }
+	var self = this;
+	var opts = {
+		labelTpl : '%label',
+		tpls     : {'' : '%label'},
+		select   : function(v) { self.formatBlock(v); },
+		src      : {
+			'span'    : this.rte.i18n('Format'),
+			'h1'      : this.rte.i18n('Heading 1'),
+			'h2'      : this.rte.i18n('Heading 2'),
+			'h3'      : this.rte.i18n('Heading 3'),
+			'h4'      : this.rte.i18n('Heading 4'),
+			'h5'      : this.rte.i18n('Heading 5'),
+			'h6'      : this.rte.i18n('Heading 6'),
+			'p'       : this.rte.i18n('Paragraph'),
+			'address' : this.rte.i18n('Address'),
+			'pre'     : this.rte.i18n('Preformatted'),
+			'div'     : this.rte.i18n('Normal (DIV)')
+		}
+	}
+
+	this.select = this.domElem.elSelect(opts);
+
+	this.command = function() {
+
+	}
+
+	this.formatBlock = function(v) {
+
+		function format(n, tag) {
+
+			function replaceChilds(p) {
+				$(p).find('h1,h2,h3,h4,h5,h6,p,address,pre').each(function() {
+					$(this).replaceWith($(this).html());
+				});
+				return p;
+			}
+
+			if (/^(LI|DT|DD|TD|TH|CAPTION)$/.test(n.nodeName)) {
+				!self.rte.dom.isEmpty(n) && self.rte.dom.wrapContents(replaceChilds(n), tag);
+			} else if (/^(UL|OL|DL|TABLE)$/.test(n.nodeName)) {
+				self.rte.dom.wrap(n, tag);
+			} else {
+				!self.rte.dom.isEmpty(n) && $(replaceChilds(n)).replaceWith( $(self.rte.dom.create(tag)).html($(n).html()));
+			}
+
+		}
+		this.rte.history.add();
+
+		var tag = v.toUpperCase(),
+			i, n, $n,
+			c = this.rte.selection.collapsed(),
+			bm = this.rte.selection.getBookmark(),
+			nodes = this.rte.selection.selected({
+				collapsed : true,
+				blocks    : true,
+				filter    : 'textContainsNodes',
+				wrap      : 'inline',
+				tag       : 'span'
+			})
+			l = nodes.length,
+			s = $(nodes[0]).prev(),
+			e = $(nodes[nodes.length-1]).next();
+
+		while (l--) {
+			n = nodes[l];
+			$n = $(n);
+			if (tag == 'DIV' || tag == 'SPAN') {
+				if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)) {
+					$n.replaceWith($(this.rte.dom.create('div')).html($n.html()||''));
+				}
+			} else {
+				if (/^(THEAD|TBODY|TFOOT|TR)$/.test(n.nodeName)) {
+					$n.find('td,th').each(function() { format(this, tag); });
+				} else if (n.nodeName != tag) {
+					format(n, tag);
+				}
+			}
+		}
+
+		this.rte.selection.moveToBookmark(bm);
+
+		this.rte.ui.update(true);
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+		var n = this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^(H[1-6]|P|ADDRESS|PRE)$/);
+		this.select.val(n ? n.nodeName.toLowerCase() : 'span');
+	}
+}
+})(jQuery);
+/**
+ * @class button - switch to fullscreen mode and back
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.fullscreen = function(rte, name) {
+	var self     = this;
+	this.constructor.prototype.constructor.call(this, rte, name);
+	this.active  = true;
+	this.editor = rte.editor;
+	this.wz = rte.workzone;
+	this.height  = 0;
+	this.delta = 0;
+	this._class = 'el-fullscreen';
+
+	setTimeout(function() {
+		self.height  = self.wz.height();
+		self.delta   = self.editor.outerHeight()-self.height;
+	}, 50);
+
+
+	/**
+	 * Update editor height on window resize in fullscreen view
+	 *
+	 **/
+	function resize() {
+		self.wz.height($(window).height()-self.delta);
+		self.rte.updateHeight();
+	}
+
+	this.command = function() {
+		var w = $(window),
+			e = this.editor,
+			p = e.parents().filter(function(i, n) { return  !/^(html|body)$/i.test(n.nodeName) && $(n).css('position') == 'relative'; }),
+			wz = this.wz,
+			c = this._class,
+			f = e.hasClass(c),
+			rte = this.rte,
+			s = this.rte.selection,
+			m = $.browser.mozilla,
+			b, h;
+
+		function save() {
+			if (m) {
+				b = s.getBookmark();
+			}
+		}
+
+		function restore() {
+			if (m) {
+				self.wz.children().toggle();
+				self.rte.source.focus();
+				self.wz.children().toggle();
+				s.moveToBookmark(b);
+			}
+		}
+
+		save();
+		p.css('position', f ? 'relative' : 'static');
+
+		if (f) {
+			e.removeClass(c);
+			wz.height(this.height);
+			w.unbind('resize', resize);
+			this.domElem.removeClass('active');
+		} else {
+			e.addClass(c).removeAttr('style');
+			wz.height(w.height() - this.delta).css('width', '100%');
+			w.bind('resize', resize);
+			this.domElem.addClass('active');
+		}
+		rte.updateHeight();
+		rte.resizable(f);
+		restore();
+
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+	}
+}
+})(jQuery);
+/**
+ * @class button - horizontal rule (open dialog window)
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.horizontalrule = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+	this.src = {
+		width   : $('<input type="text" />').attr({'name' : 'width', 'size' : 4}).css('text-align', 'right'),
+		wunit   : $('<select />').attr('name', 'wunit')
+					.append($('<option />').val('%').text('%'))
+					.append($('<option />').val('px').text('px'))
+					.val('%'),
+		height  : $('<input type="text" />').attr({'name' : 'height', 'size' : 4}).css('text-align', 'right'),
+		bg      : $('<div />'),
+		border  : $('<div />'),
+		'class' : $('<input type="text" />').css('width', '100%'),
+		style   : $('<input type="text" />').css('width', '100%')
+	}
+
+	this.command = function() {
+		this.src.bg.elColorPicker({palettePosition : 'outer', 'class' : 'el-colorpicker ui-icon ui-icon-pencil'});
+
+		var n   = this.rte.selection.getEnd();
+		this.hr = n.nodeName == 'HR' ? $(n) : $(rte.doc.createElement('hr')).css({width : '100%', height : '1px'});
+		this.src.border.elBorderSelect({styleHeight : 73, value : this.hr});
+
+		var _w  = this.hr.css('width') || this.hr.attr('width');
+		this.src.width.val(parseInt(_w) || 100);
+		this.src.wunit.val(_w.indexOf('px') != -1 ? 'px' : '%');
+
+		this.src.height.val( this.rte.utils.toPixels(this.hr.css('height') || this.hr.attr('height')) || 1) ;
+
+		this.src.bg.val(this.rte.utils.color2Hex(this.hr.css('background-color')));
+		this.src['class'].val(this.rte.dom.attr(this.hr, 'class'));
+		this.src.style.val(this.rte.dom.attr(this.hr, 'style'));
+
+		var opts = {
+			rtl : this.rte.rtl,
+			submit : function(e, d) { e.stopPropagation(); e.preventDefault(); self.set(); d.close(); },
+			dialog : {
+				title : this.rte.i18n('Horizontal rule')
+			}
+		}
+
+		var d = new elDialogForm(opts);
+		d.append([this.rte.i18n('Width'),          $('<span />').append(this.src.width).append(this.src.wunit) ], null, true)
+			.append([this.rte.i18n('Height'),      $('<span />').append(this.src.height).append(' px')], null, true)
+			.append([this.rte.i18n('Border'),      this.src.border], null, true)
+			.append([this.rte.i18n('Background'),  this.src.bg], null, true)
+			.append([this.rte.i18n('Css class'),   this.src['class']], null, true)
+			.append([this.rte.i18n('Css style'),   this.src.style], null, true)
+			.open();
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+		if (this.rte.selection.getEnd().nodeName == 'HR') {
+			this.domElem.addClass('active');
+		} else {
+			this.domElem.removeClass('active');
+		}
+	}
+
+	this.set = function() {
+		this.rte.history.add();
+		!this.hr.parentNode && this.rte.selection.insertNode(this.hr.get(0));
+		var attr = {
+			noshade : true,
+			style   : this.src.style.val()
+		}
+		var b = this.src.border.val();
+		var css = {
+			width  : (parseInt(this.src.width.val()) || 100)+this.src.wunit.val(),
+			height : parseInt(this.src.height.val()) || 1,
+			'background-color' : this.src.bg.val(),
+			border : b.width && b.style ? b.width+' '+b.style+' '+b.color : ''
+		}
+
+		this.hr.removeAttr('class')
+			.removeAttr('style')
+			.removeAttr('width')
+			.removeAttr('height')
+			.removeAttr('align')
+			.attr(attr)
+			.css(css);
+
+		if (this.src['class'].val()) {
+			this.hr.attr('class', this.src['class'].val());
+		}
+		this.rte.ui.update()
+	}
+
+}
+})(jQuery);
+/**
+ * @class button - insert/edit image (open dialog window)
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * Copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.image = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+	this.img = null
+	this.init = function() {
+
+		this.labels = {
+			main   : 'Properies',
+			link   : 'Link',
+			adv    : 'Advanced',
+			events : 'Events',
+			id       : 'ID',
+			'class'  : 'Css class',
+			style    : 'Css style',
+			longdesc : 'Detail description URL',
+			href    : 'URL',
+			target  : 'Open in',
+			title   : 'Title'
+		}
+
+		this.src = {
+			main : {
+				src    : $('<input type="text" />').css('width', '100%'),
+				title  : $('<input type="text" />').css('width', '100%'),
+				alt    : $('<input type="text" />').css('width', '100%'),
+				width  : $('<input type="text" />').attr('size', 5).css('text-align', 'right'),
+				height : $('<input type="text" />').attr('size', 5).css('text-align', 'right'),
+				margin : $('<div />'),
+				align  : $('<select />').css('width', '100%')
+							.append($('<option />').val('').text(this.rte.i18n('Not set', 'dialogs')))
+							.append($('<option />').val('left'       ).text(this.rte.i18n('Left')))
+							.append($('<option />').val('right'      ).text(this.rte.i18n('Right')))
+							.append($('<option />').val('top'        ).text(this.rte.i18n('Top')))
+							.append($('<option />').val('text-top'   ).text(this.rte.i18n('Text top')))
+							.append($('<option />').val('middle'     ).text(this.rte.i18n('middle')))
+							.append($('<option />').val('baseline'   ).text(this.rte.i18n('Baseline')))
+							.append($('<option />').val('bottom'     ).text(this.rte.i18n('Bottom')))
+							.append($('<option />').val('text-bottom').text(this.rte.i18n('Text bottom'))),
+				border : $('<div />')
+			},
+
+			adv : {
+				id       : $('<input type="text" />').css('width', '100%'),
+				'class'  : $('<input type="text" />').css('width', '100%'),
+				style    : $('<input type="text" />').css('width', '100%'),
+				longdesc : $('<input type="text" />').css('width', '100%')
+			},
+			events : {}
+		}
+
+		$.each(
+			['onblur', 'onfocus', 'onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmouseout', 'onmouseleave', 'onkeydown', 'onkeypress', 'onkeyup'],
+			function() {
+				self.src.events[this] = $('<input type="text" />').css('width', '100%');
+		});
+
+		$.each(self.src, function() {
+			for (var n in this) {
+				this[n].attr('name', n);
+			}
+		});
+
+	}
+
+	this.command = function() {
+		!this.src && this.init();
+		this.rte.selection.saveIERange();
+		this.src.main.border.elBorderSelect({ change : function() { self.updateImg(); }, name : 'border' });
+		this.src.main.margin.elPaddingInput({ type : 'margin' });
+
+		this.cleanValues();
+		this.src.main.src.val('');
+
+		var n = this.rte.selection.getEnd(),
+			$n = $(n);
+		this.preview = null;
+		this.prevImg = null;
+		this.link    = null;
+		if (n.nodeName == 'IMG' && !$n.hasClass('elrte-protected')) {
+			this.img     = $(n);
+		} else {
+			this.img = $(this.rte.doc.createElement('img'));
+
+		}
+
+		var opts = {
+			rtl : this.rte.rtl,
+			submit : function(e, d) { e.stopPropagation(); e.preventDefault(); self.set(); d.close(); },
+			dialog : {
+				width    : 570,
+				position : 'top',
+				title    : this.rte.i18n('Image')
+			}
+		}
+		var d = new elDialogForm(opts);
+
+		if (this.rte.options.fmAllow && this.rte.options.fmOpen) {
+			var src = $('<span />').append(this.src.main.src.css('width', '88%'))
+					.append(
+						$('<span />').addClass('ui-state-default ui-corner-all')
+							.css({'float' : 'right', 'margin-right' : '3px'})
+							.attr('title', self.rte.i18n('Open file manger'))
+							.append($('<span />').addClass('ui-icon ui-icon-folder-open'))
+								.click( function() {
+									self.rte.options.fmOpen( function(url) { self.src.main.src.val(url).change() } );
+								})
+								.hover(function() {$(this).addClass('ui-state-hover')}, function() { $(this).removeClass('ui-state-hover')})
+						);
+		} else {
+			var src = this.src.main.src;
+		}
+
+		d.tab('main', this.rte.i18n('Properies'))
+			.append([this.rte.i18n('Image URL'), src],                 'main', true)
+			.append([this.rte.i18n('Title'),     this.src.main.title], 'main', true)
+			.append([this.rte.i18n('Alt text'),  this.src.main.alt],   'main', true)
+			.append([this.rte.i18n('Size'), $('<span />').append(this.src.main.width).append(' x ').append(this.src.main.height).append(' px')], 'main', true)
+			.append([this.rte.i18n('Alignment'), this.src.main.align],  'main', true)
+			.append([this.rte.i18n('Margins'),   this.src.main.margin], 'main', true)
+			.append([this.rte.i18n('Border'),    this.src.main.border], 'main', true)
+
+		for (var tab in this.src) {
+			if (tab != 'main') {
+				d.tab(tab, this.rte.i18n(this.labels[tab]));
+				for (var name in this.src[tab]) {
+					var l = this.rte.i18n(this.labels[name] ? this.labels[name] : name);
+					if (tab == 'events') {
+						this.src[tab][name].val(this.rte.utils.trimEventCallback(this.img.attr(name)));
+					} else if (tab == 'link') {
+						if (this.link) {
+							this.src[tab][name].val(name == 'href' ? this.rte.utils.absoluteURL(this.link.attr(name)) : this.link.attr(name));
+						}
+					} else {
+						this.src[tab][name].val(this.img.attr(name)||'');
+					}
+					d.append([l, this.src[tab][name]], tab, true);
+				}
+			}
+		};
+
+		d.open();
+
+		var fs = $('<fieldset />').append($('<legend />').text(this.rte.i18n('Preview')))
+		d.append(fs, 'main');
+		var frame = document.createElement('iframe');
+		$(frame).attr('src', '#').addClass('el-rte-preview').appendTo(fs);
+
+		html = this.rte.options.doctype+'<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style="padding:0;margin:0;font-size:9px"> </body></html>';
+		frame.contentWindow.document.open();
+		frame.contentWindow.document.write(html);
+		frame.contentWindow.document.close();
+		this.frame = frame.contentWindow.document
+		this.preview = $(frame.contentWindow.document.body)
+						.text('Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin');
+
+		if (this.img.attr('src')) {
+
+			this.prevImg = $(this.frame.createElement('img'))
+				.attr('src',  this.rte.utils.absoluteURL(this.img.attr('src')))
+
+			this.prevImg.attr('width', this.img.attr('width'))
+				.attr('height', this.img.attr('height'))
+				.attr('title', this.img.attr('title')||'')
+				.attr('alt', this.img.attr('alt')||'')
+				.attr('style', this.img.attr('style')||'')
+			for (var n in this.src.adv) {
+				var a = this.img.attr(n);
+				if (a) {
+					this.prevImg.attr(n, a)
+				}
+			}
+
+			this.preview.prepend(this.prevImg);
+			this.updateValues();
+		}
+
+		$.each(this.src, function() {
+			$.each(this, function() {
+				if (this === self.src.main.src) {
+					this.bind('change', function() { self.updatePreview(); });
+				} else if (this == self.src.main.width || this == self.src.main.height) {
+					this.bind('change', function(e) {self.updateDimesions(e);});
+				} else {
+					this.bind('change', function() { self.updateImg(); });
+				}
+			});
+		});
+
+		// this.src.link.href.change(function() {
+		// 	var $this = $(this);
+		// 	$this.val(self.rte.utils.absoluteURL($this.val()));
+		// });
+
+	}
+
+
+
+	/**
+	 * Устанавливает значения полей формы из аттрибутов prevImg
+	 * Вызывается после загрузки prevImg
+	 *
+	 **/
+	this.updateValues = function() {
+
+		var i = this.prevImg.get(0);
+
+		this.origW = this.prevImg.attr('width');
+		this.origH = this.prevImg.attr('height');
+
+		this.src.main.src.val(this.rte.dom.attr(i, 'src'));
+		this.src.main.title.val(this.rte.dom.attr(i, 'title'));
+		this.src.main.alt.val(this.rte.dom.attr(i, 'alt'));
+		this.src.main.width.val(this.origW);
+		this.src.main.height.val(this.origH);
+		this.src.adv['class'].val(this.rte.dom.attr(i, 'class'));
+		this.src.main.margin.val(this.prevImg)
+		var f = this.prevImg.css('float');
+		this.src.main.align.val(f == 'left' || f == 'right' ? f : (this.prevImg.css('vertical-align')||''));
+		this.src.main.border.val(this.prevImg)
+		this.src.adv.style.val(this.rte.dom.attr(i, 'style'));
+	}
+
+	/**
+	 * Очищает поля формы
+	 *
+	 **/
+	this.cleanValues = function() {
+		$.each(this.src, function() {
+			$.each(this, function() {
+				var $this = $(this);
+				if ($this.attr('name') != 'src') {
+					$this.val('');
+				}
+			});
+		});
+	}
+
+	/**
+	 * Устанавливает аттрибуты prevImg из полей формы
+	 *
+	 **/
+	this.updateImg = function() {
+		this.prevImg.attr({
+				style  : $.trim(this.src.adv.style.val()),
+				title  : $.trim(this.src.main.title.val()),
+				alt    : $.trim(this.src.main.alt.val()),
+				width  : parseInt(this.src.main.width.val()),
+				height : parseInt(this.src.main.height.val())
+			});
+
+		var a = this.src.main.align.val();
+		var f = a == 'left' || a == 'right' ? a : '';
+
+		var b = this.src.main.border.val();
+		var m = this.src.main.margin.val();
+		this.prevImg.css('float', f);
+		this.prevImg.css('vertical-align', f ? '' : a);
+		this.prevImg.css('border', $.trim(b.width+' '+b.style+' '+b.color));
+		if (m.css) {
+			this.prevImg.css('margin', m.css);
+		} else {
+			this.prevImg.css('margin-top', m.top);
+			this.prevImg.css('margin-right', m.right);
+			this.prevImg.css('margin-bottom', m.bottom);
+			this.prevImg.css('margin-left', m.left);
+		}
+
+		$.each([this.src.events, this.src.adv], function() {
+			$.each(this, function() {
+				var $this = $(this);
+				var n = $this.attr('name');
+				if (n != 'style') {
+					var v = $.trim($this.val());
+					if (v) {
+						self.prevImg.attr(n, v);
+					} else {
+						self.prevImg.removeAttr(n);
+					}
+				}
+			});
+		});
+
+	}
+
+	/**
+	 * Обновляет форму выбора изображения
+	 *
+	 **/
+	this.updatePreview = function() {
+
+		var imgsrc = this.prevImg ? this.prevImg.attr('src') : '';
+		var src    = $.trim(this.src.main.src.val());
+		if (!src || src !=imgsrc) { // new image or empty src
+			if (this.prevImg) {
+				this.prevImg.remove();
+				this.prevImg = null;
+			}
+			this.cleanValues();
+			if (src) {  // new image
+
+				this.prevImg = $(this.frame.createElement('img'))
+					.attr('src',  this.rte.utils.absoluteURL(src))
+					.bind('load', function() {
+						self.updateValues();
+					})
+				this.preview.prepend(this.prevImg);
+				self.updateValues();
+			}
+		} else { // update existsed image
+			this.updateImg();
+		}
+	}
+
+	this.updateDimesions = function(e) {
+
+		var w = parseInt(this.src.main.width.val())  || 0;
+		var h = parseInt(this.src.main.height.val()) || 0;
+		if (w > 0 && h > 0) {
+			if (e.currentTarget == this.src.main.width.get(0)) {
+
+				this.src.main.height.val(parseInt(w*this.origH/this.origW));
+			} else {
+				this.src.main.width.val(parseInt(h*this.origW/this.origH));
+			}
+		} else {
+			this.src.main.width.val(this.origW);
+			this.src.main.height.val(this.origH);
+		}
+
+		this.updateImg();
+
+	}
+
+	this.set = function() {
+		this.rte.history.add();
+		this.rte.selection.restoreIERange();
+		if (!this.prevImg || !this.prevImg.attr('width')) {
+			this.img  && this.img.remove();
+			this.link && this.rte.doc.execCommand('unlink', false, null);
+		} else {
+			if (!this.img[0].parentNode) {
+				this.img = $(this.rte.doc.createElement('img'));
+			}
+
+			this.img.attr({
+					src    : this.rte.utils.absoluteURL($.trim(this.src.main.src.val())),
+					style  : $.trim(this.rte.dom.attr(this.prevImg.get(0), 'style')),
+					title  : $.trim(this.src.main.title.val()),
+					alt    : $.trim(this.src.main.alt.val()),
+					width  : parseInt(this.src.main.width.val()),
+					height : parseInt(this.src.main.height.val())
+				});
+
+			for (var _n in this.src.adv) {
+				if (_n != 'style') {
+					var val = this.src.adv[_n].val();
+					if (val) {
+						this.img.attr(_n, val);
+					} else {
+						this.img.removeAttr(_n)
+					}
+
+				}
+			}
+			for (var _n in this.src.events) {
+				var val = this.src.events[_n].val();
+				if (val) {
+					this.img.attr(_n, val);
+				} else {
+					this.img.removeAttr(_n)
+				}
+			}
+
+			if (!this.img[0].parentNode) {
+				this.rte.selection.insertNode(this.img.get(0))
+			}
+		}
+		this.rte.ui.update();
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+		var n = this.rte.selection.getEnd(),
+			$n = $(n);
+		if (n.nodeName == 'IMG' && !$n.hasClass('elrte-protected')) {
+			this.domElem.addClass('active');
+		} else {
+			this.domElem.removeClass('active');
+		}
+	}
+
+}
+})(jQuery);
+/**
+ * @class Увеличение отступа
+ * списки - если выделен один элемент - увеличивается вложенность списка, в остальных случаях - padding у родительского ul|ol
+ * Если таблица выделена полностью - ей добавляется margin, если частично - увеличивается padding для ячеек
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.indent = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+
+	this.command = function() {
+		this.rte.history.add();
+		var nodes = this.rte.selection.selected({collapsed : true, blocks : true, wrap : 'inline', tag : 'p'});
+
+		function indent(n) {
+			var css = /(IMG|HR|TABLE|EMBED|OBJECT)/.test(n.nodeName) ? 'margin-left' : 'padding-left';
+			var val = self.rte.dom.attr(n, 'style').indexOf(css) != -1 ? parseInt($(n).css(css))||0 : 0;
+			$(n).css(css, val+40+'px');
+		}
+
+		for (var i=0; i < nodes.length; i++) {
+			if (/^(TABLE|THEAD|TFOOT|TBODY|COL|COLGROUP|TR)$/.test(nodes[i].nodeName)) {
+				$(nodes[i]).find('td,th').each(function() {
+					indent(this);
+				});
+			} else if (/^LI$/.test(nodes[i].nodeName)) {
+				var n = $(nodes[i]);
+				$(this.rte.dom.create(nodes[i].parentNode.nodeName))
+					.append($(this.rte.dom.create('li')).html(n.html()||'')).appendTo(n.html('&nbsp;'));
+			} else {
+				indent(nodes[i]);
+			}
+		};
+		this.rte.ui.update();
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+	}
+
+}
+})(jQuery);
+/**
+ * @class button - justify text
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.justifyleft = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	this.align = this.name == 'justifyfull' ? 'justify' : this.name.replace('justify', '');
+
+	this.command = function() {
+		var s = this.rte.selection.selected({collapsed:true, blocks : true, tag : 'div'}),
+			l = s.length;
+		l && this.rte.history.add();
+		while (l--) {
+			this.rte.dom.filter(s[l], 'textNodes') && $(s[l]).css('text-align', this.align);
+		}
+		this.rte.ui.update();
+	}
+
+	this.update = function() {
+		var s = this.rte.selection.getNode(),
+			n = s.nodeName == 'BODY' ? s : this.rte.dom.selfOrParent(s, 'textNodes')||(s.parentNode && s.parentNode.nodeName == 'BODY' ? s.parentNode : null);
+		if (n) {
+			this.domElem.removeClass('disabled').toggleClass('active', $(n).css('text-align') == this.align);
+		} else {
+			this.domElem.addClass('disabled');
+		}
+	}
+
+}
+
+elRTE.prototype.ui.prototype.buttons.justifycenter = elRTE.prototype.ui.prototype.buttons.justifyleft;
+elRTE.prototype.ui.prototype.buttons.justifyright  = elRTE.prototype.ui.prototype.buttons.justifyleft;
+elRTE.prototype.ui.prototype.buttons.justifyfull   = elRTE.prototype.ui.prototype.buttons.justifyleft;
+
+})(jQuery);
+/**
+ * @class button - insert/edit link (open dialog window)
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * Copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.link = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+	this.img = false;
+
+	function init() {
+		self.labels = {
+			id        : 'ID',
+			'class'   : 'Css class',
+			style     : 'Css style',
+			dir       : 'Script direction',
+			lang      : 'Language',
+			charset   : 'Charset',
+			type      : 'Target MIME type',
+			rel       : 'Relationship page to target (rel)',
+			rev       : 'Relationship target to page (rev)',
+			tabindex  : 'Tab index',
+			accesskey : 'Access key'
+		}
+		self.src = {
+			main : {
+				href   : $('<input type="text" />'),
+				title  : $('<input type="text" />'),
+				anchor : $('<select />').attr('name', 'anchor'),
+				target : $('<select />')
+					.append($('<option />').text(self.rte.i18n('In this window')).val(''))
+					.append($('<option />').text(self.rte.i18n('In new window (_blank)')).val('_blank'))
+				// 	.append($('<option />').text(self.rte.i18n('In new parent window (_parent)')).val('_parent'))
+				// 	.append($('<option />').text(self.rte.i18n('In top frame (_top)')).val('_top'))
+			},
+
+			popup : {
+				use        : $('<input type="checkbox />"'),
+				url        : $('<input type="text" />'    ).val('http://'),
+				name       : $('<input type="text" />'    ),
+				width      : $('<input type="text" />'    ).attr({size : 6, title : self.rte.i18n('Width')} ).css('text-align', 'right'),
+				height     : $('<input type="text" />'    ).attr({size : 6, title : self.rte.i18n('Height')}).css('text-align', 'right'),
+				left       : $('<input type="text" />'    ).attr({size : 6, title : self.rte.i18n('Left')}  ).css('text-align', 'right'),
+				top        : $('<input type="text" />'    ).attr({size : 6, title : self.rte.i18n('Top')}   ).css('text-align', 'right'),
+				location   : $('<input type="checkbox" />'),
+				menubar    : $('<input type="checkbox" />'),
+				toolbar    : $('<input type="checkbox" />'),
+				scrollbars : $('<input type="checkbox" />'),
+				status     : $('<input type="checkbox" />'),
+				resizable  : $('<input type="checkbox" />'),
+				dependent  : $('<input type="checkbox" />'),
+				retfalse   : $('<input type="checkbox" />').attr('checked', true)
+			},
+
+			adv : {
+				id        : $('<input type="text" />'),
+				'class'   : $('<input type="text" />'),
+				style     : $('<input type="text" />'),
+				dir       : $('<select />')
+							.append($('<option />').text(self.rte.i18n('Not set')).val(''))
+							.append($('<option />').text(self.rte.i18n('Left to right')).val('ltr'))
+							.append($('<option />').text(self.rte.i18n('Right to left')).val('rtl')),
+				lang      : $('<input type="text" />'),
+				charset   : $('<input type="text" />'),
+				type      : $('<input type="text" />'),
+				rel       : $('<input type="text" />'),
+				rev       : $('<input type="text" />'),
+				tabindex  : $('<input type="text" />'),
+				accesskey : $('<input type="text" />')
+			},
+			events : {}
+		}
+
+		$.each(
+			['onblur', 'onfocus', 'onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmouseout', 'onmouseleave', 'onkeydown', 'onkeypress', 'onkeyup'],
+			function() {
+				self.src.events[this] = $('<input type="text" />');
+		});
+
+		$.each(self.src, function() {
+			for (var n in this) {
+				this[n].attr('name', n);
+				var t = this[n].attr('type');
+				if (!t || (t == 'text'  && !this[n].attr('size')) ) {
+					this[n].css('width', '100%');
+				}
+			}
+		});
+
+	}
+
+	this.command = function() {
+		var n = this.rte.selection.getNode(),
+			sel, i, v, opts, l, r, link, href, s;
+
+		!this.src && init();
+		this.rte.selection.saveIERange();
+
+		function isLink(n) { return n.nodeName == 'A' && n.href; }
+
+		this.link = this.rte.dom.selfOrParentLink(n);
+
+		if (!this.link) {
+			sel = $.browser.msie ? this.rte.selection.selected() : this.rte.selection.selected({wrap : false});
+			if (sel.length) {
+				for (i=0; i < sel.length; i++) {
+					if (isLink(sel[i])) {
+						this.link = sel[i];
+						break;
+					}
+				};
+				if (!this.link) {
+					this.link = this.rte.dom.parent(sel[0], isLink) || this.rte.dom.parent(sel[sel.length-1], isLink);
+				}
+			}
+		}
+
+		this.link = this.link ? $(this.link) : $(this.rte.doc.createElement('a'));
+		this.img = n.nodeName == 'IMG' ? n : null;
+		this.updatePopup();
+
+		this.src.main.anchor.empty();
+		$('a[href!=""][name]', this.rte.doc).each(function() {
+			var n = $(this).attr('name');
+			self.src.main.anchor.append($('<option />').val(n).text(n));
+		});
+		if (this.src.main.anchor.children().length) {
+			this.src.main.anchor.prepend($('<option />').val('').text(this.rte.i18n('Select bookmark')) )
+				.change(function() {
+					var v = $(this).val();
+					if (v) {
+						self.src.main.href.val('#'+v);
+					}
+				});
+		}
+
+		opts = {
+			rtl : this.rte.rtl,
+			submit : function(e, d) { e.stopPropagation(); e.preventDefault(); self.set(); d.close(); },
+			tabs : { show : function(e, ui) { if (ui.index==3) { self.updateOnclick(); } } },
+			close : function() {self.rte.browser.msie && self.rte.selection.restoreIERange(); },
+			dialog : {
+				width : 'auto',
+				width : 430,
+				title : this.rte.i18n('Link')
+
+			}
+		}
+		d = new elDialogForm(opts);
+
+		l = $('<div />')
+			.append( $('<label />').append(this.src.popup.location).append(this.rte.i18n('Location bar')))
+			.append( $('<label />').append(this.src.popup.menubar).append(this.rte.i18n('Menu bar')))
+			.append( $('<label />').append(this.src.popup.toolbar).append(this.rte.i18n('Toolbar')))
+			.append( $('<label />').append(this.src.popup.scrollbars).append(this.rte.i18n('Scrollbars')));
+		r = $('<div />')
+			.append( $('<label />').append(this.src.popup.status).append(this.rte.i18n('Status bar')))
+			.append( $('<label />').append(this.src.popup.resizable).append(this.rte.i18n('Resizable')))
+			.append( $('<label />').append(this.src.popup.dependent).append(this.rte.i18n('Depedent')))
+			.append( $('<label />').append(this.src.popup.retfalse).append(this.rte.i18n('Add return false')));
+
+		d.tab('main', this.rte.i18n('Properies'))
+			.tab('popup',  this.rte.i18n('Popup'))
+			.tab('adv',    this.rte.i18n('Advanced'))
+			.tab('events', this.rte.i18n('Events'))
+			.append($('<label />').append(this.src.popup.use).append(this.rte.i18n('Open link in popup window')), 'popup')
+			.separator('popup')
+			.append([this.rte.i18n('URL'),  this.src.popup.url],  'popup', true)
+			.append([this.rte.i18n('Window name'), this.src.popup.name], 'popup', true)
+			.append([this.rte.i18n('Window size'), $('<span />').append(this.src.popup.width).append(' x ').append(this.src.popup.height).append(' px')], 'popup', true)
+			.append([this.rte.i18n('Window position'), $('<span />').append(this.src.popup.left).append(' x ').append(this.src.popup.top).append(' px')], 'popup', true)
+			.separator('popup')
+			.append([l, r], 'popup', true);
+
+		link = this.link.get(0);
+		href = this.rte.dom.attr(link, 'href');
+		this.src.main.href.val(href).change(function() {
+			$(this).val(self.rte.utils.absoluteURL($(this).val()));
+		});
+
+		if (this.rte.options.fmAllow && this.rte.options.fmOpen) {
+			var s = $('<span />').append(this.src.main.href.css('width', '87%'))
+				.append(
+					$('<span />').addClass('ui-state-default ui-corner-all')
+						.css({'float' : 'right', 'margin-right' : '3px'})
+						.attr('title', self.rte.i18n('Open file manger'))
+						.append($('<span />').addClass('ui-icon ui-icon-folder-open'))
+							.click( function() {
+								self.rte.options.fmOpen( function(url) { self.src.main.href.val(url).change(); } );
+							})
+							.hover(function() {$(this).addClass('ui-state-hover')}, function() { $(this).removeClass('ui-state-hover')})
+				);
+			d.append([this.rte.i18n('Link URL'), s], 'main', true);
+		} else {
+			d.append([this.rte.i18n('Link URL'), this.src.main.href], 'main', true);
+		}
+		this.src.main.href.change();
+
+		d.append([this.rte.i18n('Title'), this.src.main.title.val(this.rte.dom.attr(link, 'title'))], 'main', true);
+		if (this.src.main.anchor.children().length) {
+			d.append([this.rte.i18n('Bookmark'), this.src.main.anchor.val(href)], 'main', true)
+		}
+		if (!this.rte.options.doctype.match(/xhtml/)) {
+			d.append([this.rte.i18n('Target'), this.src.main.target.val(this.link.attr('target')||'')], 'main', true);
+		}
+
+
+
+		for (var n in this.src.adv) {
+			this.src.adv[n].val(this.rte.dom.attr(link, n));
+			d.append([this.rte.i18n(this.labels[n] ? this.labels[n] : n), this.src.adv[n]], 'adv', true);
+		}
+		for (var n in this.src.events) {
+			var v = this.rte.utils.trimEventCallback(this.rte.dom.attr(link, n));
+			this.src.events[n].val(v);
+			d.append([this.rte.i18n(this.labels[n] ? this.labels[n] : n), this.src.events[n]], 'events', true);
+		}
+
+		this.src.popup.use.change(function() {
+			var c = $(this).attr('checked');
+			$.each(self.src.popup, function() {
+				if ($(this).attr('name') != 'use') {
+					if (c) {
+						$(this).removeAttr('disabled');
+					} else {
+						$(this).attr('disabled', true);
+					}
+				}
+			})
+		});
+		this.src.popup.use.change();
+		d.open();
+	}
+
+	this.update = function() {
+		var n = this.rte.selection.getNode();
+
+		// var t = this.rte.dom.selectionHas(function(n) { return n.nodeName == 'A' && n.href; });
+		// this.rte.log(t)
+
+		if (this.rte.dom.selfOrParentLink(n)) {
+			this.domElem.removeClass('disabled').addClass('active');
+		} else if (this.rte.dom.selectionHas(function(n) { return n.nodeName == 'A' && n.href; })) {
+			this.domElem.removeClass('disabled').addClass('active');
+		} else if (!this.rte.selection.collapsed() || n.nodeName == 'IMG') {
+			this.domElem.removeClass('disabled active');
+		} else {
+			this.domElem.addClass('disabled').removeClass('active');
+		}
+	}
+
+	this.updatePopup = function() {
+		var onclick = this.rte.dom.attr(this.link.get(0), 'onclick');
+		onclick = onclick ? $.trim(onclick.toString()) : ''
+		if ( onclick.length>0 && (m = onclick.match(/window.open\("([^"]+)",\s*"([^"]*)",\s*"([^"]*)"\s*.*\);\s*(return\s+false)?/))) {
+			this.src.popup.use.attr('checked', 'on')
+			this.src.popup.url.val(m[1]);
+			this.src.popup.name.val(m[2]);
+
+			if ( /location=yes/.test(m[3]) ) {
+				this.src.popup.location.attr('checked', true);
+			}
+			if ( /menubar=yes/.test(m[3]) ) {
+				this.src.popup.menubar.attr('checked', true);
+			}
+			if ( /toolbar=yes/.test(m[3]) ) {
+				this.src.popup.toolbar.attr('checked', true);
+			}
+			if ( /scrollbars=yes/.test(m[3]) ) {
+				this.src.popup.scrollbars.attr('checked', true);
+			}
+			if ( /status=yes/.test(m[3]) ) {
+				this.src.popup.status.attr('checked', true);
+			}
+			if ( /resizable=yes/.test(m[3]) ) {
+				this.src.popup.resizable.attr('checked', true);
+			}
+			if ( /dependent=yes/.test(m[3]) ) {
+				this.src.popup.dependent.attr('checked', true);
+			}
+			if ((_m = m[3].match(/width=([^,]+)/))) {
+				this.src.popup.width.val(_m[1]);
+			}
+			if ((_m = m[3].match(/height=([^,]+)/))) {
+				this.src.popup.height.val(_m[1]);
+			}
+			if ((_m = m[3].match(/left=([^,]+)/))) {
+				this.src.popup.left.val(_m[1]);
+			}
+			if ((_m = m[3].match(/top=([^,]+)/))) {
+				this.src.popup.top.val(_m[1]);
+			}
+			if (m[4]) {
+				this.src.popup.retfalse.attr('checked', true);
+			}
+		} else {
+			$.each(this.src.popup, function() {
+				var $this = $(this);
+				if ($this.attr('type') == 'text') {
+					$this.val($this.attr('name') == 'url' ? 'http://' : '');
+				} else {
+					if ($this.attr('name') == 'retfalse') {
+						this.attr('checked', true);
+					} else {
+						$this.removeAttr('checked');
+					}
+				}
+			});
+		}
+
+	}
+
+	this.updateOnclick = function () {
+		var url = this.src.popup.url.val();
+		if (this.src.popup.use.attr('checked') && url) {
+			var params = '';
+			if (this.src.popup.location.attr('checked')) {
+				params += 'location=yes,';
+			}
+			if (this.src.popup.menubar.attr('checked')) {
+				params += 'menubar=yes,';
+			}
+			if (this.src.popup.toolbar.attr('checked')) {
+				params += 'toolbar=yes,';
+			}
+			if (this.src.popup.scrollbars.attr('checked')) {
+				params += 'scrollbars=yes,';
+			}
+			if (this.src.popup.status.attr('checked')) {
+				params += 'status=yes,';
+			}
+			if (this.src.popup.resizable.attr('checked')) {
+				params += 'resizable=yes,';
+			}
+			if (this.src.popup.dependent.attr('checked')) {
+				params += 'dependent=yes,';
+			}
+			if (this.src.popup.width.val()) {
+				params += 'width='+this.src.popup.width.val()+',';
+			}
+			if (this.src.popup.height.val()) {
+				params += 'height='+this.src.popup.height.val()+',';
+			}
+			if (this.src.popup.left.val()) {
+				params += 'left='+this.src.popup.left.val()+',';
+			}
+			if (this.src.popup.top.val()) {
+				params += 'top='+this.src.popup.top.val()+',';
+			}
+			if (params.length>0) {
+				params = params.substring(0, params.length-1)
+			}
+			var retfalse = this.src.popup.retfalse.attr('checked') ? 'return false;' : '';
+			var onclick = 'window.open("'+url+'", "'+$.trim(this.src.popup.name.val())+'", "'+params+'");'+retfalse;
+			this.src.events.onclick.val(onclick);
+			if (!this.src.main.href.val()) {
+				this.src.main.href.val('#');
+			}
+		} else {
+			var v = this.src.events.onclick.val();
+			v = v.replace(/window\.open\([^\)]+\)\s*;?\s*return\s*false\s*;?/i, '');
+			this.src.events.onclick.val(v);
+		}
+	}
+
+	this.set = function() {
+		var href, fakeURL;
+		this.updateOnclick();
+		this.rte.selection.restoreIERange();
+		this.rte.history.add();
+		href = this.rte.utils.absoluteURL(this.src.main.href.val());
+		if (!href) {
+			// this.link.parentNode && this.rte.doc.execCommand('unlink', false, null);
+			var bm = this.rte.selection.getBookmark();
+			this.rte.dom.unwrap(this.link[0]);
+			this.rte.selection.moveToBookmark(bm)
+		} else {
+			if (!this.link[0].parentNode) {
+				if (this.img && this.img.parentNode) {
+					this.link = $(this.rte.dom.create('a')).attr('href', href);
+					this.rte.dom.wrap(this.img, this.link[0]);
+				} else {
+					fakeURL = '#--el-editor---'+Math.random();
+					this.rte.doc.execCommand('createLink', false, fakeURL);
+					this.link = $('a[href="'+fakeURL+'"]', this.rte.doc);
+					this.link.each(function() {
+						var $this = $(this);
+						// удаляем ссылки вокруг пустых элементов
+						if (!$.trim($this.html()) && !$.trim($this.text())) {
+							$this.replaceWith($this.text()); //  сохраняем пробелы :)
+						}
+					});
+				}
+			}
+
+			this.src.main.href.val(href);
+			for (var tab in this.src) {
+				if (tab != 'popup') {
+					for (var n in this.src[tab]) {
+						if (n != 'anchors') {
+							var v = $.trim(this.src[tab][n].val());
+							if (v) {
+								this.link.attr(n, v);
+							} else {
+								this.link.removeAttr(n);
+							}
+						}
+					}
+				}
+			};
+			this.img && this.rte.selection.select(this.img);
+		}
+		this.rte.ui.update(true);
+	}
+
+}
+
+})(jQuery);
+/**
+ * @class button - insert non breakable space
+ * Если выделение схлопнуто и находится внутри div'a - он удаляется
+ * Новые div'ы создаются только из несхлопнутого выделения
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.nbsp = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+
+	this.command = function() {
+		this.rte.history.add();
+		this.rte.selection.insertHtml('&nbsp;', true);
+		this.rte.window.focus();
+		this.rte.ui.update();
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+	}
+}
+})(jQuery);
+
+/**
+ * @class button - outdent text
+ * уменьшает padding/margin/самомнение ;)
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ * @todo decrease lists nesting level!
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.outdent = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+
+	this.command = function() {
+		var v = this.find();
+		if (v.node) {
+			this.rte.history.add();
+			$(v.node).css(v.type, (v.val>40 ? v.val-40 : 0)+'px');
+			this.rte.ui.update();
+		}
+	}
+
+	this.find = function(n) {
+		function checkNode(n) {
+			var ret = {type : '', val : 0};
+			var s;
+			if ((s = self.rte.dom.attr(n, 'style'))) {
+				ret.type = s.indexOf('padding-left') != -1
+					? 'padding-left'
+					: (s.indexOf('margin-left') != -1 ? 'margin-left' : '');
+				ret.val = ret.type ? parseInt($(n).css(ret.type))||0 : 0;
+			}
+			return ret;
+		}
+
+		var n = this.rte.selection.getNode();
+		var ret = checkNode(n);
+		if (ret.val) {
+			ret.node = n;
+		} else {
+			$.each(this.rte.dom.parents(n, '*'), function() {
+				ret = checkNode(this);
+				if (ret.val) {
+					ret.node = this;
+					return ret;
+				}
+			})
+		}
+		return ret;
+	}
+
+	this.update = function() {
+		var v = this.find();
+		if (v.node) {
+			this.domElem.removeClass('disabled');
+		} else {
+			this.domElem.addClass('disabled');
+		}
+	}
+
+
+}
+
+})(jQuery);
+(function($) {
+	elRTE.prototype.ui.prototype.buttons.pagebreak = function(rte, name) {
+		this.constructor.prototype.constructor.call(this, rte, name);
+
+		// prevent resize
+		$(this.rte.doc.body).bind('mousedown', function(e) {
+			if ($(e.target).hasClass('elrte-pagebreak')) {
+				e.preventDefault();
+			}
+		})
+
+		this.command = function() {
+			this.rte.selection.insertHtml('<img src="'+this.rte.filter.url+'pixel.gif" class="elrte-protected elrte-pagebreak"/>', false);
+		}
+
+		this.update = function() {
+			this.domElem.removeClass('disabled');
+		}
+	}
+
+})(jQuery);/**
+ * @class button - insert formatted text (open dialog window)
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.pasteformattext = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	this.iframe = $(document.createElement('iframe')).addClass('el-rte-paste-input');
+	this.doc    = null;
+	var self    = this;
+
+	this.command = function() {
+		this.rte.selection.saveIERange();
+		var self = this,
+			opts = {
+			submit : function(e, d) {
+				e.stopPropagation();
+				e.preventDefault();
+				self.paste();
+				d.close();
+			},
+			dialog : {
+				width : 500,
+				title : this.rte.i18n('Paste formatted text')
+			}
+		},
+		d = new elDialogForm(opts);
+		d.append(this.iframe).open();
+		this.doc = this.iframe.get(0).contentWindow.document;
+		html = this.rte.options.doctype
+			+'<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+		html += '</head><body> <br /> </body></html>';
+
+		this.doc.open();
+		this.doc.write(html);
+		this.doc.close();
+
+		if (!this.rte.browser.msie) {
+			try { this.doc.designMode = "on"; }
+			catch(e) { }
+		} else {
+			this.doc.body.contentEditable = true;
+		}
+		setTimeout(function() { self.iframe[0].contentWindow.focus(); }, 50);
+	}
+
+	this.paste = function() {
+		$(this.doc.body).find('[class]').removeAttr('class');
+		var html = $.trim($(this.doc.body).html());
+		if (html) {
+			this.rte.history.add();
+			this.rte.selection.restoreIERange();
+			this.rte.selection.insertHtml(this.rte.filter.wysiwyg2wysiwyg(this.rte.filter.proccess('paste', html)));
+			this.rte.ui.update(true);
+		}
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+	}
+}
+})(jQuery);
+
+/**
+ * @class кнопка "вставить только текст"
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.pastetext = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	this.input = $('<textarea />').addClass('el-rte-paste-input');
+	var self   = this;
+
+	this.command = function() {
+		this.rte.browser.msie && this.rte.selection.saveIERange();
+		var opts = {
+			submit : function(e, d) {
+				e.stopPropagation();
+				e.preventDefault();
+				self.paste();
+				d.close();
+			},
+			dialog : {
+				width : 500,
+				title : this.rte.i18n('Paste only text')
+			}
+		}
+		var d = new elDialogForm(opts);
+		d.append(this.input).open();
+	}
+
+	this.paste = function() {
+		var txt = $.trim(this.input.val());
+		if (txt) {
+			this.rte.history.add();
+			this.rte.browser.msie && this.rte.selection.restoreIERange();
+			this.rte.selection.insertText(txt.replace(/\r?\n/g, '<br />'), true);
+			this.rte.ui.update(true);
+		}
+		this.input.val('');
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+	}
+
+}
+})(jQuery);
+/**
+ * @class button - save editor content (submit form)
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.save = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	this.active = true;
+
+	this.command = function() {
+		this.rte.save();
+	}
+
+	this.update = function() { }
+}
+})(jQuery);
+/**
+ * @class button - insert smiley (open dialog window)
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    eSabbath
+ *
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.smiley = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+	this.img = null;
+	this.url = this.rte.filter.url+'smileys/';
+	this.smileys = {
+		'smile' : 'smile.png',
+		'happy' : 'happy.png',
+		'tongue' : 'tongue.png',
+		'surprised' : 'surprised.png',
+		'waii' : 'waii.png',
+		'wink' : 'wink.png',
+		'evilgrin' : 'evilgrin.png',
+		'grin' : 'grin.png',
+
+
+		'unhappy' : 'unhappy.png'
+	};
+	this.width = 120;
+
+	this.command = function() {
+		var self = this, url = this.url, d, opts, img;
+
+		this.rte.browser.msie && this.rte.selection.saveIERange();
+
+		opts = {
+			dialog : {
+				height  : 120,
+				width   : this.width,
+				title   : this.rte.i18n('Smiley'),
+				buttons : {}
+			}
+		}
+		d = new elDialogForm(opts);
+		$.each(this.smileys, function(name, img) {
+			d.append($('<img src="'+url+img+'" title="'+name+'" id="'+name+'" class="el-rte-smiley"/>').click(function() { self.set(this.id, d);	}));
+		});
+		d.open();
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+		this.domElem.removeClass('active');
+	}
+
+	this.set = function(s, d) {
+		this.rte.browser.msie && this.rte.selection.restoreIERange();
+		if (this.smileys[s]) {
+			this.img = $(this.rte.doc.createElement('img'));
+			this.img.attr({
+				src    : this.url + this.smileys[s],
+				title  : s,
+				alt    : s
+			});
+			this.rte.selection.insertNode(this.img.get(0));
+			this.rte.ui.update();
+		}
+		d.close();
+	}
+}
+})(jQuery);
+/**
+ * @class button - stops elements floating. Insert div with style="clear:all"
+ * Если выделение схлопнуто и находится внутри div'a с аттрибутом или css clear - он удаляется
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.stopfloat = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+
+	this.find = function() {
+		if (this.rte.selection.collapsed()) {
+			var n = this.rte.dom.selfOrParent(this.rte.selection.getEnd(), /^DIV$/);
+			if (n && (this.rte.dom.attr(n, 'clear') || $(n).css('clear') != 'none')) {
+				return n;
+			}
+		}
+	}
+
+	this.command = function() {
+		var n;
+		if ((n = this.find())) {
+			var n = $(n);
+			this.rte.history.add();
+			if (!n.children().length && !$.trim(n.text()).length) {
+				n.remove();
+			} else {
+				n.removeAttr('clear').css('clear', '');
+			}
+		} else {
+			this.rte.history.add();
+			this.rte.selection.insertNode($(this.rte.dom.create('div')).css('clear', 'both').get(0), true);
+		}
+		this.rte.ui.update(true);
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+		if (this.find()) {
+			this.domElem.addClass('active');
+		} else {
+			this.domElem.removeClass('active');
+		}
+	}
+}
+
+})(jQuery);/**
+ * @class button - create/edit table (open dialog window)
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * Copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.table = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self    = this;
+	this.src    = null;
+	this.labels = null;
+
+	function init() {
+		self.labels = {
+			main      : 'Properies',
+			adv       : 'Advanced',
+			events    : 'Events',
+			id        : 'ID',
+			'class'   : 'Css class',
+			style     : 'Css style',
+			dir       : 'Script direction',
+			summary   : 'Summary',
+			lang      : 'Language',
+			href      : 'URL'
+		}
+
+		self.src = {
+			main : {
+				caption : $('<input type="text" />'),
+				rows    : $('<input type="text" />').attr('size', 5).val(2),
+				cols    : $('<input type="text" />').attr('size', 5).val(2),
+				width   : $('<input type="text" />').attr('size', 5),
+				wunit   : $('<select />')
+							.append($('<option />').val('%').text('%'))
+							.append($('<option />').val('px').text('px')),
+				height  : $('<input type="text" />').attr('size', 5),
+				hunit   : $('<select />')
+							.append($('<option />').val('%').text('%'))
+							.append($('<option />').val('px').text('px')),
+				align   : $('<select />')
+							.append($('<option />').val('').text(self.rte.i18n('Not set')))
+							.append($('<option />').val('left').text(self.rte.i18n('Left')))
+							.append($('<option />').val('center').text(self.rte.i18n('Center')))
+							.append($('<option />').val('right').text(self.rte.i18n('Right'))),
+				spacing : $('<input type="text" />').attr('size', 5),
+				padding : $('<input type="text" />').attr('size', 5),
+				border  : $('<div />'),
+				// frame   : $('<select />')
+				// 			.append($('<option />').val('void').text(self.rte.i18n('No')))
+				// 			.append($('<option />').val('border').text(self.rte.i18n('Yes'))),
+				rules   : $('<select />')
+							.append($('<option />').val('none').text(self.rte.i18n('No')))
+							.append($('<option />').val('all').text(self.rte.i18n('Cells')))
+							.append($('<option />').val('groups').text(self.rte.i18n('Groups')))
+							.append($('<option />').val('rows').text(self.rte.i18n('Rows')))
+							.append($('<option />').val('cols').text(self.rte.i18n('Columns'))),
+				margin  : $('<div />'),
+				bg      : $('<div />'),
+				bgimg   : $('<input type="text" />').css('width', '90%')
+			},
+
+			adv : {
+				id        : $('<input type="text" />'),
+				summary   : $('<input type="text" />'),
+				'class'   : $('<input type="text" />'),
+				style     : $('<input type="text" />'),
+				dir       : $('<select />')
+								.append($('<option />').text(self.rte.i18n('Not set')).val(''))
+								.append($('<option />').text(self.rte.i18n('Left to right')).val('ltr'))
+								.append($('<option />').text(self.rte.i18n('Right to left')).val('rtl')),
+				lang      : $('<input type="text" />')
+			},
+
+			events : {}
+		}
+
+		$.each(self.src, function() {
+			for (var n in this) {
+				this[n].attr('name', n);
+				var t = this[n].get(0).nodeName;
+				if (t == 'INPUT' && n != 'bgimg') {
+					this[n].css(this[n].attr('size') ? {'text-align' : 'right'} : {width : '100%'});
+				} else if (t == 'SELECT' && n!='wunit' && n!='hunit') {
+					this[n].css('width', '100%');
+				}
+			}
+		});
+
+		$.each(
+			['onblur', 'onfocus', 'onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmouseout', 'onmouseleave', 'onkeydown', 'onkeypress', 'onkeyup'],
+			function() {
+				self.src.events[this] = $('<input type="text" />').attr('name', this).css('width', '100%');
+		});
+
+		self.src.main.align.change(function() {
+			var v = $(this).val();
+			if (v == 'center') {
+				self.src.main.margin.val({left : 'auto', right : 'auto'});
+			} else {
+				var m = self.src.main.margin.val();
+				if (m.left == 'auto' && m.right == 'auto') {
+					self.src.main.margin.val({left : '', right : ''});
+				}
+			}
+		});
+
+		self.src.main.bgimg.change(function() {
+			var t = $(this);
+			t.val(self.rte.utils.absoluteURL(t.val()));
+		})
+
+	}
+
+	this.command = function() {
+		var n = this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^TABLE$/);
+
+		if (this.name == 'table') {
+			this.table = $(this.rte.doc.createElement('table'));
+		} else {
+			this.table = n ? $(n) : $(this.rte.doc.createElement('table'));
+		}
+
+		!this.src && init();
+		this.src.main.border.elBorderSelect({styleHeight : 117});
+		this.src.main.bg.elColorPicker({palettePosition : 'outer', 'class' : 'el-colorpicker ui-icon ui-icon-pencil'});
+		this.src.main.margin.elPaddingInput({ type : 'margin', value : this.table});
+
+		if (this.table.parents().length) {
+			this.src.main.rows.val('').attr('disabled', true);
+			this.src.main.cols.val('').attr('disabled', true);
+		} else {
+			this.src.main.rows.val(2).removeAttr('disabled');
+			this.src.main.cols.val(2).removeAttr('disabled');
+		}
+
+		var w = this.table.css('width') || this.table.attr('width');
+		this.src.main.width.val(parseInt(w)||'');
+		this.src.main.wunit.val(w.indexOf('px') != -1 ? 'px' : '%');
+
+		var h = this.table.css('height') || this.table.attr('height');
+		this.src.main.height.val(parseInt(h)||'');
+		this.src.main.hunit.val(h && h.indexOf('px') != -1 ? 'px' : '%');
+
+		var f = this.table.css('float');
+		this.src.main.align.val('');
+		if (f == 'left' || f == 'right') {
+			this.src.main.align.val(f);
+		} else {
+			var ml = this.table.css('margin-left');
+			var mr = this.table.css('margin-right');
+			if (ml == 'auto' && mr == 'auto') {
+				this.src.main.align.val('center');
+			}
+		}
+
+		this.src.main.border.val(this.table);
+		//this.src.main.frame.val(this.table.attr('frame'));
+		this.src.main.rules.val(this.rte.dom.attr(this.table.get(0), 'rules'));
+
+		this.src.main.bg.val(this.table.css('background-color'));
+		var bgimg = (this.table.css('background-image')||'').replace(/url\(([^\)]+)\)/i, "$1");
+		this.src.main.bgimg.val(bgimg!='none' ? bgimg : '');
+
+		var opts = {
+			rtl : this.rte.rtl,
+			submit : function(e, d) { e.stopPropagation(); e.preventDefault(); self.set(); d.close(); },
+			dialog : {
+				width : 530,
+				title : this.rte.i18n('Table')
+			}
+		}
+		var d = new elDialogForm(opts);
+
+		for (var tab in this.src) {
+			d.tab(tab, this.rte.i18n(this.labels[tab]));
+			if (tab == 'main') {
+				var t1 = $('<table />')
+					.append($('<tr />').append('<td>'+this.rte.i18n('Rows')+'</td>').append($('<td />').append(this.src.main.rows)))
+					.append($('<tr />').append('<td>'+this.rte.i18n('Columns')+'</td>').append($('<td />').append(this.src.main.cols)));
+				var t2 = $('<table />')
+					.append($('<tr />').append('<td>'+this.rte.i18n('Width')+'</td>').append($('<td />').append(this.src.main.width).append(this.src.main.wunit)))
+					.append($('<tr />').append('<td>'+this.rte.i18n('Height')+'</td>').append($('<td />').append(this.src.main.height).append(this.src.main.hunit)));
+				var t3 = $('<table />')
+					.append($('<tr />').append('<td>'+this.rte.i18n('Spacing')+'</td>').append($('<td />').append(this.src.main.spacing.val(this.table.attr('cellspacing')||''))))
+					.append($('<tr />').append('<td>'+this.rte.i18n('Padding')+'</td>').append($('<td />').append(this.src.main.padding.val(this.table.attr('cellpadding')||''))));
+
+				d.append([this.rte.i18n('Caption'), this.src.main.caption.val(this.table.find('caption').eq(0).text() || '')], 'main', true)
+					.separator('main')
+					.append([t1, t2, t3], 'main', true)
+					.separator('main')
+					.append([this.rte.i18n('Border'),        this.src.main.border], 'main', true)
+					//.append([this.rte.i18n('Frame'),       this.src.main.frame], 'main', true)
+					.append([this.rte.i18n('Inner borders'), this.src.main.rules], 'main', true)
+					.append([this.rte.i18n('Alignment'),     this.src.main.align], 'main', true)
+					.append([this.rte.i18n('Margins'),       this.src.main.margin], 'main', true)
+					.append([this.rte.i18n('Background'),    $('<span />').append($('<span />').css({'float' : 'left', 'margin-right' : '3px'}).append(this.src.main.bg)).append(this.src.main.bgimg)], 'main', true)
+			} else {
+				for (var name in this.src[tab]) {
+					var v = this.rte.dom.attr(this.table, name);
+					if (tab == 'events') {
+						v = this.rte.utils.trimEventCallback(v);
+					}
+					d.append([this.rte.i18n(this.labels[name] ? this.labels[name] : name), this.src[tab][name].val(v)], tab, true);
+				}
+			}
+		}
+
+		d.open();
+	}
+
+	this.set = function() {
+
+		if (!this.table.parents().length) {
+			var r = parseInt(this.src.main.rows.val()) || 0;
+			var c = parseInt(this.src.main.cols.val()) || 0;
+			if (r<=0 || c<=0) {
+				return;
+			}
+			this.rte.history.add();
+			var b = $(this.rte.doc.createElement('tbody')).appendTo(this.table);
+
+			for (var i=0; i < r; i++) {
+				var tr = '<tr>';
+				for (var j=0; j < c; j++) {
+					tr += '<td>&nbsp;</td>';
+				}
+				b.append(tr+'</tr>');
+			};
+
+			// var tr = $(this.rte.doc.createElement('tr'));
+			//
+			// for (var i=0; i < c; i++) {
+			// 	tr.append($(this.rte.doc.createElement('td')).html('&nbsp;'));
+			// };
+			//
+			// for (var i=0; i<r; i++) {
+			// 	b.append(tr.clone(true));
+			// };
+
+			// this.rte.selection.insertNode(this.table.get(0), true);
+		} else {
+			this.table
+				.removeAttr('width')
+				.removeAttr('height')
+				.removeAttr('border')
+				.removeAttr('align')
+				.removeAttr('bordercolor')
+				.removeAttr('bgcolor')
+				.removeAttr('cellspacing')
+				.removeAttr('cellpadding')
+				.removeAttr('frame')
+				.removeAttr('rules')
+				.removeAttr('style');
+		}
+
+		var cap = $.trim(this.src.main.caption.val());
+		if (cap) {
+			if (!this.table.children('caption').length) {
+				this.table.prepend('<caption />' );
+			}
+			this.table.children('caption').text(cap);
+		} else {
+			this.table.children('caption').remove();
+		}
+
+
+		for (var tab in this.src) {
+			if (tab != 'main') {
+				for (var n in this.src[tab]) {
+					var v = $.trim(this.src[tab][n].val());
+					if (v) {
+						this.table.attr(n, v);
+					} else {
+						this.table.removeAttr(n);
+					}
+				}
+			}
+		}
+		var spacing, padding, rules;
+
+		if ((spacing = parseInt(this.src.main.spacing.val())) && spacing>=0) {
+			this.table.attr('cellspacing', spacing);
+		}
+
+		if ((padding = parseInt(this.src.main.padding.val())) && padding>=0) {
+			this.table.attr('cellpadding', padding);
+		}
+
+		if ((rules = this.src.main.rules.val())) {
+			this.table.attr('rules', rules);
+		}
+
+		var
+			w = parseInt(this.src.main.width.val()) || '',
+			h = parseInt(this.src.main.height.val()) || '',
+			i = $.trim(this.src.main.bgimg.val()),
+			b = this.src.main.border.val(),
+			m = this.src.main.margin.val(),
+			f = this.src.main.align.val();
+		this.table.css({
+			width              : w ? w+this.src.main.wunit.val() : '',
+			height             : h ? h+this.src.main.hunit.val() : '',
+			border             : $.trim(b.width+' '+b.style+' '+b.color),
+			'background-color' : this.src.main.bg.val(),
+			'background-image' : i ? 'url('+i+')' : ''
+		});
+		if (m.css) {
+			this.table.css('margin', m.css);
+		} else {
+			this.table.css({
+				'margin-top'    : m.top,
+				'margin-right'  : m.right,
+				'margin-bottom' : m.bottom,
+				'margin-left'   : m.left
+			});
+		}
+		if ((f=='left' || f=='right') && this.table.css('margin-left')!='auto'  && this.table.css('margin-right')!='auto') {
+			this.table.css('float', f);
+		}
+		if (!this.table.attr('style')) {
+			this.table.removeAttr('style');
+		}
+		if (!this.table.parents().length) {
+			this.rte.selection.insertNode(this.table.get(0), true);
+		}
+		this.rte.ui.update();
+	}
+
+	this.update = function() {
+		this.domElem.removeClass('disabled');
+		if (this.name == 'tableprops' && !this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^TABLE$/)) {
+			this.domElem.addClass('disabled').removeClass('active');
+		}
+	}
+
+}
+
+elRTE.prototype.ui.prototype.buttons.tableprops = elRTE.prototype.ui.prototype.buttons.table;
+
+})(jQuery);
+
+/**
+ * @class button - remove table
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.tablerm = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+
+	this.command = function() {
+		var t = this.rte.dom.parent(this.rte.selection.getNode(), /^TABLE$/);
+		// t && $(t).remove();
+		if (t) {
+			this.rte.history.add();
+			$(t).remove();
+		}
+		this.rte.ui.update(true);
+	}
+
+	this.update = function() {
+		if (this.rte.dom.parent(this.rte.selection.getNode(), /^TABLE$/)) {
+			this.domElem.removeClass('disabled');
+		} else {
+			this.domElem.addClass('disabled');
+		}
+	}
+}
+})(jQuery);
+/**
+ * @class button - table cell properties
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.tbcellprops = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+	this.src = null;
+	this.labels = null;
+
+	function init() {
+		self.labels = {
+			main    : 'Properies',
+			adv     : 'Advanced',
+			events  : 'Events',
+			id      : 'ID',
+			'class' : 'Css class',
+			style   : 'Css style',
+			dir     : 'Script direction',
+			lang    : 'Language'
+		}
+
+		self.src = {
+			main : {
+				type    : $('<select />').css('width', '100%')
+							.append($('<option />').val('td').text(self.rte.i18n('Data')))
+							.append($('<option />').val('th').text(self.rte.i18n('Header'))),
+				width   : $('<input type="text" />').attr('size', 4),
+				wunit   : $('<select />')
+							.append($('<option />').val('%').text('%'))
+							.append($('<option />').val('px').text('px')),
+				height  : $('<input type="text" />').attr('size', 4),
+				hunit   : $('<select />')
+							.append($('<option />').val('%').text('%'))
+							.append($('<option />').val('px').text('px')),
+				align   : $('<select />').css('width', '100%')
+							.append($('<option />').val('').text(self.rte.i18n('Not set')))
+							.append($('<option />').val('left').text(self.rte.i18n('Left')))
+							.append($('<option />').val('center').text(self.rte.i18n('Center')))
+							.append($('<option />').val('right').text(self.rte.i18n('Right')))
+							.append($('<option />').val('justify').text(self.rte.i18n('Justify'))),
+				border  : $('<div />'),
+				padding  : $('<div />'),
+				bg      : $('<div />'),
+				bgimg   : $('<input type="text" />').css('width', '90%'),
+				apply   : $('<select />').css('width', '100%')
+							.append($('<option />').val('').text(self.rte.i18n('Current cell')))
+							.append($('<option />').val('row').text(self.rte.i18n('All cells in row')))
+							.append($('<option />').val('column').text(self.rte.i18n('All cells in column')))
+							.append($('<option />').val('table').text(self.rte.i18n('All cells in table')))
+			},
+
+			adv : {
+				id        : $('<input type="text" />'),
+				'class'   : $('<input type="text" />'),
+				style     : $('<input type="text" />'),
+				dir       : $('<select />').css('width', '100%')
+								.append($('<option />').text(self.rte.i18n('Not set')).val(''))
+								.append($('<option />').text(self.rte.i18n('Left to right')).val('ltr'))
+								.append($('<option />').text(self.rte.i18n('Right to left')).val('rtl')),
+				lang      : $('<input type="text" />')
+			},
+
+			events : {}
+		}
+
+		$.each(self.src, function() {
+			for (var n in this) {
+				this[n].attr('name', n);
+				if (this[n].attr('type') == 'text' && !this[n].attr('size') && n!='bgimg') {
+					this[n].css('width', '100%')
+				}
+			}
+		});
+
+		$.each(
+			['onblur', 'onfocus', 'onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmouseout', 'onmouseleave', 'onkeydown', 'onkeypress', 'onkeyup'],
+			function() {
+				self.src.events[this] = $('<input type="text" />').attr('name', this).css('width', '100%');
+		});
+
+	}
+
+	this.command = function() {
+		!this.src && init();
+		this.cell = this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^(TD|TH)$/);
+		if (!this.cell) {
+			return;
+		}
+		this.src.main.type.val(this.cell.nodeName.toLowerCase());
+		this.cell = $(this.cell);
+		this.src.main.border.elBorderSelect({styleHeight : 117, value : this.cell});
+		this.src.main.bg.elColorPicker({palettePosition : 'outer', 'class' : 'el-colorpicker ui-icon ui-icon-pencil'});
+		this.src.main.padding.elPaddingInput({ value : this.cell});
+
+		var w = this.cell.css('width') || this.cell.attr('width');
+		this.src.main.width.val(parseInt(w)||'');
+		this.src.main.wunit.val(w.indexOf('px') != -1 ? 'px' : '%');
+
+		var h = this.cell.css('height') || this.cell.attr('height');
+		this.src.main.height.val(parseInt(h)||'');
+		this.src.main.hunit.val(h.indexOf('px') != -1 ? 'px' : '%');
+
+		this.src.main.align.val(this.cell.attr('align') || this.cell.css('text-align'));
+		this.src.main.bg.val(this.cell.css('background-color'));
+		var bgimg = this.cell.css('background-image');
+		this.src.main.bgimg.val(bgimg && bgimg!='none' ? bgimg.replace(/url\(([^\)]+)\)/i, "$1") : '');
+		this.src.main.apply.val('');
+
+		var opts = {
+			rtl : this.rte.rtl,
+			submit : function(e, d) { e.stopPropagation(); e.preventDefault(); self.set(); d.close(); },
+			dialog : {
+				width : 520,
+				title : this.rte.i18n('Table cell properties')
+			}
+		}
+		var d = new elDialogForm(opts);
+		for (var tab in this.src) {
+			d.tab(tab, this.rte.i18n(this.labels[tab]));
+
+			if (tab == 'main') {
+				d.append([this.rte.i18n('Width'),              $('<span />').append(this.src.main.width).append(this.src.main.wunit)],  'main', true)
+					.append([this.rte.i18n('Height'),          $('<span />').append(this.src.main.height).append(this.src.main.hunit)], 'main', true)
+					.append([this.rte.i18n('Table cell type'), this.src.main.type],    'main', true)
+					.append([this.rte.i18n('Border'),          this.src.main.border],  'main', true)
+					.append([this.rte.i18n('Alignment'),       this.src.main.align],   'main', true)
+					.append([this.rte.i18n('Paddings'),        this.src.main.padding], 'main', true)
+					.append([this.rte.i18n('Background'),      $('<span />').append($('<span />').css({'float' : 'left', 'margin-right' : '3px'}).append(this.src.main.bg)).append(this.src.main.bgimg)],  'main', true)
+					.append([this.rte.i18n('Apply to'),        this.src.main.apply],   'main', true);
+			} else {
+				for (var name in this.src[tab]) {
+					var v = this.cell.attr(name) || '';
+					if (tab == 'events') {
+						v = this.rte.utils.trimEventCallback(v);
+					}
+					d.append([this.rte.i18n(this.labels[name] ? this.labels[name] : name), this.src[tab][name].val(v)], tab, true);
+				}
+			}
+		}
+		d.open()
+	}
+
+	this.set = function() {
+		// $(t).remove();
+		var target = this.cell,
+			apply  = this.src.main.apply.val();
+		switch (this.src.main.apply.val()) {
+			case 'row':
+				target = this.cell.parent('tr').children('td,th');
+				break;
+
+			case 'column':
+				target = $(this.rte.dom.tableColumn(this.cell.get(0)));
+				break;
+
+			case 'table':
+				target = this.cell.parents('table').find('td,th');
+				break;
+		}
+
+		for (var tab in this.src) {
+			if (tab != 'main') {
+				for (var n in this.src[tab]) {
+					var v = $.trim(this.src[tab][n].val());
+					if (v) {
+						target.attr(n, v);
+					} else {
+						target.removeAttr(n);
+					}
+				}
+			}
+		}
+
+		target.removeAttr('width')
+			.removeAttr('height')
+			.removeAttr('border')
+			.removeAttr('align')
+			.removeAttr('bordercolor')
+			.removeAttr('bgcolor');
+
+		var t = this.src.main.type.val();
+		var w = parseInt(this.src.main.width.val()) || '';
+		var h = parseInt(this.src.main.height.val()) || '';
+		var i = $.trim(this.src.main.bgimg.val());
+		var b = this.src.main.border.val();
+		var css = {
+			'width'            : w ? w+this.src.main.wunit.val() : '',
+			'height'           : h ? h+this.src.main.hunit.val() : '',
+			'background-color' : this.src.main.bg.val(),
+			'background-image' : i ? 'url('+i+')' : '',
+			'border'           : $.trim(b.width+' '+b.style+' '+b.color),
+			'text-align'       : this.src.main.align.val() || ''
+		};
+		var p = this.src.main.padding.val();
+		if (p.css) {
+			css.padding = p.css;
+		} else {
+			css['padding-top']    = p.top;
+			css['padding-right']  = p.right;
+			css['padding-bottom'] = p.bottom;
+			css['padding-left']   = p.left;
+		}
+
+		target = target.get();
+
+		$.each(target, function() {
+			var type = this.nodeName.toLowerCase();
+			var $this = $(this);
+			if (type != t) {
+
+				var attr = {}
+				for (var i in self.src.adv) {
+					var v = $this.attr(i)
+					if (v) {
+						attr[i] = v.toString();
+					}
+				}
+				for (var i in self.src.events) {
+					var v = $this.attr(i)
+					if (v) {
+						attr[i] = v.toString();
+					}
+				}
+				var colspan = $this.attr('colspan')||1;
+				var rowspan = $this.attr('rowspan')||1;
+				if (colspan>1) {
+					attr.colspan = colspan;
+				}
+				if (rowspan>1) {
+					attr.rowspan = rowspan;
+				}
+
+				$this.replaceWith($('<'+t+' />').html($this.html()).attr(attr).css(css) );
+
+			} else {
+				$this.css(css);
+			}
+		});
+
+		this.rte.ui.update();
+	}
+
+	this.update = function() {
+		if (this.rte.dom.parent(this.rte.selection.getNode(), /^TABLE$/)) {
+			this.domElem.removeClass('disabled');
+		} else {
+			this.domElem.addClass('disabled');
+		}
+	}
+
+}
+
+})(jQuery);/**
+ * @class button - table cells merge
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.tbcellsmerge = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+
+	function selectedCells() {
+		var c1 = self.rte.dom.selfOrParent(self.rte.selection.getStart(), /^(TD|TH)$/);
+		var c2 = self.rte.dom.selfOrParent(self.rte.selection.getEnd(), /^(TD|TH)$/);
+		if (c1 && c2 && c1!=c2 && $(c1).parents('table').get(0) == $(c2).parents('table').get(0)) {
+			return [c1, c2];
+		}
+		return null;
+	}
+
+	this.command = function() {
+		var cells = selectedCells();
+
+		if (cells) {
+
+			var _s  = this.rte.dom.indexOf($(cells[0]).parent('tr').get(0));
+			var _e  = this.rte.dom.indexOf($(cells[1]).parent('tr').get(0));
+			var ro  = Math.min(_s, _e); // row offset
+			var rl  = Math.max(_s, _e) - ro + 1; // row length
+			var _c1 = this.rte.dom.tableColumn(cells[0], true, true);
+			var _c2 = this.rte.dom.tableColumn(cells[1], true);
+			var _i1 = $.inArray(cells[0], _c1.column);
+			var _i2 = $.inArray(cells[1], _c2.column);
+
+			var colBegin = _c1.info.offset[_i1] < _c2.info.offset[_i2]  ? _c1 : _c2;
+			var colEnd   = _c1.info.offset[_i1] >= _c2.info.offset[_i2] ? _c1 : _c2;
+			var length   = 0;
+			var target   = null;
+			var html     = '';
+			this.rte.history.add();
+			var rows = $($(cells[0]).parents('table').eq(0).find('tr').get().slice(ro, ro+rl))
+				.each( function(i) {
+					var _l = html.length;
+					var accept = false;
+					$(this).children('td,th').each(function() {
+						var $this   = $(this);
+						var inBegin = $.inArray(this, colBegin.column);
+						var inEnd   = $.inArray(this, colEnd.column);
+
+						if (inBegin!=-1 || inEnd!=-1) {
+							accept = inBegin!=-1 && inEnd==-1;
+							var len = parseInt($this.attr('colspan')||1)
+							if (i == 0) {
+								length += len;
+							}
+
+							if (inBegin!=-1 && i>0) {
+								var delta = colBegin.info.delta[inBegin];
+								if (delta>0) {
+									if ($this.css('text-align') == 'left') {
+										var cell = $this.clone(true);
+										$this.html('&nbsp;');
+									} else {
+										var cell = $this.clone().html('&nbsp;');
+									}
+									cell.removeAttr('colspan').removeAttr('id').insertBefore(this);
+									if (delta>1) {
+										cell.attr('colspan', delta);
+									}
+								}
+							}
+
+							if (inEnd!=-1) {
+								var delta = colEnd.info.delta[inEnd];
+								if (len-delta>1) {
+									var cp = len-delta-1;
+									if ($this.css('text-align') == 'right') {
+										var cell = $this.clone(true);
+										$this.html('&nbsp;');
+									} else {
+										var cell = $this.clone().html('&nbsp;');
+									}
+									cell.removeAttr('colspan').removeAttr('id').insertAfter(this);
+									if (cp>1) {
+										cell.attr('colspan', cp);
+									}
+								}
+							}
+							if (!target) {
+								target = $this;
+							} else {
+								html += $this.html();
+								$this.remove();
+							}
+						} else if (accept) {
+							if (i == 0) {
+								length += parseInt($this.attr('colspan')||1);
+							}
+							html += $this.html();
+							$this.remove();
+
+
+						}
+					})
+					html += _l!=html.length ? '<br />' : '';
+				});
+
+			target.removeAttr('colspan').removeAttr('rowspan').html(target.html()+html)
+			if (length>1) {
+				target.attr('colspan', length);
+			}
+			if (rl>1) {
+				target.attr('rowspan', rl);
+			}
+			// sometimes when merge cells with different rowspans we get "lost" cells in rows
+			// this add cells if needed
+			this.rte.dom.fixTable($(cells[0]).parents('table').get(0));
+		}
+	}
+
+	this.update = function() {
+		if (selectedCells()) {
+			this.domElem.removeClass('disabled');
+		} else {
+			this.domElem.addClass('disabled');
+		}
+	}
+}
+})(jQuery);
+/**
+ * @class button - split merged cell
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ * @todo split not merged cell
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.tbcellsplit = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+
+	this.command = function() {
+		var n = this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^(TD|TH)$/);
+		if (n) {
+			this.rte.history.add();
+			var colspan = parseInt(this.rte.dom.attr(n, 'colspan'));
+			var rowspan = parseInt(this.rte.dom.attr(n, 'rowspan'));
+			if (colspan>1 || rowspan>1) {
+				var cnum = colspan-1;
+				var rnum = rowspan-1;
+				var tb   = this.rte.dom.parent(n, /^TABLE$/);
+				var tbm  = this.rte.dom.tableMatrix(tb);
+
+				// ячейки в текущем ряду
+				if (cnum) {
+					for (var i=0; i<cnum; i++) {
+						$(this.rte.dom.create(n.nodeName)).html('&nbsp;').insertAfter(n);
+					}
+				}
+				if (rnum) {
+					var ndx  = this.rte.dom.indexesOfCell(n, tbm)
+					var rndx = ndx[0];
+					var cndx = ndx[1];
+					// ячейки в следущих рядах
+					for (var r=rndx+1; r < rndx+rnum+1; r++) {
+						var cell;
+
+						if (!tbm[r][cndx].nodeName) {
+							if (tbm[r][cndx-1].nodeName) {
+								cell = tbm[r][cndx-1];
+							} else {
+								for (var i=cndx-1; i>=0; i--) {
+									if (tbm[r][i].nodeName) {
+										cell =tbm[r][i];
+										break;
+									}
+								}
+							}
+							if (cell) {
+								for (var i=0; i<= cnum; i++) {
+									$(this.rte.dom.create(cell.nodeName)).html('&nbsp;').insertAfter(cell);
+								}
+							}
+						}
+					};
+				}
+				$(n).removeAttr('colspan').removeAttr('rowspan');
+				this.rte.dom.fixTable(tb);
+			}
+		}
+		this.rte.ui.update(true);
+	}
+
+	this.update = function() {
+		var n = this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^(TD|TH)$/);
+		if (n && (parseInt(this.rte.dom.attr(n, 'colspan'))>1 || parseInt(this.rte.dom.attr(n, 'rowspan'))>1)) {
+			this.domElem.removeClass('disabled');
+		} else {
+			this.domElem.addClass('disabled');
+		}
+	}
+}
+
+})(jQuery);
+/**
+ * @class button - Insert new column in table(before or after current)
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.tbcolbefore = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+
+	this.command = function() {
+		var cells = this.rte.dom.tableColumn(this.rte.selection.getNode(), false, true);
+		if (cells.length) {
+			this.rte.history.add();
+			$.each(cells, function() {
+				var $this = $(this);
+				var cp = parseInt($this.attr('colspan')||1)
+				if (cp >1) {
+					$this.attr('colspan', cp+1);
+				} else {
+					var c = $this.clone().html('&nbsp;').removeAttr('colspan').removeAttr('width').removeAttr('id');
+					if (self.name == 'tbcolbefore') {
+						c.insertBefore(this);
+					} else {
+						c.insertAfter(this);
+					}
+				}
+			});
+			this.rte.ui.update();
+		}
+	}
+
+	this.update = function() {
+		if (this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^(TD|TH)$/)) {
+			this.domElem.removeClass('disabled');
+		} else {
+			this.domElem.addClass('disabled');
+		}
+	}
+}
+
+elRTE.prototype.ui.prototype.buttons.tbcolafter = elRTE.prototype.ui.prototype.buttons.tbcolbefore;
+
+})(jQuery);
+/**
+ * @class button - remove table colunm
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.tbcolrm = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+
+	this.command = function() {
+		var n     = this.rte.selection.getNode();
+		var c     = this.rte.dom.selfOrParent(n, /^(TD|TH)$/);
+		var prev  = $(c).prev('td,th').get(0);
+		var next  = $(c).next('td,th').get(0);
+		var tb    = this.rte.dom.parent(n, /^TABLE$/);
+		var cells = this.rte.dom.tableColumn(n, false, true);
+
+		if (cells.length) {
+			this.rte.history.add();
+			$.each(cells, function() {
+				var $this = $(this);
+				var cp    = parseInt($this.attr('colspan')||1);
+				if ( cp>1 ) {
+					$this.attr('colspan', cp-1);
+				} else {
+					$this.remove();
+				}
+			});
+			this.rte.dom.fixTable(tb);
+			if (prev || next) {
+				this.rte.selection.selectContents(prev ? prev : next).collapse(true);
+			}
+			this.rte.ui.update(true);
+		}
+	}
+
+	this.update = function() {
+		if (this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^(TD|TH)$/)) {
+			this.domElem.removeClass('disabled');
+		} else {
+			this.domElem.addClass('disabled');
+		}
+	}
+}
+
+})(jQuery);
+/**
+ * @class меню - Новый ряд в таблице
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ **/
+elRTE.prototype.ui.prototype.buttons.tbrowbefore = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+
+	this.command = function() {
+		var n  = this.rte.selection.getNode();
+		var c  = this.rte.dom.selfOrParent(n, /^(TD|TH)$/);
+		var r  = this.rte.dom.selfOrParent(c, /^TR$/);
+		var mx = this.rte.dom.tableMatrix(this.rte.dom.selfOrParent(c, /^TABLE$/));
+		if (c && r && mx) {
+			this.rte.history.add();
+			var before = this.name == 'tbrowbefore';
+			var ro     = $(r).prevAll('tr').length;
+			var cnt    = 0;
+			var mdf    = [];
+
+			function _find(x, y) {
+				while (y>0) {
+					y--;
+					if (mx[y] && mx[y][x] && mx[y][x].nodeName) {
+						return mx[y][x];
+					}
+				}
+			}
+
+			for (var i=0; i<mx[ro].length; i++) {
+				if (mx[ro][i] && mx[ro][i].nodeName) {
+					var cell    = $(mx[ro][i]);
+					var colspan = parseInt(cell.attr('colspan')||1);
+					if (parseInt(cell.attr('rowspan')||1) > 1) {
+						if (before) {
+							cnt += colspan;
+						} else {
+							mdf.push(cell);
+						}
+					} else {
+						cnt += colspan;
+					}
+				} else if (mx[ro][i] == '-') {
+					cell = _find(i, ro);
+					cell && mdf.push($(cell));
+				}
+			}
+			var row = $('<tr />');
+			for (var i=0; i<cnt; i++) {
+				row.append('<td>&nbsp;</td>');
+			}
+			if (before) {
+				row.insertBefore(r);
+			} else {
+				row.insertAfter(r);
+			}
+			$.each(mdf, function() {
+				$(this).attr('rowspan', parseInt($(this).attr('rowspan')||1)+1);
+			});
+			this.rte.ui.update();
+		}
+	}
+
+	this.update = function() {
+		if (this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^TR$/)) {
+			this.domElem.removeClass('disabled');
+		} else {
+			this.domElem.addClass('disabled');
+		}
+	}
+}
+
+elRTE.prototype.ui.prototype.buttons.tbrowafter = elRTE.prototype.ui.prototype.buttons.tbrowbefore;
+/**
+ * @class button - remove table row
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+elRTE.prototype.ui.prototype.buttons.tbrowrm = function(rte, name) {
+	this.constructor.prototype.constructor.call(this, rte, name);
+	var self = this;
+	this.command = function() {
+
+		var n  = this.rte.selection.getNode(),
+			c  = this.rte.dom.selfOrParent(n, /^(TD|TH)$/),
+			r  = this.rte.dom.selfOrParent(c, /^TR$/),
+			tb = this.rte.dom.selfOrParent(c, /^TABLE$/),
+			mx = this.rte.dom.tableMatrix(tb);
+
+		if (c && r && mx.length) {
+			this.rte.history.add();
+			if (mx.length==1) {
+				$(tb).remove();
+				return this.rte.ui.update();
+			}
+			var mdf = [];
+			var ro  = $(r).prevAll('tr').length;
+
+			function _find(x, y) {
+				while (y>0) {
+					y--;
+					if (mx[y] && mx[y][x] && mx[y][x].nodeName) {
+						return mx[y][x];
+					}
+				}
+			}
+
+			// move cell with rowspan>1 to next row
+			function _move(cell, x) {
+				y = ro+1;
+				var sibling= null;
+				if (mx[y]) {
+					for (var _x=0; _x<x; _x++) {
+						if (mx[y][_x] && mx[y][_x].nodeName) {
+							sibling = mx[y][_x];
+						}
+					};
+
+					cell = cell.remove();
+					if (sibling) {
+						cell.insertAfter(sibling);
+					} else {
+						cell.prependTo($(r).next('tr').eq(0));
+					}
+				}
+			}
+
+			function _cursorPos(column) {
+				for (var i = 0; i<column.length; i++) {
+					if (column[i] == c) {
+						return i<column.length-1 ? column[i+1] : column[i-1];
+					}
+				}
+			}
+
+			for (var i=0; i<mx[ro].length; i++) {
+				var cell = null;
+				var move = false;
+				if (mx[ro][i] && mx[ro][i].nodeName) {
+					cell = mx[ro][i];
+					move = true;
+				} else if (mx[ro][i] == '-' && (cell = _find(i, ro))) {
+					move = false;
+				}
+				if (cell) {
+					cell = $(cell);
+					var rowspan = parseInt(cell.attr('rowspan')||1);
+					if (rowspan>1) {
+						cell.attr('rowspan', rowspan-1);
+						move && _move(cell, i, ro);
+					}
+				}
+			};
+
+			var _c = _cursorPos(this.rte.dom.tableColumn(c));
+			if (_c) {
+				this.rte.selection.selectContents(_c).collapse(true);
+			}
+
+			$(r).remove();
+		}
+		this.rte.ui.update();
+	}
+
+	this.update = function() {
+		if (this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^TR$/)) {
+			this.domElem.removeClass('disabled');
+		} else {
+			this.domElem.addClass('disabled');
+		}
+	}
+}
+
+})(jQuery);/**
+ * @class кнопка - отмена повтор действий
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+	elRTE.prototype.ui.prototype.buttons.undo = function(rte, name) {
+		this.constructor.prototype.constructor.call(this, rte, name);
+
+		this.command = function() {
+			if (this.name == 'undo' && this.rte.history.canBack()) {
+				this.rte.history.back();
+				this.rte.ui.update();
+			} else if (this.name == 'redo' && this.rte.history.canFwd()) {
+				this.rte.history.fwd();
+				this.rte.ui.update();
+			}
+		}
+
+		this.update = function() {
+			this.domElem.toggleClass('disabled', this.name == 'undo' ? !this.rte.history.canBack() : !this.rte.history.canFwd());
+		}
+	}
+
+	elRTE.prototype.ui.prototype.buttons.redo = elRTE.prototype.ui.prototype.buttons.undo;
+
+})(jQuery);/**
+ * @class button - remove link
+ *
+ * @param  elRTE  rte   объект-редактор
+ * @param  String name  название кнопки
+ *
+ * @author:    Dmitry Levashov (dio) dio@std42.ru
+ * @copyright: Studio 42, http://www.std42.ru
+ **/
+(function($) {
+
+	elRTE.prototype.ui.prototype.buttons.unlink = function(rte, name) {
+		this.constructor.prototype.constructor.call(this, rte, name);
+
+		this.command = function() {
+
+			var n = this.rte.selection.getNode(),
+				l = this.rte.dom.selfOrParentLink(n);
+
+			function isLink(n) { return n.nodeName == 'A' && n.href; }
+
+			if (!l) {
+
+				var sel = $.browser.msie ? this.rte.selection.selected() : this.rte.selection.selected({wrap : false});
+				if (sel.length) {
+					for (var i=0; i < sel.length; i++) {
+						if (isLink(sel[i])) {
+							l = sel[i];
+							break;
+						}
+					};
+					if (!l) {
+						l = this.rte.dom.parent(sel[0], isLink) || this.rte.dom.parent(sel[sel.length-1], isLink);
+					}
+				}
+			}
+
+			if (l) {
+				this.rte.history.add();
+				this.rte.selection.select(l);
+				this.rte.doc.execCommand('unlink', false, null);
+				this.rte.ui.update(true);
+			}
+
+		}
+
+		this.update = function() {
+			var n = this.rte.selection.getNode();
+			if (this.rte.dom.selfOrParentLink(n)) {
+				this.domElem.removeClass('disabled').addClass('active');
+			} else if (this.rte.dom.selectionHas(function(n) { return n.nodeName == 'A' && n.href; })) {
+				this.domElem.removeClass('disabled').addClass('active');
+			} else {
+				this.domElem.addClass('disabled').removeClass('active');
+			}
+		}
+	}
+
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/elrte.min.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/elrte.min.js
new file mode 100644
index 0000000..7aef808
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/elrte.min.js
@@ -0,0 +1,9 @@
+/*
+ * elRTE WYSIWYG HTML-editor
+ * Version 1.1 (2010-09-20)
+ * http://elrte.org
+ *
+ * Copyright 2010, Studio 42 Ltd.
+ * Licensed under a 3 clauses BSD license
+ */
+function eli18n(a){this.textdomain=function(b){return this.messages[b]?this._domain=b:this._domain};a&&a.messages&&this.load(a.messages);a&&a.textdomain&&this.textdomain(a.textdomain)}eli18n.prototype=new function(){this.messages={};this._domain="";this.load=function(c){if(typeof(c)=="object"){for(var f in c){var b=c[f];if(typeof(b)=="object"){if(!this.messages[f]){this.messages[f]={}}for(var a in b){if(typeof(b[a])=="string"){this.messages[f][a]=b[a]}}}}}return this};this.translate=function(b,a){var a=a&&this.messages[a]?a:this._domain;return this.messages[a]&&this.messages[a][b]?this.messages[a][b]:b};this.format=function(f,b,c){f=this.translate(f,c);if(typeof(b)=="object"){for(var a in b){f=f.replace("%"+a,this.translate(b[a],c))}}return f}};function elDialogForm(c){var a=this;var b={"class":"el-dialogform",submit:function(f,g){window.console&&window.console.log&&window.console.log("submit called");g.close()},form:{action:window.location.href,method:"post"},ajaxForm:null,validate:null,spinner:"Loading",tabs:{active:0},tabPrefix:"el-df-tab-",dialog:{title:"dialog",autoOpen:false,modal:true,resizable:false,buttons:{Cancel:function(){a.close()},Ok:function(){a.form.trigger("submit")}}}};this.opts=jQuery.extend(true,b,c,{dialog:{autoOpen:false,close:function(){a.close()}}});if(this.opts.rtl){this.opts["class"]+=" el-dialogform-rtl"}if(c&&c.dialog&&c.dialog.buttons&&typeof(c.dialog.buttons)=="object"){this.opts.dialog.buttons=c.dialog.buttons}this.ul=null;this.tabs={};this._table=null;this.dialog=jQuery("<div />").addClass(this.opts["class"]).dialog(this.opts.dialog);this.message=jQuery('<div class="el-dialogform-message rounded-5" />').hide().appendTo(this.dialog);this.error=jQuery('<div class="el-dialogform-error rounded-5" />').hide().appendTo(this.dialog);this.spinner=jQuery('<div class="spinner" />').hide().appendTo(this.dialog);this.content=jQuery('<div class="el-dialogform-content" />').appendTo(this.dialog);this.form=jQuery("<form />").attr(this.opts.form).appendTo(this.content);if(this.opts.submit){this.form.bind("submit",function(f){a.opts.submit(f,a)})}if(this.opts.ajaxForm&&jQuery.fn.ajaxForm){this.form.ajaxForm(this.opts.ajaxForm)}if(this.opts.validate){this.form.validate(this.opts.validate)}this.option=function(f,g){return this.dialog.dialog("option",f,g)};this.showError=function(f,g){this.hideMessage();this.hideSpinner();this.error.html(f).show();g&&this.content.hide();return this};this.hideError=function(){this.error.text("").hide();this.content.show();return this};this.showSpinner=function(f){this.error.hide();this.message.hide();this.content.hide();this.spinner.text(f||this.opts.spinner).show();this.option("buttons",{});return this};this.hideSpinner=function(){this.content.show();this.spinner.hide();return this};this.showMessage=function(f,g){this.hideError();this.hideSpinner();this.message.html(f||"").show();g&&this.content.hide();return this};this.hideMessage=function(){this.message.hide();this.content.show();return this};this.tab=function(g,f){g=this.opts.tabPrefix+g;if(!this.ul){this.ul=jQuery("<ul />").prependTo(this.form)}jQuery("<li />").append(jQuery("<a />").attr("href","#"+g).html(f)).appendTo(this.ul);this.tabs[g]={tab:jQuery("<div />").attr("id",g).addClass("tab").appendTo(this.form),table:null};return this};this.table=function(f){f=f&&f.indexOf(this.opts.tabPrefix)==-1?this.opts.tabPrefix+f:f;if(f&&this.tabs&&this.tabs[f]){this.tabs[f].table=jQuery("<table />").appendTo(this.tabs[f].tab)}else{this._table=jQuery("<table />").appendTo(this.form)}return this};this.append=function(j,k,g){k=k?"el-df-tab-"+k:"";if(!j){return this}if(k&&this.tabs[k]){if(g){!this.tabs[k].table&&this.table(k);var h=jQuery("<tr />").appendTo(this.tabs[k].table);if(!jQuery.isArray(j)){h.append(jQuery("<td />").append(j))}else{for(var f=0;f<j.length;f++){h.append(jQuery("<td />").append(j[f]))}}}else{if(!jQuery.isArray(j)){this.tabs[k].tab.append(j)}else{for(var f=0;f<j.length;f++){this.tabs[k].tab.append(j[f])}}}}else{if(!g){if(!jQuery.isArray(j)){this.form.append(j)}else{for(var f=0;f<j.length;f++){this.form.append(j[f])}}}else{if(!this._table){this.table()}var h=jQuery("<tr />").appendTo(this._table);if(!jQuery.isArray(j)){h.append(jQuery("<td />").append(j))}else{for(var f=0;f<j.length;f++){h.append(jQuery("<td />").append(j[f]))}}}}return this};this.separator=function(f){f="el-df-tab-"+f;if(this.tabs&&this.tabs[f]){this.tabs[f].tab.append(jQuery("<div />").addClass("separator"));this.tabs[f].table&&this.table(f)}else{this.form.append(jQuery("<div />").addClass("separator"))}return this};this.open=function(){this.ul&&this.form.tabs(this.opts.tabs);this.form.find(":text").keyup(function(g){if(g.keyCode==13){f.form.submit()}});this.dialog.attr("unselectable","on").dialog("open");var f=this;if(this.form&&this.form.find(":text").length){setTimeout(function(){f.form.find(":text")[0].focus()},20)}return this};this.close=function(){if(typeof(this.opts.close)=="function"){this.opts.close()}this.dialog.dialog("destroy").remove()}}(function(a){a.fn.elColorPicker=function(h){var b=this;var f=a.extend({},a.fn.elColorPicker.defaults,h);this.hidden=a('<input type="hidden" />').attr("name",f.name).val(f.color||"").appendTo(this);this.palette=null;this.preview=null;this.input=null;function c(j){b.val(j);f.change&&f.change(b.val());b.palette.slideUp()}function g(){b.palette=a("<div />").addClass(f.paletteClass+" rounded-3");for(var j=0;j<f.colors.length;j++){a("<div />").addClass("color").css("background-color",f.colors[j]).attr({title:f.colors[j],unselectable:"on"}).appendTo(b.palette).mouseenter(function(){var k=a(this).attr("title");b.input.val(k);b.preview.css("background-color",k)}).click(function(k){k.stopPropagation();c(a(this).attr("title"))})}b.input=a('<input type="text" />').addClass("rounded-3").attr("size",8).click(function(k){k.stopPropagation()}).keydown(function(p){if(p.ctrlKey||p.metaKey){return true}var o=p.keyCode;if(o==27){return b.mouseleave()}if(o!=8&&o!=13&&o!=46&&o!=37&&o!=39&&(o<48||o>57)&&(o<65||o>70)){return false}var q=a(this).val();if(q.length==7||q.length==0){if(o==13){p.stopPropagation();p.preventDefault();c(q);b.palette.slideUp()}if(p.keyCode!=8&&p.keyCode!=46&&o!=37&&o!=39){return false}}}).keyup(function(k){var o=a(this).val();o.length==7&&/^#[0-9abcdef]{6}$/i.test(o)&&b.val(o)});b.preview=a("<div />").addClass("preview rounded-3").click(function(k){k.stopPropagation();c(b.input.val())});b.palette.append(a("<div />").addClass("clearfix")).append(a("<div />").addClass("panel").append(b.input).append(b.preview));if(f.palettePosition=="outer"){b.palette.hide().appendTo(b.parents("body").eq(0)).mouseleave(function(){a(this).slideUp();b.val(b.val())});b.mouseleave(function(k){if(k.relatedTarget!=b.palette.get(0)){b.palette.slideUp();b.val(b.val())}})}else{b.append(b.palette.hide()).mouseleave(function(k){b.palette.slideUp();b.val(b.val())})}b.val(b.val())}this.empty().addClass(f["class"]+" rounded-3").css({position:"relative","background-color":f.color||""}).click(function(p){if(!b.hasClass("disabled")){!b.palette&&g();if(f.palettePosition=="outer"&&b.palette.css("display")=="none"){var q=a(this).offset();var k=b.palette.width();var j=b.parents("body").width()-q.left>=k?q.left:q.left+a(this).outerWidth()-k;b.palette.css({left:j+"px",top:q.top+a(this).height()+1+"px"})}b.palette.slideToggle()}});this.val=function(j){if(!j&&j!==""){return this.hidden.val()}else{this.hidden.val(j);if(f.update){f.update(this.hidden.val())}else{this.css("background-color",j)}if(b.palette){b.preview.css("background-color",j);b.input.val(j)}}return this};return this};a.fn.elColorPicker.defaults={"class":"el-colorpicker",paletteClass:"el-palette",palettePosition:"inner",name:"color",color:"",update:null,change:function(b){},colors:["#ffffff","#cccccc","#999999","#666666","#333333","#000000","#ffcccc","#cc9999","#996666","#663333","#330000","#ff9999","#cc6666","#cc3333","#993333","#660000","#ff6666","#ff3333","#ff0000","#cc0000","#990000","#ff9966","#ff6633","#ff3300","#cc3300","#993300","#ffcc99","#cc9966","#cc6633","#996633","#663300","#ff9933","#ff6600","#ff9900","#cc6600","#cc9933","#ffcc66","#ffcc33","#ffcc00","#cc9900","#996600","#ffffcc","#cccc99","#999966","#666633","#333300","#ffff99","#cccc66","#cccc33","#999933","#666600","#ffff66","#ffff33","#ffff00","#cccc00","#999900","#ccff66","#ccff33","#ccff00","#99cc00","#669900","#ccff99","#99cc66","#99cc33","#669933","#336600","#99ff33","#99ff00","#66ff00","#66cc00","#66cc33","#99ff66","#66ff33","#33ff00","#33cc00","#339900","#ccffcc","#99cc99","#669966","#336633","#003300","#99ff99","#66cc66","#33cc33","#339933","#006600","#66ff66","#33ff33","#00ff00","#00cc00","#009900","#66ff99","#33ff66","#00ff33","#00cc33","#009933","#99ffcc","#66cc99","#33cc66","#339966","#006633","#33ff99","#00ff66","#00ff99","#00cc66","#33cc99","#66ffcc","#33ffcc","#00ffcc","#00cc99","#009966","#ccffff","#99cccc","#669999","#336666","#003333","#99ffff","#66cccc","#33cccc","#339999","#006666","#66cccc","#33ffff","#00ffff","#00cccc","#009999","#66ccff","#33ccff","#00ccff","#0099cc","#006699","#99ccff","#6699cc","#3399cc","#336699","#003366","#3399ff","#0099ff","#0066ff","#066ccc","#3366cc","#6699ff","#3366ff","#0033ff","#0033cc","#003399","#ccccff","#9999cc","#666699","#333366","#000033","#9999ff","#6666cc","#3333cc","#333399","#000066","#6666ff","#3333ff","#0000ff","#0000cc","#009999","#9966ff","#6633ff","#3300ff","#3300cc","#330099","#cc99ff","#9966cc","#6633cc","#663399","#330066","#9933ff","#6600ff","#9900ff","#6600cc","#9933cc","#cc66ff","#cc33ff","#cc00ff","#9900cc","#660099","#ffccff","#cc99cc","#996699","#663366","#330033","#ff99ff","#cc66cc","#cc33cc","#993399","#660066","#ff66ff","#ff33ff","#ff00ff","#cc00cc","#990099","#ff66cc","#ff33cc","#ff00cc","#cc0099","#990066","#ff99cc","#cc6699","#cc3399","#993366","#660033","#ff3399","#ff0099","#ff0066","#cc0066","#cc3366","#ff6699","#ff3366","#ff0033","#cc0033","#990033"]}})(jQuery);(function(a){a.fn.elBorderSelect=function(h){var k=this;var q=this.eq(0);var b=a.extend({},a.fn.elBorderSelect.defaults,h);var f=a('<input type="text" />').attr({name:b.name+"[width]",size:3}).css("text-align","right").change(function(){k.change()});var j=a("<div />").css("position","relative").elColorPicker({"class":"el-colorpicker ui-icon ui-icon-pencil",name:b.name+"[color]",palettePosition:"outer",change:function(){k.change()}});var c=a("<div />").elSelect({tpl:'<div style="border-bottom:4px %val #000;width:100%;margin:7px 0"> </div>',tpls:{"":"%label"},maxHeight:b.styleHeight||null,select:function(){k.change()},src:{"":"none",solid:"solid",dashed:"dashed",dotted:"dotted","double":"double",groove:"groove",ridge:"ridge",inset:"inset",outset:"outset"}});q.empty().addClass(b["class"]).attr("name",b.name||"").append(a("<table />").attr("cellspacing",0).append(a("<tr />").append(a("<td />").append(f).append(" px")).append(a("<td />").append(c)).append(a("<td />").append(j))));function g(t){function r(u){hexDigits=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];return !u?"00":hexDigits[(u-u%16)/16]+hexDigits[u%16]}var o=(t||"").match(/\(([0-9]{1,3}),\s*([0-9]{1,3}),\s*([0-9]{1,3})\)/);return o?"#"+r(o[1])+r(o[2])+r(o[3]):""}function p(r){if(!r){return r}var o=r.match(/([0-9]+\.?[0-9]*)\s*(px|pt|em|%)/);if(o){r=o[1];unit=o[2]}if(r[0]=="."){r="0"+r}r=parseFloat(r);if(isNaN(r)){return""}var t=parseInt(a(document.body).css("font-size"))||16;switch(unit){case"em":return parseInt(r*t);case"pt":return parseInt(r*t/12);case"%":return parseInt(r*t/100)}return r}this.change=function(){b.change&&b.change(this.val())};this.val=function(u){if(!u&&u!==""){var t=parseInt(f.val());return{width:!isNaN(t)?t+"px":"",style:c.val(),color:j.val()}}else{var r,t,x,z,o="";if(u.nodeName||u.css){if(!u.css){u=a(u)}var o=u.css("border");if((o=u.css("border"))){t=x=z=o}else{t=u.css("border-width");x=u.css("border-style");z=u.css("border-color")}}else{t=u.width||"";x=u.style||"";z=u.color||""}f.val(p(t));var r=x?x.match(/(solid|dashed|dotted|double|groove|ridge|inset|outset)/i):"";c.val(r?r[1]:"");j.val(g(z));return this}};this.val(b.value);return this};a.fn.elBorderSelect.defaults={name:"el-borderselect","class":"el-borderselect",value:{},change:null}})(jQuery);(function(a){a.fn.elPaddingInput=function(g){var c=this;var f=a.extend({},a.fn.elPaddingInput.defaults,{name:this.attr("name")},g);this.regexps={main:new RegExp(f.type=="padding"?'paddings*:s*([^;"]+)':'margins*:s*([^;"]+)',"im"),left:new RegExp(f.type=="padding"?'padding-lefts*:s*([^;"]+)':'margin-lefts*:s*([^;"]+)',"im"),top:new RegExp(f.type=="padding"?'padding-tops*:s*([^;"]+)':'margin-tops*:s*([^;"]+)',"im"),right:new RegExp(f.type=="padding"?'padding-rights*:s*([^;"]+)':'margin-rights*:s*([^;"]+)',"im"),bottom:new RegExp(f.type=="padding"?'padding-bottoms*:s*([^;"]+)':'margin-bottoms*:s*([^;"]+)',"im")};a.each(["left","top","right","bottom"],function(){c[this]=a('<input type="text" />').attr("size",3).css("text-align","right").css("border-"+this,"2px solid red").bind("change",function(){a(this).val(b(a(this).val()));h()}).attr("name",f.name+"["+this+"]")});a.each(["uleft","utop","uright","ubottom"],function(){c[this]=a("<select />").append('<option value="px">px</option>').append('<option value="em">em</option>').append('<option value="pt">pt</option>').bind("change",function(){h()}).attr("name",f.name+"["+this+"]");if(f.percents){c[this].append('<option value="%">%</option>')}});this.empty().addClass(f["class"]).append(this.left).append(this.uleft).append(" x ").append(this.top).append(this.utop).append(" x ").append(this.right).append(this.uright).append(" x ").append(this.bottom).append(this.ubottom);this.val=function(z){if(!z&&z!==""){var q=b(this.left.val());var A=b(this.top.val());var j=b(this.right.val());var x=b(this.bottom.val());var w={left:q=="auto"||q==0?q:(q!==""?q+this.uleft.val():""),top:A=="auto"||A==0?A:(A!==""?A+this.utop.val():""),right:j=="auto"||j==0?j:(j!==""?j+this.uright.val():""),bottom:x=="auto"||x==0?x:(x!==""?x+this.ubottom.val():""),css:""};if(w.left!==""&&w.right!==""&&w.top!==""&&w.bottom!==""){if(w.left==w.right&&w.top==w.bottom){w.css=w.top+" "+w.left}else{w.css=w.top+" "+w.right+" "+w.bottom+" "+w.left}}return w}else{if(z.nodeName||z.css){if(!z.css){z=a(z)}var o={left:"",top:"",right:"",bottom:""};var k=(z.attr("style")||"").toLowerCase();if(k){k=a.trim(k);var p=k.match(this.regexps.main);if(p){var u=a.trim(p[1]).replace(/\s+/g," ").split(" ",4);o.top=u[0];o.right=u[1]&&u[1]!==""?u[1]:o.top;o.bottom=u[2]&&u[2]!==""?u[2]:o.top;o.left=u[3]&&u[3]!==""?u[3]:o.right}else{a.each(["left","top","right","bottom"],function(){var r=this.toString();p=k.match(c.regexps[r]);if(p){o[r]=p[1]}})}}var z=o}a.each(["left","top","right","bottom"],function(){var t=this.toString();if(typeof(z[t])!="undefined"&&z[t]!==null){z[t]=z[t].toString();var v=b(z[t]);c[t].val(v);var r=z[t].match(/(px|em|pt|%)/i);c["u"+t].val(r?r[1]:"px")}});return this}};function b(j){j=a.trim(j.toString());if(j[0]=="."){j="0"+j}n=parseFloat(j);return !isNaN(n)?n:(j=="auto"?j:"")}function h(){f.change&&f.change(c)}this.val(f.value);return this};a.fn.elPaddingInput.defaults={name:"el-paddinginput","class":"el-paddinginput",type:"padding",value:{},percents:true,change:null}})(jQuery);(function(a){a.fn.elSelect=function(c){var q=this;var u=this.eq(0);var b=a.extend({},a.fn.elSelect.defaults,c);var g=a('<input type="hidden" />').attr("name",b.name);var p=a("<label />").attr({unselectable:"on"}).addClass("rounded-left-3");var h=null;var k=null;if(u.get(0).nodeName=="SELECT"){b.src={};u.children("option").each(function(){b.src[a(this).val()]=a(this).text()});b.value=u.val();b.name=u.attr("name");u.replaceWith((u=a("<div />")))}if(!b.value||!b.src[b.val]){b.value=null;var f=0;for(var r in b.src){if(f++==0){b.value=r}}}this.val=function(o){if(!o&&o!==""){return g.val()}else{if(b.src[o]){g.val(o);j(o);if(h){h.children().each(function(){if(a(this).attr("name")==o){a(this).addClass("active")}else{a(this).removeClass("active")}})}}return this}};function j(o){var w=b.labelTpl||b.tpls[o]||b.tpl;p.html(w.replace(/%val/g,o).replace(/%label/,b.src[o])).children().attr({unselectable:"on"})}u.empty().addClass(b["class"]+" rounded-3").attr({unselectable:"on"}).append(g).append(p).hover(function(){a(this).addClass("hover")},function(){a(this).removeClass("hover")}).click(function(o){!h&&t();h.slideToggle();if(a.browser.msie&&!k){h.children().each(function(){k=Math.max(k,a(this).width())});if(k>h.width()){h.width(k+40)}}});this.val(b.value);function t(){h=a("<div />").addClass(b.listClass+" rounded-3").hide().appendTo(u.mouseleave(function(v){h.slideUp()}));for(var x in b.src){var z=b.tpls[x]||b.tpl;a("<div />").attr("name",x).append(a(z.replace(/%val/g,x).replace(/%label/g,b.src[x])).attr({unselectable:"on"})).appendTo(h).hover(function(){a(this).addClass("hover")},function(){a(this).removeClass("hover")}).click(function(B){B.stopPropagation();B.preventDefault();var w=a(this).attr("name");q.val(w);b.select(w);h.slideUp()})}var o=u.outerWidth();if(h.width()<o){h.width(o)}var A=h.height();if(b.maxHeight>0&&A>b.maxHeight){h.height(b.maxHeight)}q.val(g.val())}return this};a.fn.elSelect.defaults={name:"el-select","class":"el-select",listClass:"list",labelTpl:null,tpl:"<%val>%label</%val>",tpls:{},value:null,src:{},select:function(b){window.console&&window.console.log&&window.console.log("selected: "+b)},maxHeight:410}})(jQuery);(function(a){elRTE=function(o,j){if(!o||!o.nodeName){return alert('elRTE: argument "target" is not DOM Element')}var c=this,f;this.version="1.1";this.build="2010-09-20";this.options=a.extend(true,{},this.options,j);this.browser=a.browser;this.target=a(o);this.lang=(""+this.options.lang).toLowerCase();this._i18n=new eli18n({textdomain:"rte",messages:{rte:this.i18Messages[this.lang]||{}}});this.rtl=!!(/^(ar|fa|he)$/.test(this.lang)&&this.i18Messages[this.lang]);if(this.rtl){this.options.cssClass+=" el-rte-rtl"}this.toolbar=a('<div class="toolbar"/>');this.iframe=document.createElement("iframe");this.workzone=a('<div class="workzone"/>').append(this.iframe).append(this.source);this.statusbar=a('<div class="statusbar"/>');this.tabsbar=a('<div class="tabsbar"/>');this.editor=a('<div class="'+this.options.cssClass+'" />').append(this.toolbar).append(this.workzone).append(this.statusbar).append(this.tabsbar);this.doc=null;this.$doc=null;this.window=null;this.utils=new this.utils(this);this.dom=new this.dom(this);this.filter=new this.filter(this);this.updateHeight=function(){c.workzone.add(c.iframe).add(c.source).height(c.workzone.height())};this.resizable=function(q){var p=this;if(this.options.resizable&&a.fn.resizable){if(q){this.editor.resizable({handles:"se",alsoResize:this.workzone,minWidth:300,minHeight:200}).bind("resize",p.updateHeight)}else{this.editor.resizable("destroy").unbind("resize",p.updateHeight)}}};this.editor.insertAfter(o);var h="";if(o.nodeName=="TEXTAREA"){this.source=this.target;this.source.insertAfter(this.iframe).hide();h=this.target.val()}else{this.source=a("<textarea />").insertAfter(this.iframe).hide();h=this.target.hide().html()}this.source.attr("name",this.target.attr("name")||this.target.attr("id"));h=a.trim(h);if(!h){h=" "}if(this.options.allowSource){this.tabsbar.append('<div class="tab editor rounded-bottom-7 active">'+c.i18n("Editor")+'</div><div class="tab source rounded-bottom-7">'+c.i18n("Source")+'</div><div class="clearfix" style="clear:both"/>').children(".tab").click(function(p){if(!a(this).hasClass("active")){c.tabsbar.children(".tab").toggleClass("active");c.workzone.children().toggle();if(a(this).hasClass("editor")){c.updateEditor();c.window.focus();c.ui.update(true)}else{c.updateSource();c.source.focus();if(a.browser.msie){}else{c.source[0].setSelectionRange(0,0)}c.ui.disable();c.statusbar.empty()}}})}this.window=this.iframe.contentWindow;this.doc=this.iframe.contentWindow.document;this.$doc=a(this.doc);f='<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';a.each(c.options.cssfiles,function(){f+='<link rel="stylesheet" type="text/css" href="'+this+'" />'});this.doc.open();var g=this.filter.wysiwyg(h),b=this.rtl?' class="el-rte-rtl"':"";this.doc.write(c.options.doctype+f+"</head><body"+b+">"+(g)+"</body></html>");this.doc.close();if(a.browser.msie){this.doc.body.contentEditable=true}else{try{this.doc.designMode="on"}catch(k){}this.doc.execCommand("styleWithCSS",false,this.options.styleWithCSS)}if(this.options.height>0){this.workzone.height(this.options.height)}this.updateHeight();this.resizable(true);this.window.focus();this.history=new this.history(this);this.selection=new this.selection(this);this.ui=new this.ui(this);this.target.parents("form").bind("submit",function(p){c.source.parents("form").find('[name="el-select"]').remove();c.beforeSave()});this.source.bind("keydown",function(t){if(t.keyCode==9){t.preventDefault();if(a.browser.msie){var p=document.selection.createRange();p.text="\t"+p.text;this.focus()}else{var q=this.value.substr(0,this.selectionStart),u=this.value.substr(this.selectionEnd);this.value=q+"\t"+u;this.setSelectionRange(q.length+1,q.length+1)}}});this.$doc.bind("mouseup",function(){c.ui.update()}).bind("dragstart",function(p){p.preventDefault();p.stopPropagation()}).bind("keyup",function(p){if((p.keyCode>=8&&p.keyCode<=13)||(p.keyCode>=32&&p.keyCode<=40)||p.keyCode==46||(p.keyCode>=96&&p.keyCode<=111)){c.ui.update()}}).bind("keydown",function(p){if((p.metaKey||p.ctrlKey)&&p.keyCode==65){c.ui.update()}else{if(p.keyCode==13){var q=c.selection.getNode();if(c.dom.selfOrParent(q,/^PRE$/)){c.selection.insertNode(c.doc.createTextNode("\r\n"));return false}else{if(a.browser.safari&&p.shiftKey){c.selection.insertNode(c.doc.createElement("br"));return false}}}}});this.typing=false;this.lastKey=null;this.$doc.bind("keydown",function(p){if((p.keyCode>=48&&p.keyCode<=57)||p.keyCode==61||p.keyCode==109||(p.keyCode>=65&&p.keyCode<=90)||p.keyCode==188||p.keyCode==190||p.keyCode==191||(p.keyCode>=219&&p.keyCode<=222)){if(!c.typing){c.history.add(true)}c.typing=true;c.lastKey=null}else{if(p.keyCode==8||p.keyCode==46||p.keyCode==32||p.keyCode==13){if(p.keyCode!=c.lastKey){c.history.add(true)}c.lastKey=p.keyCode;c.typing=false}}}).bind("mouseup",function(){c.typing=false;c.lastKey=null}).bind("paste",function(q){if(!c.options.allowPaste){q.stopPropagation();q.preventDefault()}else{var t=a(c.dom.create("div"))[0],p=c.doc.createTextNode("_");c.history.add(true);c.typing=true;c.lastKey=null;t.appendChild(p);c.selection.deleteContents().insertNode(t);c.selection.select(p);setTimeout(function(){if(t.parentNode){a(t).html(c.filter.proccess("paste",a(t).html()));p=t.lastChild;c.dom.unwrap(t);if(p){c.selection.select(p);c.selection.collapse(false)}}else{t.parentNode&&t.parentNode.removeChild(t);c.val(c.filter.proccess("paste",c.filter.wysiwyg2wysiwyg(a(c.doc.body).html())));c.selection.select(c.doc.body.firstChild);c.selection.collapse(true)}a(c.doc.body).mouseup()},15)}});if(a.browser.msie){this.$doc.bind("keyup",function(p){if(p.keyCode==86&&(p.metaKey||p.ctrlKey)){c.history.add(true);c.typing=true;c.lastKey=null;c.selection.saveIERange();c.val(c.filter.proccess("paste",c.filter.wysiwyg2wysiwyg(a(c.doc.body).html())));c.selection.restoreIERange();a(c.doc.body).mouseup();this.ui.update()}})}if(a.browser.safari){this.$doc.bind("click",function(p){a(c.doc.body).find(".elrte-webkit-hl").removeClass("elrte-webkit-hl");if(p.target.nodeName=="IMG"){a(p.target).addClass("elrte-webkit-hl")}}).bind("keyup",function(p){a(c.doc.body).find(".elrte-webkit-hl").removeClass("elrte-webkit-hl")})}this.window.focus()};elRTE.prototype.i18n=function(b){return this._i18n.translate(b)};elRTE.prototype.open=function(){this.editor.show()};elRTE.prototype.close=function(){this.editor.hide()};elRTE.prototype.updateEditor=function(){this.val(this.source.val())};elRTE.prototype.updateSource=function(){this.source.val(this.filter.source(a(this.doc.body).html()))};elRTE.prototype.val=function(b){if(typeof(b)=="string"){b=""+b;if(this.source.is(":visible")){this.source.val(this.filter.source2source(b))}else{if(a.browser.msie){this.doc.body.innerHTML="<br />"+this.filter.wysiwyg(b);this.doc.body.removeChild(this.doc.body.firstChild)}else{this.doc.body.innerHTML=this.filter.wysiwyg(b)}}}else{if(this.source.is(":visible")){return this.filter.source2source(this.source.val())}else{return this.filter.source(a(this.doc.body).html())}}};elRTE.prototype.beforeSave=function(){this.source.val(this.val()||"")};elRTE.prototype.save=function(){this.beforeSave();this.editor.parents("form").submit()};elRTE.prototype.log=function(b){if(window.console&&window.console.log){window.console.log(b)}};elRTE.prototype.i18Messages={};a.fn.elrte=function(g,b){var f=typeof(g)=="string"?g:"",c;this.each(function(){if(!this.elrte){this.elrte=new elRTE(this,typeof(g)=="object"?g:{})}switch(f){case"open":case"show":this.elrte.open();break;case"close":case"hide":this.elrte.close();break;case"updateSource":this.elrte.updateSource();break}});if(f=="val"){if(!this.length){return""}else{if(this.length==1){return b?this[0].elrte.val(b):this[0].elrte.val()}else{c={};this.each(function(){c[this.elrte.source.attr("name")]=this.elrte.val()});return c}}}return this}})(jQuery);(function(a){elRTE.prototype.dom=function(c){this.rte=c;var b=this;this.regExp={textNodes:/^(A|ABBR|ACRONYM|ADDRESS|B|BDO|BIG|BLOCKQUOTE|CAPTION|CENTER|CITE|CODE|DD|DEL|DFN|DIV|DT|EM|FIELDSET|FONT|H[1-6]|I|INS|KBD|LABEL|LEGEND|LI|MARQUEE|NOBR|NOEMBED|P|PRE|Q|SAMP|SMALL|SPAN|STRIKE|STRONG|SUB|SUP|TD|TH|TT|VAR)$/,textContainsNodes:/^(A|ABBR|ACRONYM|ADDRESS|B|BDO|BIG|BLOCKQUOTE|CAPTION|CENTER|CITE|CODE|DD|DEL|DFN|DIV|DL|DT|EM|FIELDSET|FONT|H[1-6]|I|INS|KBD|LABEL|LEGEND|LI|MARQUEE|NOBR|NOEMBED|OL|P|PRE|Q|SAMP|SMALL|SPAN|STRIKE|STRONG|SUB|SUP|TABLE|THEAD|TBODY|TFOOT|TD|TH|TR|TT|UL|VAR)$/,block:/^(APPLET|BLOCKQUOTE|BR|CAPTION|CENTER|COL|COLGROUP|DD|DIV|DL|DT|H[1-6]|EMBED|FIELDSET|LI|MARQUEE|NOBR|OBJECT|OL|P|PRE|TABLE|THEAD|TBODY|TFOOT|TD|TH|TR|UL)$/,selectionBlock:/^(APPLET|BLOCKQUOTE|BR|CAPTION|CENTER|COL|COLGROUP|DD|DIV|DL|DT|H[1-6]|EMBED|FIELDSET|LI|MARQUEE|NOBR|OBJECT|OL|P|PRE|TD|TH|TR|UL)$/,header:/^H[1-6]$/,formElement:/^(FORM|INPUT|HIDDEN|TEXTAREA|SELECT|BUTTON)$/};this.root=function(){return this.rte.body};this.create=function(f){return this.rte.doc.createElement(f)};this.createBookmark=function(){var f=this.rte.doc.createElement("span");f.id="elrte-bm-"+Math.random().toString().substr(2);a(f).addClass("elrtebm");return f};this.indexOf=function(g){var f=0;g=a(g);while((g=g.prev())&&g.length){f++}return f};this.attr=function(h,f){var g="";if(h.nodeType==1){g=a(h).attr(f);if(g&&f!="src"&&f!="href"){g=g.toString().toLowerCase()}}return g||""};this.findCommonAncestor=function(j,h){if(!j||!h){return this.rte.log("dom.findCommonAncestor invalid arguments")}if(j==h){return j}else{if(j.nodeName=="BODY"||h.nodeName=="BODY"){return this.rte.doc.body}}var o=a(j).parents(),k=a(h).parents(),f=k.length-1,p=k[f];for(var g=o.length-1;g>=0;g--,f--){if(o[g]==k[f]){p=o[g]}else{break}}return p};this.isEmpty=function(f){if(f.nodeType==1){return this.regExp.textNodes.test(f.nodeName)?a.trim(a(f).text()).length==0:false}else{if(f.nodeType==3){return/^(TABLE|THEAD|TFOOT|TBODY|TR|UL|OL|DL)$/.test(f.parentNode.nodeName)||f.nodeValue==""||(a.trim(f.nodeValue).length==0&&!(f.nextSibling&&f.previousSibling&&f.nextSibling.nodeType==1&&f.previousSibling.nodeType==1&&!this.regExp.block.test(f.nextSibling.nodeName)&&!this.regExp.block.test(f.previousSibling.nodeName)))}}return true};this.next=function(f){while(f.nextSibling&&(f=f.nextSibling)){if(f.nodeType==1||(f.nodeType==3&&!this.isEmpty(f))){return f}}return null};this.prev=function(f){while(f.previousSibling&&(f=f.previousSibling)){if(f.nodeType==1||(f.nodeType==3&&!this.isEmpty(f))){return f}}return null};this.isPrev=function(g,f){while((g=this.prev(g))){if(g==f){return true}}return false};this.nextAll=function(g){var f=[];while((g=this.next(g))){f.push(g)}return f};this.prevAll=function(g){var f=[];while((g=this.prev(g))){f.push(g)}return f};this.toLineEnd=function(g){var f=[];while((g=this.next(g))&&g.nodeName!="BR"&&g.nodeName!="HR"&&this.isInline(g)){f.push(g)}return f};this.toLineStart=function(g){var f=[];while((g=this.prev(g))&&g.nodeName!="BR"&&g.nodeName!="HR"&&this.isInline(g)){f.unshift(g)}return f};this.isFirstNotEmpty=function(f){while((f=this.prev(f))){if(f.nodeType==1||(f.nodeType==3&&a.trim(f.nodeValue)!="")){return false}}return true};this.isLastNotEmpty=function(f){while((f=this.next(f))){if(!this.isEmpty(f)){return false}}return true};this.isOnlyNotEmpty=function(f){return this.isFirstNotEmpty(f)&&this.isLastNotEmpty(f)};this.findLastNotEmpty=function(f){this.rte.log("findLastNotEmpty Who is here 0_o");if(f.nodeType==1&&(l=f.lastChild)){if(!this.isEmpty(l)){return l}while(l.previousSibling&&(l=l.previousSibling)){if(!this.isEmpty(l)){return l}}}return false};this.isInline=function(j){if(j.nodeType==3){return true}else{if(j.nodeType==1){j=a(j);var h=j.css("display");var g=j.css("float");return h=="inline"||h=="inline-block"||g=="left"||g=="right"}}return true};this.is=function(h,g){if(h&&h.nodeName){if(typeof(g)=="string"){g=this.regExp[g]||/.?/}if(g instanceof RegExp&&h.nodeName){return g.test(h.nodeName)}else{if(typeof(g)=="function"){return g(h)}}}return false};this.filter=function(j,h){var f=[],g;if(!j.push){return this.is(j,h)?j:null}for(g=0;g<j.length;g++){if(this.is(j[g],h)){f.push(j[g])}}return f};this.parents=function(h,g){var f=[];while(h&&(h=h.parentNode)&&h.nodeName!="BODY"&&h.nodeName!="HTML"){if(this.is(h,g)){f.push(h)}}return f};this.parent=function(h,g){return this.parents(h,g)[0]||null};this.selfOrParent=function(h,g,f){return this.is(h,g)?h:this.parent(h,f||g)};this.selfOrParentLink=function(f){f=this.selfOrParent(f,/^A$/);return f&&f.href?f:null};this.selfOrParentAnchor=function(f){f=this.selfOrParent(f,/^A$/);return f&&!f.href&&f.name?f:null};this.childLinks=function(g){var f=[];a("a[href]",g).each(function(){f.push(this)});return f};this.selectionHas=function(h){var j=this.rte.selection.cloneContents(),g;if(j&&j.childNodes&&j.childNodes.length){for(g=0;g<j.childNodes.length;g++){if(typeof(h)=="function"){if(h(j.childNodes[g])){return true}}else{if(j instanceof RegExp){if(h.test(j.childNodes[g].nodeName)){return true}}}}}return false};this.wrap=function(g,f){g=a.isArray(g)?g:[g];f=f.nodeName?f:this.create(f);if(g[0]&&g[0].nodeType&&g[0].parentNode){f=g[0].parentNode.insertBefore(f,g[0]);a(g).each(function(){if(this!=f){f.appendChild(this)}})}return f};this.unwrap=function(f){while(f.firstChild){f.parentNode.insertBefore(f.firstChild,f)}f.parentNode.removeChild(f)};this.wrapContents=function(h,f){f=f.nodeName?f:this.create(f);for(var g=0;g<h.childNodes.length;g++){f.appendChild(h.childNodes[g])}h.appendChild(f);return f};this.cleanNode=function(f){if(f.nodeType!=1){return}if(/^(P|LI)$/.test(f.nodeName)&&(l=this.findLastNotEmpty(f))&&l.nodeName=="BR"){a(l).remove()}$n=a(f);$n.children().each(function(){this.cleanNode(this)});if(f.nodeName!="BODY"&&!/^(TABLE|TR|TD)$/.test(f)&&this.isEmpty(f)){return $n.remove()}if($n.attr("style")===""){$n.removeAttr("style")}if(this.rte.browser.safari&&$n.hasClass("Apple-span")){$n.removeClass("Apple-span")}if(f.nodeName=="SPAN"&&!$n.attr("style")&&!$n.attr("class")&&!$n.attr("id")){$n.replaceWith($n.html())}};this.cleanChildNodes=function(g){var f=this.cleanNode;a(g).children().each(function(){f(this)})};this.tableMatrix=function(j){var h=[];if(j&&j.nodeName=="TABLE"){var g=0;function f(o){for(var k=0;k<=g;k++){if(!h[o][k]){return k}}}a(j).find("tr").each(function(k){if(!a.isArray(h[k])){h[k]=[]}a(this).children("td,th").each(function(){var p=parseInt(a(this).attr("colspan")||1);var t=parseInt(a(this).attr("rowspan")||1);var r=f(k);for(var v=0;v<t;v++){for(var o=0;o<p;o++){var q=k+v;if(!a.isArray(h[q])){h[q]=[]}var u=o==0&&v==0?this:(v==0?o:"-");h[q][r+o]=u}}g=Math.max(g,h[k].length)})})}return h};this.indexesOfCell=function(j,h){for(var f=0;f<h.length;f++){for(var g=0;g<h[f].length;g++){if(h[f][g]==j){return[f,g]}}}};this.fixTable=function(q){if(q&&q.nodeName=="TABLE"){var h=a(q);var p=this.tableMatrix(q);var f=0;a.each(p,function(){f=Math.max(f,this.length)});if(f==0){return h.remove()}for(var k=0;k<p.length;k++){var g=p[k].length;if(g==0){h.find("tr").eq(k).remove()}else{if(g<f){var j=f-g;var o=h.find("tr").eq(k);for(i=0;i<j;i++){o.append("<td>&nbsp;</td>")}}}}}};this.tableColumn=function(h,g,o){h=this.selfOrParent(h,/^TD|TH$/);var j=this.selfOrParent(h,/^TABLE$/);ret=[];info={offset:[],delta:[]};if(h&&j){o&&this.fixTable(j);var u=this.tableMatrix(j);var v=false;var t;for(var f=0;f<u.length;f++){for(var q=0;q<u[f].length;q++){if(u[f][q]==h){t=q;v=true;break}}if(v){break}}if(t>=0){for(var f=0;f<u.length;f++){var k=u[f][t]||null;if(k){if(k.nodeName){ret.push(k);if(g){info.delta.push(0);info.offset.push(t)}}else{var p=parseInt(k);if(!isNaN(p)&&u[f][t-p]&&u[f][t-p].nodeName){ret.push(u[f][t-p]);if(g){info.delta.push(p);info.offset.push(t)}}}}}}}return !g?ret:{column:ret,info:info}}}})(jQuery);(function(a){elRTE.prototype.filter=function(c){var b=this,f=a("<span/>").addClass("elrtetesturl").appendTo(document.body)[0];this.url=(typeof(f.currentStyle)!="undefined"?f.currentStyle.backgroundImage:document.defaultView.getComputedStyle(f,null)["backgroundImage"]).replace(/^url\((['"]?)([\s\S]+\/)[\s\S]+\1\)$/i,"$2");a(f).remove();this.rte=c;this.xhtml=/xhtml/i.test(c.options.doctype);this.boolAttrs=c.utils.makeObject("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected".split(","));this.tagRegExp=/<(\/?)([\w:]+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*\/?>/g;this.openTagRegExp=/<([\w:]+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*\/?>/g;this.attrRegExp=/(\w+)(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^\s]+))?/g;this.scriptRegExp=/<script([^>]*)>([\s\S]*?)<\/script>/gi;this.styleRegExp=/(<style([^>]*)>[\s\S]*?<\/style>)/gi;this.linkRegExp=/(<link([^>]+)>)/gi;this.cdataRegExp=/<!\[CDATA\[([\s\S]+)\]\]>/g;this.objRegExp=/<object([^>]*)>([\s\S]*?)<\/object>/gi;this.embRegExp=/<(embed)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*>/gi;this.paramRegExp=/<(param)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*>/gi;this.vimeoRegExp=/<(iframe)\s+([^>]*src\s*=\s*"http:\/\/[^"]+vimeo\.com\/\w+[^>]*)>([\s\S]*?)<\/iframe>/gi;this.yMapsRegExp=/<div\s+([^>]*id\s*=\s*('|")?YMapsID[^>]*)>/gi;this.gMapsRegExp=/<iframe\s+([^>]*src\s*=\s*"http:\/\/maps\.google\.\w+[^>]*)>([\s\S]*?)<\/iframe>/gi;this.videoHostRegExp=/^(http:\/\/[\w\.]*)?(youtube|vimeo|rutube).*/i;this.serviceClassRegExp=/<(\w+)([^>]*class\s*=\s*"[^>]*elrte-[^>]*)>\s*(<\/\1>)?/gi;this.pagebreakRegExp=/<(\w+)([^>]*style\s*=\s*"[^>]*page-break[^>]*)>\s*(<\/\1>)?/gi;this.pbRegExp=new RegExp("<!-- pagebreak -->","gi");this.allowTags=c.options.allowTags.length?c.utils.makeObject(c.options.allowTags):null;this.denyTags=c.options.denyTags.length?c.utils.makeObject(c.options.denyTags):null;this.denyAttr=c.options.denyAttr?c.utils.makeObject(c.options.denyAttr):null;this.pasteDenyAttr=c.options.pasteDenyAttr?c.utils.makeObject(c.options.pasteDenyAttr):null;this.fontSize=["medium","xx-small","small","medium","large","x-large","xx-large"];this.fontFamily={"sans-serif":/^(arial|tahoma|verdana)$/i,serif:/^(times|times new roman)$/i,monospace:/^courier$/i};this.scripts={};this._chains={};a.each(this.chains,function(g){b._chains[g]=[];a.each(this,function(h,j){typeof(b.rules[j])=="function"&&b._chains[g].push(b.rules[j])})});this.proccess=function(h,g){g=a.trim(g).replace(/^\s*(&nbsp;)+/gi,"").replace(/(&nbsp;|<br[^>]*>)+\s*$/gi,"");a.each(this._chains[h]||[],function(){g=this.call(b,g)});return g.replace(/\t/g,"  ").replace(/\r/g,"").replace(/\s*\n\s*\n+/g,"\n")+"  "};this.wysiwyg=function(g){return this.proccess("wysiwyg",g)};this.source=function(g){return this.proccess("source",g)};this.source2source=function(g){return this.proccess("source2source",g)};this.wysiwyg2wysiwyg=function(g){return this.proccess("wysiwyg2wysiwyg",g)};this.parseAttrs=function(p){var j={},h=this.boolAttrs,g=p.match(this.attrRegExp),o,q,k;g&&a.each(g,function(r,t){o=t.split("=");q=a.trim(o[0]).toLowerCase();if(o.length>2){o.shift();k=o.join("=")}else{k=h[q]||o[1]||""}j[q]=a.trim(k).replace(/^('|")(.*)(\1)$/,"$2")});j.style=this.rte.utils.parseStyle(j.style);j["class"]=this.rte.utils.parseClass(j["class"]||"");return j};this.serializeAttrs=function(g,k){var j=[],h=this;a.each(g,function(p,o){if(p=="style"){o=h.rte.utils.serializeStyle(o,k)}else{if(p=="class"){o=h.rte.utils.serializeClass(o)}}o&&j.push(p+'="'+o+'"')});return j.join(" ")};this.cleanAttrs=function(g,j){var h=this,o=this.replaceAttrs;a.each(g["class"],function(p){/^(Apple-style-span|mso\w+)$/i.test(p)&&delete g["class"][p]});function k(p){return p+(/\d$/.test(p)?"px":"")}a.each(g,function(q,p){o[q]&&o[q].call(h,g,j);if(q=="style"){a.each(p,function(t,r){switch(t){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":g.style[t.replace(/^mso-|-alt$/g,"")]=k(r);delete g.style[t];break;case"horiz-align":g.style["text-align"]=r;delete g.style[t];break;case"vert-align":g.style["vertical-align"]=r;delete g.style[t];break;case"font-color":case"mso-foreground":g.style.color=r;delete g.style[t];break;case"mso-background":case"mso-highlight":g.style.background=r;delete g.style[t];break;case"mso-default-height":g.style["min-height"]=k(r);delete g.style[t];break;case"mso-default-width":g.style["min-width"]=k(r);delete g.style[t];break;case"mso-padding-between-alt":g.style["border-collapse"]="separate";g.style["border-spacing"]=k(r);delete g.style[t];break;case"text-line-through":if(r.match(/(single|double)/i)){g.style["text-decoration"]="line-through"}delete g.style[t];break;case"mso-zero-height":if(r=="yes"){g.style.display="none"}delete g.style[t];break;case"font-weight":if(r==700){g.style["font-weight"]="bold"}break;default:if(t.match(/^(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)/)){delete g.style[t]}}})}});return g}};elRTE.prototype.filter.prototype.replaceTags={b:{tag:"strong"},big:{tag:"span",style:{"font-size":"large"}},center:{tag:"div",style:{"text-align":"center"}},i:{tag:"em"},font:{tag:"span"},nobr:{tag:"span",style:{"white-space":"nowrap"}},menu:{tag:"ul"},plaintext:{tag:"pre"},s:{tag:"strike"},small:{tag:"span",style:{"font-size":"small"}},u:{tag:"span",style:{"text-decoration":"underline"}},xmp:{tag:"pre"}};elRTE.prototype.filter.prototype.replaceAttrs={align:function(b,c){switch(c){case"img":b.style[b.align.match(/(left|right)/)?"float":"vertical-align"]=b.align;break;case"table":if(b.align=="center"){b.style["margin-left"]=b.style["margin-right"]="auto"}else{b.style["float"]=b.align}break;default:b.style["text-align"]=b.align}delete b.align},border:function(b){!b.style["border-width"]&&(b.style["border-width"]=(parseInt(b.border)||1)+"px");!b.style["border-style"]&&(b.style["border-style"]="solid");delete b.border},bordercolor:function(b){!b.style["border-color"]&&(b.style["border-color"]=b.bordercolor);delete b.bordercolor},background:function(b){!b.style["background-image"]&&(b.style["background-image"]="url("+b.background+")");delete b.background},bgcolor:function(b){!b.style["background-color"]&&(b.style["background-color"]=b.bgcolor);delete b.bgcolor},clear:function(b){b.style.clear=b.clear=="all"?"both":b.clear;delete b.clear},color:function(b){!b.style.color&&(b.style.color=b.color);delete b.color},face:function(b){var c=b.face.toLowerCase();a.each(this.fontFamily,function(g,f){if(c.match(f)){b.style["font-family"]=c+","+g}});delete b.face},hspace:function(b,f){if(f=="img"){var c=parseInt(b.hspace)||0;!b.style["margin-left"]&&(b.style["margin-left"]=c+"px");!b.style["margin-right"]&&(b.style["margin-right"]=c+"px");delete b.hspace}},size:function(b,c){if(c!="input"){b.style["font-size"]=this.fontSize[parseInt(b.size)||0]||"medium";delete b.size}},valign:function(b){if(!b.style["vertical-align"]){b.style["vertical-align"]=b.valign}delete b.valign},vspace:function(b,f){if(f=="img"){var c=parseInt(b.vspace)||0;!b.style["margin-top"]&&(b.style["margin-top"]=c+"px");!b.style["margin-bottom"]&&(b.style["margin-bottom"]=c+"px");delete b.hspace}}};elRTE.prototype.filter.prototype.rules={allowedTags:function(c){var b=this.allowTags;return b?c.replace(this.tagRegExp,function(f,h,g){return b[g.toLowerCase()]?f:""}):c},deniedTags:function(b){var c=this.denyTags;return c?b.replace(this.tagRegExp,function(f,h,g){return c[g.toLowerCase()]?"":f}):b},clean:function(g){var c=this,b=this.replaceTags,h=this.replaceAttrs,f=this.denyAttr,j;return g.replace(/<!DOCTYPE([\s\S]*)>/gi,"").replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>").replace(/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s&nbsp;]*)<\/span>/gi,"$1").replace(/(<p[^>]*>\s*<\/p>|<p[^>]*\/>)/gi,"<br>").replace(this.tagRegExp,function(o,q,p,k){p=p.toLowerCase();if(q){return"</"+(b[p]?b[p].tag:p)+">"}k=c.cleanAttrs(c.parseAttrs(k||""),p);if(b[p]){b[p].style&&a.extend(k.style,b[p].style);p=b[p].tag}f&&a.each(k,function(r){if(f[r]){delete k[r]}});k=c.serializeAttrs(k);return"<"+p+(k?" ":"")+k+">"})},cleanPaste:function(c){var b=this,f=this.pasteDenyAttr;c=c.replace(this.scriptRegExp,"").replace(this.styleRegExp,"").replace(this.linkRegExp,"").replace(this.cdataRegExp,"").replace(/\<\!--[\s\S]*?--\>/g,"");if(this.rte.options.pasteOnlyText){c=c.replace(this.tagRegExp,function(g,j,h){return/br/i.test(h)||(j&&/h[1-6]|p|ol|ul|li|div|blockquote|tr/i)?"<br>":""}).replace(/(&nbsp;|<br[^>]*>)+\s*$/gi,"")}else{if(f){c=c.replace(this.openTagRegExp,function(h,j,g){g=b.parseAttrs(g);a.each(g,function(k){if(f[k]){delete g[k]}});g=b.serializeAttrs(g,true);return"<"+j+(g?" ":"")+g+">"})}}return c},replace:function(o){var q=this,b=this.rte.options.replace||[],g;if(b.length){a.each(b,function(r,t){if(typeof(t)=="function"){o=t.call(q,o)}})}function k(x,D){var E=r(),B=E&&q.videoHostRegExp.test(E)?E.replace(q.videoHostRegExp,"$2"):D.replace(/^\w+\/(.+)/,"$1"),C=parseInt((x.obj?x.obj.width||x.obj.style.width:0)||(x.embed?x.embed.width||x.embed.style.width:0))||150,A=parseInt((x.obj?x.obj.height||x.obj.style.height:0)||(x.embed?x.embed.height||x.embed.style.height:0))||100,v="media"+Math.random().toString().substring(2),u="",z;function r(){if(x.embed&&x.embed.src){return x.embed.src}if(x.params&&x.params.length){z=x.params.length;while(z--){if(x.params[z].name=="src"||x.params[z].name=="movie"){return x.params[z].value}}}}if(x.obj&&x.obj.style&&x.obj.style["float"]){u=' style="float:'+x.obj.style["float"]+'"'}q.scripts[v]=x;return'<img src="'+q.url+'pixel.gif" class="elrte-media elrte-media-'+B+' elrte-protected" title="'+(E?q.rte.utils.encode(E):"")+'" rel="'+v+'" width="'+C+'" height="'+A+'"'+u+">"}o=o.replace(this.styleRegExp,"<!-- ELRTE_COMMENT$1 -->").replace(this.linkRegExp,"<!-- ELRTE_COMMENT$1-->").replace(this.cdataRegExp,"<!--[CDATA[$1]]-->").replace(this.scriptRegExp,function(u,r,v){var w;if(q.denyTags.script){return""}w="script"+Math.random().toString().substring(2);r=q.parseAttrs(r);!r.type&&(r.type="text/javascript");q.scripts[w]="<script "+q.serializeAttrs(r)+">"+v+"<\/script>";return"<!-- ELRTE_SCRIPT:"+(w)+" -->"}).replace(this.yMapsRegExp,function(u,r){r=q.parseAttrs(r);r["class"]["elrte-yandex-maps"]="elrte-yandex-maps";r["class"]["elrte-protected"]="elrte-protected";return"<div "+q.serializeAttrs(r)+">"}).replace(this.gMapsRegExp,function(v,u){var z="gmaps"+Math.random().toString().substring(2),r,x;u=q.parseAttrs(u);r=parseInt(u.width||u.style.width||100);x=parseInt(u.height||u.style.height||100);q.scripts[z]=v;return'<img src="'+q.url+'pixel.gif" class="elrte-google-maps elrte-protected" id="'+z+'" style="width:'+r+"px;height:"+x+'px">'}).replace(this.objRegExp,function(w,u,z){var r=z.match(q.embRegExp),x={obj:q.parseAttrs(u),embed:r&&r.length?q.parseAttrs(r[0].substring(7)):null,params:[]},v=q.rte.utils.mediaInfo(x.embed?x.embed.type||"":"",x.obj.classid||"");if(v){if((r=z.match(q.paramRegExp))){a.each(r,function(t,A){x.params.push(q.parseAttrs(A.substring(6)))})}!x.obj.classid&&(x.obj.classid=v.classid[0]);!x.obj.codebase&&(x.obj.codebase=v.codebase);x.embed&&!x.embed.type&&(x.embed.type=v.type);x.obj.width=="1"&&delete x.obj.width;x.obj.height=="1"&&delete x.obj.height;if(x.embed){x.embed.width=="1"&&delete x.embed.width;x.embed.height=="1"&&delete x.embed.height}return k(x,v.type)}return w}).replace(this.embRegExp,function(v,w,r){var r=q.parseAttrs(r),u=q.rte.utils.mediaInfo(r.type||"");r.width=="1"&&delete r.width;r.height=="1"&&delete r.height;return u?k({embed:r},u.type):v}).replace(this.vimeoRegExp,function(u,v,r){r=q.parseAttrs(r);delete r.frameborder;r.width=="1"&&delete r.width;r.height=="1"&&delete r.height;r.type="application/x-shockwave-flash";return k({embed:r},"application/x-shockwave-flash")}).replace(/<\/(embed|param)>/gi,"").replace(this.pbRegExp,function(){return'<img src="'+q.url+'pixel.gif" class="elrte-protected elrte-pagebreak">'});g=a("<div>"+o+"</div>");g.find("span:not([id]):not([class])").each(function(){var r=a(this);if(!r.attr("style")){r.children().length?q.rte.dom.unwrap(this):r.remove()}}).end().find("span span:only-child").each(function(){var u=a(this),x=u.parent().eq(0),w=u.attr("id"),r=x.attr("id"),A,v,z;if(q.rte.dom.is(this,"onlyChild")&&(!w||!r)){z=a.trim(x.attr("class")+" "+u.attr("class"));z&&x.attr("class",z);v=q.rte.utils.serializeStyle(a.extend(q.rte.utils.parseStyle(a(this).attr("style")||""),q.rte.utils.parseStyle(a(x).attr("style")||"")));v&&x.attr("style",v);A=w||r;A&&x.attr("id",A);this.firstChild?a(this.firstChild).unwrap():u.remove()}});if(!this.rte.options.allowTextNodes){var h=this.rte.dom,c=[],p=[];if(a.browser.msie){for(var j=0;j<g[0].childNodes.length;j++){c.push(g[0].childNodes[j])}}else{c=Array.prototype.slice.call(g[0].childNodes)}function f(){if(p.length&&h.filter(p,"notEmpty").length){h.wrap(p,document.createElement("p"))}p=[]}a.each(c,function(r,t){if(h.is(t,"block")){f()}else{if(p.length&&t.previousSibling!=p[p.length-1]){f()}p.push(t)}});f()}return g.html()},restore:function(c){var b=this,f=this.rte.options.restore|[];if(f.length){a.each(f,function(g,h){if(typeof(h)=="function"){c=h.call(b,c)}})}c=c.replace(/\<\!--\[CDATA\[([\s\S]*?)\]\]--\>/gi,"<![CDATA[$1]]>").replace(/\<\!--\s*ELRTE_SCRIPT\:\s*(script\d+)\s*--\>/gi,function(g,h){if(b.scripts[h]){g=b.scripts[h];delete b.scripts[h]}return g||""}).replace(/\<\!-- ELRTE_COMMENT([\s\S]*?) --\>/gi,"$1").replace(this.serviceClassRegExp,function(k,r,g,p){var g=b.parseAttrs(g),h,q="";if(g["class"]["elrte-media"]){h=b.scripts[g.rel]||{};h.params&&a.each(h.params,function(j,o){q+="<param "+b.serializeAttrs(o)+">\n"});h.embed&&(q+="<embed "+b.serializeAttrs(h.embed)+">");h.obj&&(q="<object "+b.serializeAttrs(h.obj)+">\n"+q+"\n</object>\n");return q||k}else{if(g["class"]["elrte-google-maps"]){var k="";if(b.scripts[g.id]){k=b.scripts[g.id];delete b.scripts[g.id]}return k}else{if(g["class"]["elrte-pagebreak"]){return"<!-- pagebreak -->"}}}a.each(g["class"],function(j){/^elrte-\w+/i.test(j)&&delete (g["class"][j])});return"<"+r+" "+b.serializeAttrs(g)+">"+(p||"")});return c},compactStyles:function(c){var b=this;return c.replace(this.tagRegExp,function(g,j,h,f){f=!j&&f?b.serializeAttrs(b.parseAttrs(f),true):"";return"<"+j+h.toLowerCase()+(f?" ":"")+f+">"})},xhtmlTags:function(b){return this.xhtml?b.replace(/<(img|hr|br|embed|param|link)([^>]*\/*)>/gi,"<$1$2 />"):b}};elRTE.prototype.filter.prototype.chains={wysiwyg:["clean","allowedTags","replace","deniedTags","compactStyles"],source:["clean","allowedTags","restore","compactStyles","xhtmlTags"],paste:["clean","allowedTags","cleanPaste","replace","deniedTags","compactStyles"],wysiwyg2wysiwyg:["clean","allowedTags","restore","replace","deniedTags","compactStyles"],source2source:["clean","allowedTags","replace","deniedTags","restore","compactStyles","xhtmlTags"]}})(jQuery);(function(a){elRTE.prototype.history=function(b){this.rte=b;this._prev=[];this._next=[];this.add=function(){if(this.rte.options.historyLength>0&&this._prev.length>=this.rte.options.historyLength){this._prev.slice(this.rte.options.historyLength)}var c=this.rte.selection.getBookmark();this._prev.push([a(this.rte.doc.body).html(),c]);this.rte.selection.moveToBookmark(c);this._next=[]};this.back=function(){if(this._prev.length){var c=this.rte.selection.getBookmark(),f=this._prev.pop();this._next.push([a(this.rte.doc.body).html(),c]);a(this.rte.doc.body).html(f[0]);this.rte.selection.moveToBookmark(f[1])}};this.fwd=function(){if(this._next.length){var c=this.rte.selection.getBookmark(),f=this._next.pop();this._prev.push([a(this.rte.doc.body).html(),c]);a(this.rte.doc.body).html(f[0]);this.rte.selection.moveToBookmark(f[1])}};this.canBack=function(){return this._prev.length};this.canFwd=function(){return this._next.length}}})(jQuery);(function(a){elRTE.prototype.options={doctype:'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',cssClass:"el-rte",cssfiles:[],height:null,resizable:true,lang:"en",toolbar:"normal",absoluteURLs:true,allowSource:true,stripWhiteSpace:true,styleWithCSS:false,fmAllow:true,fmOpen:null,allowTags:[],denyTags:["applet","base","basefont","bgsound","blink","body","col","colgroup","iframe","isindex","frameset","html","head","meta","marquee","noframes","noembed","o:p","title","xml"],denyAttr:[],pasteDenyAttr:["id","name","class","style","language","onclick","ondblclick","onhover","onkeup","onkeydown","onkeypress"],allowTextNodes:false,allowBrowsersSpecStyles:false,allowPaste:true,pasteOnlyText:false,replace:[],restore:[],pagebreak:'<div style="page-break-after: always;"></div>',buttons:{save:"Save",copy:"Copy",cut:"Cut",css:"Css style and class",paste:"Paste",pastetext:"Paste only text",pasteformattext:"Paste formatted text",removeformat:"Clean format",undo:"Undo last action",redo:"Redo previous action",bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",superscript:"Superscript",subscript:"Subscript",justifyleft:"Align left",justifyright:"Ailgn right",justifycenter:"Align center",justifyfull:"Align full",indent:"Indent",outdent:"Outdent",rtl:"Right to left",ltr:"Left to right",forecolor:"Font color",hilitecolor:"Background color",formatblock:"Format",fontsize:"Font size",fontname:"Font",insertorderedlist:"Ordered list",insertunorderedlist:"Unordered list",horizontalrule:"Horizontal rule",blockquote:"Blockquote",div:"Block element (DIV)",link:"Link",unlink:"Delete link",anchor:"Bookmark",image:"Image",pagebreak:"Page break",smiley:"Smiley",flash:"Flash",table:"Table",tablerm:"Delete table",tableprops:"Table properties",tbcellprops:"Table cell properties",tbrowbefore:"Insert row before",tbrowafter:"Insert row after",tbrowrm:"Delete row",tbcolbefore:"Insert column before",tbcolafter:"Insert column after",tbcolrm:"Delete column",tbcellsmerge:"Merge table cells",tbcellsplit:"Split table cell",docstructure:"Toggle display document structure",elfinder:"Open file manager",fullscreen:"Toggle full screen mode",nbsp:"Non breakable space",stopfloat:"Stop element floating",about:"About this software"},panels:{save:["save"],copypaste:["copy","cut","paste","pastetext","pasteformattext","removeformat","docstructure"],undoredo:["undo","redo"],style:["bold","italic","underline","strikethrough","subscript","superscript"],colors:["forecolor","hilitecolor"],alignment:["justifyleft","justifycenter","justifyright","justifyfull"],indent:["outdent","indent"],format:["formatblock","fontsize","fontname"],lists:["insertorderedlist","insertunorderedlist"],elements:["horizontalrule","blockquote","div","stopfloat","css","nbsp","smiley","pagebreak"],direction:["ltr","rtl"],links:["link","unlink","anchor"],images:["image"],media:["image","flash"],tables:["table","tableprops","tablerm","tbrowbefore","tbrowafter","tbrowrm","tbcolbefore","tbcolafter","tbcolrm","tbcellprops","tbcellsmerge","tbcellsplit"],elfinder:["elfinder"],fullscreen:["fullscreen","about"]},toolbars:{tiny:["style"],compact:["save","undoredo","style","alignment","lists","links","fullscreen"],normal:["save","copypaste","undoredo","style","alignment","colors","indent","lists","links","elements","images","fullscreen"],complete:["save","copypaste","undoredo","style","alignment","colors","format","indent","lists","links","elements","media","fullscreen"],maxi:["save","copypaste","undoredo","elfinder","style","alignment","direction","colors","format","indent","lists","links","elements","media","tables","fullscreen"],eldorado:["save","copypaste","elfinder","undoredo","style","alignment","colors","format","indent","lists","links","elements","media","tables","fullscreen"]},panelNames:{save:"Save",copypaste:"Copy/Pase",undoredo:"Undo/Redo",style:"Text styles",colors:"Colors",alignment:"Alignment",indent:"Indent/Outdent",format:"Text format",lists:"Lists",elements:"Misc elements",direction:"Script direction",links:"Links",images:"Images",media:"Media",tables:"Tables",elfinder:"File manager (elFinder)"}}})(jQuery);(function(a){elRTE.prototype.selection=function(g){this.rte=g;var c=this;this.w3cRange=null;var o,b,j,k;a(this.rte.doc).keyup(function(p){if(p.ctrlKey||p.metaKey||(p.keyCode>=8&&p.keyCode<=13)||(p.keyCode>=32&&p.keyCode<=40)||p.keyCode==46||(p.keyCode>=96&&p.keyCode<=111)){c.cleanCache()}}).mousedown(function(p){if(p.target.nodeName=="HTML"){o=c.rte.doc.body}else{o=p.target}b=j=null}).mouseup(function(p){if(p.target.nodeName=="HTML"){b=c.rte.doc.body}else{b=p.target}b=p.target;j=null}).click();function h(){return c.rte.window.getSelection?c.rte.window.getSelection():c.rte.window.document.selection}function f(t,r,q){while(t.nodeName!="BODY"&&t.parentNode&&t.parentNode.nodeName!="BODY"&&(r?t!==r&&t.parentNode!=r:1)&&((q=="left"&&c.rte.dom.isFirstNotEmpty(t))||(q=="right"&&c.rte.dom.isLastNotEmpty(t))||(c.rte.dom.isFirstNotEmpty(t)&&c.rte.dom.isLastNotEmpty(t)))){t=t.parentNode}return t}this.collapsed=function(){return this.getRangeAt().isCollapsed()};this.collapse=function(p){var q=h(),t=this.getRangeAt();t.collapse(p?true:false);if(!a.browser.msie){q.removeAllRanges();q.addRange(t)}return this};this.getRangeAt=function(t){if(this.rte.browser.msie){if(!this.w3cRange){this.w3cRange=new this.rte.w3cRange(this.rte)}t&&this.w3cRange.update();return this.w3cRange}var p=h();var q=p.rangeCount>0?p.getRangeAt(0):this.rte.doc.createRange();q.getStart=function(){return this.startContainer.nodeType==1?this.startContainer.childNodes[Math.min(this.startOffset,this.startContainer.childNodes.length-1)]:this.startContainer};q.getEnd=function(){return this.endContainer.nodeType==1?this.endContainer.childNodes[Math.min(this.startOffset==this.endOffset?this.endOffset:this.endOffset-1,this.endContainer.childNodes.length-1)]:this.endContainer};q.isCollapsed=function(){return this.collapsed};return q};this.saveIERange=function(){if(a.browser.msie){k=this.getRangeAt().getBookmark()}};this.restoreIERange=function(){a.browser.msie&&k&&this.getRangeAt().moveToBookmark(k)};this.cloneContents=function(){var v=this.rte.dom.create("div"),q,u,p;if(a.browser.msie){try{q=this.rte.window.document.selection.createRange()}catch(t){q=this.rte.doc.body.createTextRange()}a(v).html(q.htmlText)}else{u=this.getRangeAt().cloneContents();for(p=0;p<u.childNodes.length;p++){v.appendChild(u.childNodes[p].cloneNode(true))}}return v};this.select=function(t,w){w=w||t;if(this.rte.browser.msie){var u=this.rte.doc.body.createTextRange(),q=u.duplicate(),p=u.duplicate();q.moveToElementText(t);p.moveToElementText(w);u.setEndPoint("StartToStart",q);u.setEndPoint("EndToEnd",p);u.select()}else{var v=h(),u=this.getRangeAt();u.setStartBefore(t);u.setEndAfter(w);v.removeAllRanges();v.addRange(u)}return this.cleanCache()};this.selectContents=function(u){var q=this.getRangeAt();if(u&&u.nodeType==1){if(this.rte.browser.msie){q.range();q.r.moveToElementText(u.parentNode);q.r.select()}else{try{q.selectNodeContents(u)}catch(t){return this.rte.log("unable select node contents "+u)}var p=h();p.removeAllRanges();p.addRange(q)}}return this};this.deleteContents=function(){if(!a.browser.msie){this.getRangeAt().deleteContents()}return this};this.insertNode=function(v,u){if(u&&!this.collapsed()){this.collapse()}if(this.rte.browser.msie){var p=v.nodeType==3?v.nodeValue:a(this.rte.dom.create("span")).append(a(v)).html();var t=this.getRangeAt();t.insertNode(p)}else{var t=this.getRangeAt();t.insertNode(v);t.setStartAfter(v);t.setEndAfter(v);var q=h();q.removeAllRanges();q.addRange(t)}return this.cleanCache()};this.insertHtml=function(p,q){if(q&&!this.collapsed()){this.collapse()}if(this.rte.browser.msie){this.getRangeAt().range().pasteHTML(p)}else{var r=a(this.rte.dom.create("span")).html(p||"").get(0);this.insertNode(r);a(r).replaceWith(a(r).html())}return this.cleanCache()};this.insertText=function(q,p){var r=this.rte.doc.createTextNode(q);return this.insertHtml(r.nodeValue)};this.getBookmark=function(){this.rte.window.focus();var p,v,t,z,w,A=this.rte.dom.createBookmark(),x=this.rte.dom.createBookmark();if(a.browser.msie){try{p=this.rte.window.document.selection.createRange()}catch(x){p=this.rte.doc.body.createTextRange()}if(p.item){var u=p.item(0);p=this.rte.doc.body.createTextRange();p.moveToElementText(u)}v=p.duplicate();t=p.duplicate();z=this.rte.dom.create("span");w=this.rte.dom.create("span");z.appendChild(A);w.appendChild(x);v.collapse(true);v.pasteHTML(z.innerHTML);t.collapse(false);t.pasteHTML(w.innerHTML)}else{var q=h();var p=q.rangeCount>0?q.getRangeAt(0):this.rte.doc.createRange();v=p.cloneRange();t=p.cloneRange();t.collapse(false);t.insertNode(x);v.collapse(true);v.insertNode(A);this.select(A,x)}return[A.id,x.id]};this.moveToBookmark=function(p){this.rte.window.focus();if(p&&p.length==2){var q=this.rte.doc.getElementById(p[0]),v=this.rte.doc.getElementById(p[1]),u,t;if(q&&v){this.select(q,v);if(this.rte.dom.next(q)==v){this.collapse(true)}if(!a.browser.msie){u=h();t=u.rangeCount>0?u.getRangeAt(0):this.rte.doc.createRange();u.removeAllRanges();u.addRange(t)}q.parentNode.removeChild(q);v.parentNode.removeChild(v)}}return this};this.removeBookmark=function(p){this.rte.window.focus();if(p.length==2){var q=this.rte.doc.getElementById(p[0]),r=this.rte.doc.getElementById(p[1]);if(q&&r){q.parentNode.removeChild(q);r.parentNode.removeChild(r)}}};this.cleanCache=function(){o=b=j=null;return this};this.getStart=function(){if(!o){var p=this.getRangeAt();o=p.getStart()}return o};this.getEnd=function(){if(!b){var p=this.getRangeAt();b=p.getEnd()}return b};this.getNode=function(){if(!j){j=this.rte.dom.findCommonAncestor(this.getStart(),this.getEnd())}return j};this.selected=function(r){var p={collapsed:false,blocks:false,filter:false,wrap:"text",tag:"span"};p=a.extend({},p,r);if(p.blocks){var v=this.getNode(),u=null;if(u=this.rte.dom.selfOrParent(v,"selectionBlock")){return[u]}}var t=this.selectedRaw(p.collapsed,p.blocks);var A=[];var w=[];var B=null;function q(){function D(){for(var F=0;F<w.length;F++){if(w[F].nodeType==1&&(c.rte.dom.selfOrParent(w[F],/^P$/)||a(w[F]).find("p").length>0)){return false}}return true}if(w.length>0){var C=p.tag=="p"&&!D()?"div":p.tag;var E=c.rte.dom.wrap(w,C);A[B]=E;B=null;w=[]}}function z(E){if(E.nodeType==1){if(/^(THEAD|TFOOT|TBODY|COL|COLGROUP|TR)$/.test(E.nodeName)){a(E).find("td,th").each(function(){var F=p.tag=="p"&&a(this).find("p").length>0?"div":p.tag;var G=c.rte.dom.wrapContents(this,F);return A.push(G)})}else{if(/^(CAPTION|TD|TH|LI|DT|DD)$/.test(E.nodeName)){var C=p.tag=="p"&&a(E).find("p").length>0?"div":p.tag;var E=c.rte.dom.wrapContents(E,C);return A.push(E)}}}var D=w.length>0?w[w.length-1]:null;if(D&&D!=c.rte.dom.prev(E)){q()}w.push(E);if(B===null){B=A.length;A.push("dummy")}}if(t.nodes.length>0){for(var x=0;x<t.nodes.length;x++){var v=t.nodes[x];if(v.nodeType==3&&(x==0||x==t.nodes.length-1)&&a.trim(v.nodeValue).length>0){if(x==0&&t.so>0){v=v.splitText(t.so)}if(x==t.nodes.length-1&&t.eo>0){v.splitText(x==0&&t.so>0?t.eo-t.so:t.eo)}}switch(p.wrap){case"text":if((v.nodeType==1&&v.nodeName=="BR")||(v.nodeType==3&&a.trim(v.nodeValue).length>0)){z(v)}else{if(v.nodeType==1){A.push(v)}}break;case"inline":if(this.rte.dom.isInline(v)){z(v)}else{if(v.nodeType==1){A.push(v)}}break;case"all":if(v.nodeType==1||!this.rte.dom.isEmpty(v)){z(v)}break;default:if(v.nodeType==1||!this.rte.dom.isEmpty(v)){A.push(v)}}}q()}if(A.length){this.rte.window.focus();this.select(A[0],A[A.length-1])}return p.filter?this.rte.dom.filter(A,p.filter):A};this.dump=function(p,t,w,v,q){var u=this.getRangeAt();this.rte.log("commonAncestorContainer");this.rte.log(p||u.commonAncestorContainer);this.rte.log("startContainer");this.rte.log(t||u.startContainer);this.rte.log("startOffset: "+(v>=0?v:u.startOffset));this.rte.log("endContainer");this.rte.log(w||u.endContainer);this.rte.log("endOffset: "+(q>=0?q:u.endOffset))};this.selectedRaw=function(z,p){var F={so:null,eo:null,nodes:[]};var q=this.getRangeAt(true);var w=q.commonAncestorContainer;var H,E;var D=false;var B=false;function C(J,r,I){if(J.nodeType==3){I=I>=0?I:J.nodeValue.length;return(r==0&&I==J.nodeValue.length)||a.trim(J.nodeValue).length==a.trim(J.nodeValue.substring(r,I)).length}return true}function x(J,r,I){if(J.nodeType==1){return c.rte.dom.isEmpty(J)}else{if(J.nodeType==3){return a.trim(J.nodeValue.substring(r||0,I>=0?I:J.nodeValue.length)).length==0}}return true}if(q.startContainer.nodeType==1){if(q.startOffset<q.startContainer.childNodes.length){H=q.startContainer.childNodes[q.startOffset];F.so=H.nodeType==1?null:0}else{H=q.startContainer.childNodes[q.startOffset-1];F.so=H.nodeType==1?null:H.nodeValue.length}}else{H=q.startContainer;F.so=q.startOffset}if(q.collapsed){if(z){if(p){H=f(H);if(!this.rte.dom.isEmpty(H)||(H=this.rte.dom.next(H))){F.nodes=[H]}if(this.rte.dom.isInline(H)){F.nodes=this.rte.dom.toLineStart(H).concat(F.nodes,this.rte.dom.toLineEnd(H))}if(F.nodes.length>0){F.so=F.nodes[0].nodeType==1?null:0;F.eo=F.nodes[F.nodes.length-1].nodeType==1?null:F.nodes[F.nodes.length-1].nodeValue.length}}else{if(!this.rte.dom.isEmpty(H)){F.nodes=[H]}}}return F}if(q.endContainer.nodeType==1){E=q.endContainer.childNodes[q.endOffset-1];F.eo=E.nodeType==1?null:E.nodeValue.length}else{E=q.endContainer;F.eo=q.endOffset}if(H.nodeType==1||p||C(H,F.so,H.nodeValue.length)){H=f(H,w,"left");D=true;F.so=H.nodeType==1?null:0}if(E.nodeType==1||p||C(E,0,F.eo)){E=f(E,w,"right");B=true;F.eo=E.nodeType==1?null:E.nodeValue.length}if(p){if(H.nodeType!=1&&H.parentNode!=w&&H.parentNode.nodeName!="BODY"){H=H.parentNode;F.so=null}if(E.nodeType!=1&&E.parentNode!=w&&E.parentNode.nodeName!="BODY"){E=E.parentNode;F.eo=null}}if(H.parentNode==E.parentNode&&H.parentNode.nodeName!="BODY"&&(D&&this.rte.dom.isFirstNotEmpty(H))&&(B&&this.rte.dom.isLastNotEmpty(E))){H=E=H.parentNode;F.so=H.nodeType==1?null:0;F.eo=E.nodeType==1?null:E.nodeValue.length}if(H==E){if(!this.rte.dom.isEmpty(H)){F.nodes.push(H)}return F}var t=H;while(t.nodeName!="BODY"&&t.parentNode!==w&&t.parentNode.nodeName!="BODY"){t=t.parentNode}var G=E;while(G.nodeName!="BODY"&&G.parentNode!==w&&G.parentNode.nodeName!="BODY"){G=G.parentNode}if(!x(H,F.so,H.nodeType==3?H.nodeValue.length:null)){F.nodes.push(H)}var v=H;while(v!==t){var u=v;while((u=this.rte.dom.next(u))){F.nodes.push(u)}v=v.parentNode}v=t;while((v=this.rte.dom.next(v))&&v!=G){F.nodes.push(v)}var A=[];v=E;while(v!==G){var u=v;while((u=this.rte.dom.prev(u))){A.push(u)}v=v.parentNode}if(A.length){F.nodes=F.nodes.concat(A.reverse())}if(!x(E,0,E.nodeType==3?F.eo:null)){F.nodes.push(E)}if(p){if(this.rte.dom.isInline(H)){F.nodes=this.rte.dom.toLineStart(H).concat(F.nodes);F.so=F.nodes[0].nodeType==1?null:0}if(this.rte.dom.isInline(E)){F.nodes=F.nodes.concat(this.rte.dom.toLineEnd(E));F.eo=F.nodes[F.nodes.length-1].nodeType==1?null:F.nodes[F.nodes.length-1].nodeValue.length}}return F}}})(jQuery);(function(a){elRTE.prototype.ui=function(f){this.rte=f;this._buttons=[];var v=this,o=this.rte.options.toolbars[f.options.toolbar&&f.options.toolbars[f.options.toolbar]?f.options.toolbar:"normal"],r=o.length,g,k,j,h,t,u,q;for(q in this.buttons){if(this.buttons.hasOwnProperty(q)&&q!="button"){this.buttons[q].prototype=this.buttons.button.prototype}}while(r--){k=o[r];g=a('<ul class="panel-'+k+(r==0?" first":"")+'" />').prependTo(this.rte.toolbar);g.bind("mousedown",function(b){b.preventDefault()});j=this.rte.options.panels[k].length;while(j--){h=this.rte.options.panels[k][j];t=this.buttons[h]||this.buttons.button;this._buttons.push((u=new t(this.rte,h)));g.prepend(u.domElem)}}this.update();this.disable=function(){a.each(v._buttons,function(){!this.active&&this.domElem.addClass("disabled")})}};elRTE.prototype.ui.prototype.update=function(h){h&&this.rte.selection.cleanCache();var f=this.rte.selection.getNode(),c=this.rte.dom.parents(f,"*"),j=this.rte.rtl,q=j?" &laquo; ":" &raquo; ",o="",b,g;function k(r){var p=r.nodeName.toLowerCase();r=a(r);if(p=="img"){if(r.hasClass("elrte-media")){p="media"}else{if(r.hasClass("elrte-google-maps")){p="google map"}else{if(r.hasClass("elrte-yandex-maps")){p="yandex map"}else{if(r.hasClass("elrte-pagebreak")){p="pagebreak"}}}}}return p}if(f&&f.nodeType==1&&f.nodeName!="BODY"){c.unshift(f)}if(!j){c=c.reverse()}for(g=0;g<c.length;g++){o+=(g>0?q:"")+k(c[g])}this.rte.statusbar.html(o);a.each(this._buttons,function(){this.update()});this.rte.window.focus()};elRTE.prototype.ui.prototype.buttons={button:function(f,c){var b=this;this.rte=f;this.active=false;this.name=c;this.val=null;this.domElem=a('<li style="-moz-user-select:-moz-none" class="'+c+' rounded-3" name="'+c+'" title="'+this.rte.i18n(this.rte.options.buttons[c]||c)+'" unselectable="on" />').hover(function(){a(this).addClass("hover")},function(){a(this).removeClass("hover")}).click(function(g){g.stopPropagation();g.preventDefault();if(!a(this).hasClass("disabled")){b.command()}b.rte.window.focus()})}};elRTE.prototype.ui.prototype.buttons.button.prototype.command=function(){this.rte.history.add();try{this.rte.doc.execCommand(this.name,false,this.val)}catch(b){return this.rte.log("commands failed: "+this.name)}this.rte.ui.update(true)};elRTE.prototype.ui.prototype.buttons.button.prototype.update=function(){try{if(!this.rte.doc.queryCommandEnabled(this.name)){return this.domElem.addClass("disabled")}else{this.domElem.removeClass("disabled")}}catch(b){return}try{if(this.rte.doc.queryCommandState(this.name)){this.domElem.addClass("active")}else{this.domElem.removeClass("active")}}catch(b){}}})(jQuery);(function(a){elRTE.prototype.utils=function(c){this.rte=c;this.url=null;this.reg=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;this.baseURL="";this.path="";this.entities={"&":"&amp;",'"':"&quot;","<":"&lt;",">":"&gt;"};this.entitiesRegExp=/[<>&\"]/g;this.media=[{type:"application/x-shockwave-flash",classid:["clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"],codebase:"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"},{type:"application/x-director",classid:["clsid:166b1bca-3f9c-11cf-8075-444553540000"],codebase:"http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"},{type:"application/x-mplayer2",classid:["clsid:6bf52a52-394a-11d3-b153-00c04f79faa6","clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95","clsid:05589fa1-c356-11ce-bf01-00aa0055595a"],codebase:"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"},{type:"video/quicktime",classid:["clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b"],codebase:"http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"},{type:"audio/x-pn-realaudio-plugin",classid:["clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa"],codebase:"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"}];this.rgbRegExp=/\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*/i;this.colorsRegExp=/aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|rgb\s*\([^\)]+\)/i;this.colors={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",orange:"#ffa500",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#fffffff",yellow:"#ffff00"};var b=this;this.rgb2hex=function(f){return this.color2Hex(""+f)};this.toPixels=function(g){var f=g.match(/([0-9]+\.?[0-9]*)\s*(px|pt|em|%)/);if(f){g=f[1];unit=f[2]}if(g[0]=="."){g="0"+g}g=parseFloat(g);if(isNaN(g)){return""}var h=parseInt(a(document.body).css("font-size"))||16;switch(unit){case"em":return parseInt(g*h);case"pt":return parseInt(g*h/12);case"%":return parseInt(g*h/100)}return g};this.absoluteURL=function(g){!this.url&&this._url();g=a.trim(g);if(!g){return""}if(g[0]=="#"){return g}var f=this.parseURL(g);if(!f.host&&!f.path&&!f.anchor){return""}if(!this.rte.options.absoluteURLs){return g}if(f.protocol){return g}if(f.host&&(f.host.indexOf(".")!=-1||f.host=="localhost")){return this.url.protocol+"://"+g}if(g[0]=="/"){g=this.baseURL+g}else{if(g.indexOf("./")==0){g=g.substring(2)}g=this.baseURL+this.path+g}return g};this.parseURL=function(h){var g=h.match(this.reg);var f={};a.each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(j){f[this]=g[j]});if(!f.host.match(/[a-z0-9]/i)){f.host=""}return f};this.trimEventCallback=function(f){f=f?f.toString():"";return a.trim(f.replace(/\r*\n/mg,"").replace(/^function\s*on[a-z]+\s*\(\s*event\s*\)\s*\{(.+)\}$/igm,"$1"))};this._url=function(){this.url=this.parseURL(window.location.href);this.baseURL=this.url.protocol+"://"+(this.url.userInfo?parts.userInfo+"@":"")+this.url.host+(this.url.port?":"+this.url.port:"");this.path=!this.url.file?this.url.path:this.url.path.substring(0,this.url.path.length-this.url.file.length)};this.makeObject=function(g){var f={};a.each(g,function(h,j){f[j]=j});return f};this.encode=function(f){var g=this.entities;return(""+f).replace(this.entitiesRegExp,function(h){return g[h]})};this.decode=function(f){return a("<div/>").html(f||"").text()};this.parseStyle=function(k){var h={},f=this.rte.options.allowBrowsersSpecStyles,j,o,g;if(typeof(k)=="string"&&k.length){a.each(k.replace(/&quot;/gi,"'").split(";"),function(){j=this.toString().split(":");if(j[0]&&j[1]){o=a.trim(j[0]).toLowerCase();g=a.trim(j[1]);if(o=="color"||o=="background-color"){g=g.toLowerCase()}if(o&&g&&(f||o.substring(0,1)!="-")){h[o]=g}}})}return h};this.compactStyle=function(g){var f=this;if(g.border=="medium none"){delete g.border}a.each(g,function(j,h){if(/color$/i.test(j)){g[j]=f.color2Hex(h)}else{if(/^(border|background)$/i.test(j)){g[j]=h.replace(f.colorsRegExp,function(k){return f.color2Hex(k)})}}});if(g["border-width"]){g.border=g["border-width"]+" "+(g["border-style"]||"solid")+" "+(g["border-color"]||"#000");delete g["border-width"];delete g["border-style"];delete g["border-color"]}if(g["background-image"]){g.background=(g["background-color"]+" ")||""+g["background-image"]+" "+g["background-position"]||"0 0 "+g["background-repeat"]||"repeat";delete g["background-image"];delete ["background-image"];delete ["background-position"];delete ["background-repeat"]}if(g["margin-top"]&&g["margin-right"]&&g["margin-bottom"]&&g["margin-left"]){g.margin=g["margin-top"]+" "+g["margin-right"]+" "+g["margin-bottom"]+" "+g["margin-left"];delete g["margin-top"];delete g["margin-right"];delete g["margin-bottom"];delete g["margin-left"]}if(g["padding-top"]&&g["padding-right"]&&g["padding-bottom"]&&g["padding-left"]){g.padding=g["padding-top"]+" "+g["padding-right"]+" "+g["padding-bottom"]+" "+g["padding-left"];delete g["padding-top"];delete g["padding-right"];delete g["padding-bottom"];delete g["padding-left"]}if(g["list-style-type"]||g["list-style-position"]||g["list-style-image"]){g["list-style"]=a.trim(g["list-style-type"]||" "+g["list-style-position"]||""+g["list-style-image"]||"");delete g["list-style-type"];delete g["list-style-position"];delete g["list-style-image"]}return g};this.serializeStyle=function(g,h){var f=[];a.each(h?this.compactStyle(g):g,function(k,j){j&&f.push(k+":"+j)});return f.join(";")};this.parseClass=function(f){f=a.trim(f);return f.length?this.makeObject(f.split(/\s+/)):{};return f.length?f.split(/\s+/):[]};this.serializeClass=function(g){var f=[];a.each(g,function(h){f.push(h)});return f.join(" ")};this.mediaInfo=function(g,h){var f=this.media.length;while(f--){if(g===this.media[f].type||(h&&a.inArray(h,this.media[f].classid)!=-1)){return this.media[f]}}};this.color2Hex=function(h){var f;if(h.indexOf("#")===0){return h}h=h||"";function g(j){j=parseInt(j).toString(16);return j.length>1?j:"0"+j}if(this.colors[h]){return this.colors[h]}if((f=h.match(this.rgbRegExp))){return"#"+g(f[1])+g(f[2])+g(f[3])}return""}}})(jQuery);(function(a){elRTE.prototype.w3cRange=function(c){var b=this;this.rte=c;this.r=null;this.collapsed=true;this.startContainer=null;this.endContainer=null;this.startOffset=0;this.endOffset=0;this.commonAncestorContainer=null;this.range=function(){try{this.r=this.rte.window.document.selection.createRange()}catch(f){this.r=this.rte.doc.body.createTextRange()}return this.r};this.insertNode=function(f){this.range();b.r.collapse(false);var g=b.r.duplicate();g.pasteHTML(f)};this.getBookmark=function(){this.range();if(this.r.item){var f=this.r.item(0);this.r=this.rte.doc.body.createTextRange();this.r.moveToElementText(f)}return this.r.getBookmark()};this.moveToBookmark=function(f){this.rte.window.focus();this.range().moveToBookmark(f);this.r.select()};this.update=function(){function h(x){var k="\uFEFF";var o=offset=0;var t=b.r.duplicate();t.collapse(x);var u=t.parentElement();if(!u||u.nodeName=="HTML"){return{parent:b.rte.doc.body,ndx:o,offset:offset}}t.pasteHTML(k);childs=u.childNodes;for(var q=0;q<childs.length;q++){var w=childs[q];if(q>0&&(w.nodeType!==3||childs[q-1].nodeType!==3)){o++}if(w.nodeType!==3){offset=0}else{var v=w.nodeValue.indexOf(k);if(v!==-1){offset+=v;break}offset+=w.nodeValue.length}}t.moveStart("character",-1);t.text="";return{parent:u,ndx:Math.min(o,u.childNodes.length-1),offset:offset}}this.range();this.startContainer=this.endContainer=null;if(this.r.item){this.collapsed=false;var g=this.r.item(0);this.setStart(g.parentNode,this.rte.dom.indexOf(g));this.setEnd(g.parentNode,this.startOffset+1)}else{this.collapsed=this.r.boundingWidth==0;var j=h(true);var f=h(false);j.parent.normalize();f.parent.normalize();j.ndx=Math.min(j.ndx,j.parent.childNodes.length-1);f.ndx=Math.min(f.ndx,f.parent.childNodes.length-1);if(j.parent.childNodes[j.ndx].nodeType&&j.parent.childNodes[j.ndx].nodeType==1){this.setStart(j.parent,j.ndx)}else{this.setStart(j.parent.childNodes[j.ndx],j.offset)}if(f.parent.childNodes[f.ndx].nodeType&&f.parent.childNodes[f.ndx].nodeType==1){this.setEnd(f.parent,f.ndx)}else{this.setEnd(f.parent.childNodes[f.ndx],f.offset)}this.select()}return this};this.isCollapsed=function(){this.range();this.collapsed=this.r.item?false:this.r.boundingWidth==0;return this.collapsed};this.collapse=function(f){this.range();if(this.r.item){var g=this.r.item(0);this.r=this.rte.doc.body.createTextRange();this.r.moveToElementText(g)}this.r.collapse(f);this.r.select();this.collapsed=true};this.getStart=function(){this.range();if(this.r.item){return this.r.item(0)}var g=this.r.duplicate();g.collapse(true);var f=g.parentElement();return f&&f.nodeName=="BODY"?f.firstChild:f};this.getEnd=function(){this.range();if(this.r.item){return this.r.item(0)}var f=this.r.duplicate();f.collapse(false);var g=f.parentElement();return g&&g.nodeName=="BODY"?g.lastChild:g};this.setStart=function(f,g){this.startContainer=f;this.startOffset=g;if(this.endContainer){this.commonAncestorContainer=this.rte.dom.findCommonAncestor(this.startContainer,this.endContainer)}};this.setEnd=function(f,g){this.endContainer=f;this.endOffset=g;if(this.startContainer){this.commonAncestorContainer=this.rte.dom.findCommonAncestor(this.startContainer,this.endContainer)}};this.setStartBefore=function(f){if(f.parentNode){this.setStart(f.parentNode,this.rte.dom.indexOf(f))}};this.setStartAfter=function(f){if(f.parentNode){this.setStart(f.parentNode,this.rte.dom.indexOf(f)+1)}};this.setEndBefore=function(f){if(f.parentNode){this.setEnd(f.parentNode,this.rte.dom.indexOf(f))}};this.setEndAfter=function(f){if(f.parentNode){this.setEnd(f.parentNode,this.rte.dom.indexOf(f)+1)}};this.select=function(){function o(B,z){if(B.nodeType!=3){return -1}var A="\uFEFF";var x=B.nodeValue;var v=b.rte.doc.body.createTextRange();B.nodeValue=x.substring(0,z)+A+x.substring(z);v.moveToElementText(B.parentNode);v.findText(A);var w=Math.abs(v.moveStart("character",-1048575));B.nodeValue=x;return w}this.r=this.rte.doc.body.createTextRange();var k=this.startOffset;var g=this.endOffset;var u=this.startContainer.nodeType==1?this.startContainer.childNodes[Math.min(k,this.startContainer.childNodes.length-1)]:this.startContainer;var q=this.endContainer.nodeType==1?this.endContainer.childNodes[Math.min(k==g?g:g-1,this.endContainer.childNodes.length-1)]:this.endContainer;if(this.collapsed){if(u.nodeType==3){var h=o(u,k);this.r.move("character",h)}else{this.r.moveToElementText(u);this.r.collapse(true)}}else{var f=this.rte.doc.body.createTextRange();var j=o(u,k);var t=o(q,g);if(u.nodeType==3){this.r.move("character",j)}else{this.r.moveToElementText(u)}if(q.nodeType==3){f.move("character",t)}else{f.moveToElementText(q)}this.r.setEndPoint("EndToEnd",f)}try{this.r.select()}catch(q){}if(f){f=null}};this.dump=function(){this.rte.log("collapsed: "+this.collapsed);this.rte.log("startContainer: "+(this.startContainer?this.startContainer.nodeName:"non"));this.rte.log("startOffset: "+this.startOffset);this.rte.log("endContainer: "+(this.endContainer?this.endContainer.nodeName:"none"));this.rte.log("endOffset: "+this.endOffset)}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.about=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.active=true;this.command=function(){var g,h,f;g={rtl:c.rtl,submit:function(j,k){k.close()},dialog:{width:560,title:this.rte.i18n("About this software"),buttons:{Ok:function(){a(this).dialog("destroy")}}}};f='<div class="elrte-logo"></div><h3>'+this.rte.i18n("About elRTE")+'</h3><br clear="all"/><div class="elrte-ver">'+this.rte.i18n("Version")+": "+this.rte.version+" ("+this.rte.build+')</div><div class="elrte-ver">jQuery: '+a("<div/>").jquery+'</div><div class="elrte-ver">jQueryUI: '+a.ui.version+'</div><div class="elrte-ver">'+this.rte.i18n("Licence")+": BSD Licence</div><p>"+this.rte.i18n("elRTE is an open-source JavaScript based WYSIWYG HTML-editor.")+"<br/>"+this.rte.i18n("Main goal of the editor - simplify work with text and formating (HTML) on sites, blogs, forums and other online services.")+"<br/>"+this.rte.i18n("You can use it in any commercial or non-commercial projects.")+"</p><h4>"+this.rte.i18n("Authors")+'</h4><table class="elrte-authors"><tr><td>Dmitry (dio) Levashov &lt;dio@std42.ru&gt;</td><td>'+this.rte.i18n("Chief developer")+"</td></tr><tr><td>Troex Nevelin &lt;troex@fury.scancode.ru&gt;</td><td>"+this.rte.i18n("Developer, tech support")+"</td></tr><tr><td>Valentin Razumnyh &lt;content@std42.ru&gt;</td><td>"+this.rte.i18n("Interface designer")+"</td></tr><tr><td>Evgeny eSabbath &lt;sabbath.codemg@gmail.com&gt;</td><td>"+this.rte.i18n("Developer")+"</td></tr><tr><td>Andrzej Borowicz &lt;eltre@borowicz.info&gt;</td><td>"+this.rte.i18n("Polish localization")+"</td></tr><tr><td>Artem Vasiliev</td><td>"+this.rte.i18n("Ukranian localization")+"</td></tr><tr><td>Francois Mazerolle &lt;fmaz008@gmail.com&gt;</td><td>"+this.rte.i18n("French localization")+"</td></tr><tr><td>Kurt Aerts</td><td>"+this.rte.i18n("Dutch localization")+"</td></tr><tr><td>Michal Marek &lt;fmich.marek@gmail.com&gt;</td><td>"+this.rte.i18n("Czech localization")+"</td></tr><tr><td>Ricardo Obregón &lt;robregonm@gmail.com&gt;</td><td>"+this.rte.i18n("Spanish localization")+"</td></tr><tr><td>Saleh Souzanchi &lt;saleh.souzanchi@gmail.com&gt;</td><td>"+this.rte.i18n("Persian (farsi) localization")+"</td></tr><tr><td>Tawfek Daghistani &lt;tawfekov@gmail.com&gt;</td><td>"+this.rte.i18n("Arabic localization")+", "+this.rte.i18n("RTL support")+"</td></tr><tr><td>Tad &lt;tad0616@gmail.com&gt;</td><td>"+this.rte.i18n("Traditional Chinese localization")+"</td></tr><tr><td>Tomoaki Yoshida &lt;info@yoshida-studio.jp&gt;</td><td>"+this.rte.i18n("Japanese localization")+"</td></tr><tr><td>Uldis Plotiņš &lt;uldis.plotins@gmail.com&gt;</td><td>"+this.rte.i18n("Latvian localization")+"</td></tr><tr><td>Vasiliy Razumnyh &lt;rvn@std42.ru&gt;</td><td>"+this.rte.i18n("German localization")+"</td></tr><tr><td>Viktor Tamas &lt;tamas.viktor@totalstudio.hu&gt;</td><td>"+this.rte.i18n("Hungarian localization")+"</td></tr><tr><td>Ugo Punzolo, &lt;sadraczerouno@gmail.com&gt;</td><td>"+this.rte.i18n("Italian localization")+'</td></tr></table><div class="elrte-copy">Copyright &copy; 2009-2010, <a href="http://www.std42.ru">Studio 42 LTD</a></div><div class="elrte-copy">'+this.rte.i18n("For more information about this software visit the")+' <a href="http://elrte.org">'+this.rte.i18n("elRTE website")+'.</a></div><div class="elrte-copy">Twitter: <a href="http://twitter.com/elrte_elfinder">elrte_elfinder</a></div>';h=new elDialogForm(g);h.append(f);h.open()};this.update=function(){this.domElem.removeClass("disabled")}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.anchor=function(f,c){this.constructor.prototype.constructor.call(this,f,c);this.input=a('<input type="text" />').attr("name","anchor").attr("size","16");var b=this;this.command=function(){var g={rtl:this.rte.rtl,submit:function(j,k){j.stopPropagation();j.preventDefault();k.close();b.set()},dialog:{title:this.rte.i18n("Bookmark")}};this.anchor=this.rte.dom.selfOrParentAnchor(this.rte.selection.getEnd())||f.dom.create("a");!this.rte.selection.collapsed()&&this.rte.selection.collapse(false);this.input.val(a(this.anchor).addClass("el-rte-anchor").attr("name"));this.rte.selection.saveIERange();var h=new elDialogForm(g);h.append([this.rte.i18n("Bookmark name"),this.input],null,true).open();setTimeout(function(){b.input.focus()},20)};this.update=function(){var g=this.rte.selection.getNode();if(this.rte.dom.selfOrParentLink(g)){this.domElem.addClass("disabled")}else{if(this.rte.dom.selfOrParentAnchor(g)){this.domElem.removeClass("disabled").addClass("active")}else{this.domElem.removeClass("disabled").removeClass("active")}}};this.set=function(){var g=a.trim(this.input.val());if(g){this.rte.history.add();if(!this.anchor.parentNode){this.rte.selection.insertHtml('<a name="'+g+'" title="'+this.rte.i18n("Bookmark")+": "+g+'" class="el-rte-anchor"></a>')}else{this.anchor.name=g;this.anchor.title=this.rte.i18n("Bookmark")+": "+g}}else{if(this.anchor.parentNode){this.rte.history.add();this.anchor.parentNode.removeChild(this.anchor)}}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.blockquote=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.command=function(){var g,f;this.rte.history.add();if(this.rte.selection.collapsed()&&(g=this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^BLOCKQUOTE$/))){a(g).replaceWith(a(g).html())}else{f=this.rte.selection.selected({wrap:"all",tag:"blockquote"});f.length&&this.rte.selection.select(f[0],f[f.length-1])}this.rte.ui.update(true)};this.update=function(){if(this.rte.selection.collapsed()){if(this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^BLOCKQUOTE$/)){this.domElem.removeClass("disabled").addClass("active")}else{this.domElem.addClass("disabled").removeClass("active")}}else{this.domElem.removeClass("disabled active")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.copy=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.command=function(){if(this.rte.browser.mozilla){try{this.rte.doc.execCommand(this.name,false,null)}catch(h){var f=" Ctl + C";if(this.name=="cut"){f=" Ctl + X"}else{if(this.name=="paste"){f=" Ctl + V"}}var g={dialog:{title:this.rte.i18n("Warning"),buttons:{Ok:function(){a(this).dialog("close")}}}};var j=new elDialogForm(g);j.append(this.rte.i18n("This operation is disabled in your browser on security reason. Use shortcut instead.")+": "+f).open()}}else{this.constructor.prototype.command.call(this)}}};elRTE.prototype.ui.prototype.buttons.cut=elRTE.prototype.ui.prototype.buttons.copy;elRTE.prototype.ui.prototype.buttons.paste=elRTE.prototype.ui.prototype.buttons.copy})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.css=function(f,c){var b=this;this.constructor.prototype.constructor.call(this,f,c);this.cssStyle=a('<input type="text" size="42" name="style" />');this.cssClass=a('<input type="text" size="42" name="class" />');this.command=function(){var j=this.node(),g;this.rte.selection.saveIERange();if(j){var g={submit:function(k,o){k.stopPropagation();k.preventDefault();o.close();b.set()},dialog:{title:this.rte.i18n("Style"),width:450,resizable:true,modal:true}};this.cssStyle.val(a(j).attr("style"));this.cssClass.val(a(j).attr("class"));var h=new elDialogForm(g);h.append([this.rte.i18n("Css style"),this.cssStyle],null,true);h.append([this.rte.i18n("Css class"),this.cssClass],null,true).open();setTimeout(function(){b.cssStyle.focus()},20)}};this.set=function(){var g=this.node();this.rte.selection.restoreIERange();if(g){a(g).attr("style",this.cssStyle.val());a(g).attr("class",this.cssClass.val());this.rte.ui.update()}};this.node=function(){var g=this.rte.selection.getNode();if(g.nodeType==3){g=g.parentNode}return g.nodeType==1&&g.nodeName!="BODY"?g:null};this.update=function(){this.domElem.toggleClass("disabled",this.node()?false:true)}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.rtl=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.command=function(){var h=this.rte.selection.getNode(),g=this;if(a(h).attr("dir")=="rtl"||a(h).parents('[dir="rtl"]').length||a(h).find('[dir="rtl"]').length){a(h).removeAttr("dir");a(h).parents('[dir="rtl"]').removeAttr("dir");a(h).find('[dir="rtl"]').removeAttr("dir")}else{if(this.rte.dom.is(h,"textNodes")&&this.rte.dom.is(h,"block")){a(h).attr("dir","rtl")}else{a.each(this.rte.dom.parents(h,"textNodes"),function(j,k){if(g.rte.dom.is(k,"block")){a(k).attr("dir","rtl");return false}})}}this.rte.ui.update()};this.update=function(){var g=this.rte.selection.getNode();this.domElem.removeClass("disabled");if(a(g).attr("dir")=="rtl"||a(g).parents('[dir="rtl"]').length||a(g).find('[dir="rtl"]').length){this.domElem.addClass("active")}else{this.domElem.removeClass("active")}}};elRTE.prototype.ui.prototype.buttons.ltr=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.command=function(){var h=this.rte.selection.getNode(),g=this;if(a(h).attr("dir")=="ltr"||a(h).parents('[dir="ltr"]').length||a(h).find('[dir="ltr"]').length){a(h).removeAttr("dir");a(h).parents('[dir="ltr"]').removeAttr("dir");a(h).find('[dir="ltr"]').removeAttr("dir")}else{if(this.rte.dom.is(h,"textNodes")&&this.rte.dom.is(h,"block")){a(h).attr("dir","ltr")}else{a.each(this.rte.dom.parents(h,"textNodes"),function(j,k){if(g.rte.dom.is(k,"block")){a(k).attr("dir","ltr");return false}})}}this.rte.ui.update()};this.update=function(){var g=this.rte.selection.getNode();this.domElem.removeClass("disabled");if(a(g).attr("dir")=="ltr"||a(g).parents('[dir="ltr"]').length||a(g).find('[dir="ltr"]').length){this.domElem.addClass("active")}else{this.domElem.removeClass("active")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.div=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.command=function(){var g,f;this.rte.history.add();if(this.rte.selection.collapsed()){g=this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^DIV$/);if(g){a(g).replaceWith(a(g).html())}}else{f=this.rte.selection.selected({wrap:"all",tag:"div"});f.length&&this.rte.selection.select(f[0],f[f.length-1])}this.rte.ui.update(true)};this.update=function(){if(this.rte.selection.collapsed()){if(this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^DIV$/)){this.domElem.removeClass("disabled").addClass("active")}else{this.domElem.addClass("disabled active")}}else{this.domElem.removeClass("disabled active")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.docstructure=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.command=function(){this.domElem.toggleClass("active");a(this.rte.doc.body).toggleClass("el-rte-structure")};this.command();this.update=function(){this.domElem.removeClass("disabled")}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.elfinder=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.command=function(){if(b.rte.options.fmAllow&&typeof(b.rte.options.fmOpen)=="function"){b.rte.options.fmOpen(function(g){b.rte.log(g)})}};this.update=function(){if(b.rte.options.fmAllow&&typeof(b.rte.options.fmOpen)=="function"){this.domElem.removeClass("disabled")}else{this.domElem.addClass("disabled")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.flash=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.swf=null;this.placeholder=null;this.src={url:a('<input type="text" name="url" />').css("width","99%"),type:a('<select name="type"/>').append('<option value="application/x-shockwave-flash">Flash</option>').append('<option value="video/quicktime">Quicktime movie</option>').append('<option value="application/x-mplayer2">Windows media</option>'),width:a('<input type="text" />').attr("size",5).css("text-align","right"),height:a('<input type="text" />').attr("size",5).css("text-align","right"),wmode:a("<select />").append(a("<option />").val("").text(this.rte.i18n("Not set","dialogs"))).append(a("<option />").val("transparent").text(this.rte.i18n("Transparent"))),align:a("<select />").append(a("<option />").val("").text(this.rte.i18n("Not set","dialogs"))).append(a("<option />").val("left").text(this.rte.i18n("Left"))).append(a("<option />").val("right").text(this.rte.i18n("Right"))).append(a("<option />").val("top").text(this.rte.i18n("Top"))).append(a("<option />").val("text-top").text(this.rte.i18n("Text top"))).append(a("<option />").val("middle").text(this.rte.i18n("middle"))).append(a("<option />").val("baseline").text(this.rte.i18n("Baseline"))).append(a("<option />").val("bottom").text(this.rte.i18n("Bottom"))).append(a("<option />").val("text-bottom").text(this.rte.i18n("Text bottom"))),margin:a("<div />")};this.command=function(){var r=this.rte.selection.getEnd(),j,k="",B="",t="",v,z,x,A,q,C;this.rte.selection.saveIERange();this.src.margin.elPaddingInput({type:"margin"});this.placeholder=null;this.swf=null;if(a(r).hasClass("elrte-media")&&(A=a(r).attr("rel"))&&this.rte.filter.scripts[A]){this.placeholder=a(r);q=this.rte.filter.scripts[A];k="";if(q.embed&&q.embed.src){k=q.embed.src}if(q.params&&q.params.length){l=q.params.length;while(l--){if(q.params[l].name=="src"||q.params[l].name=="movie"){k=q.params[l].value}}}if(q.embed){B=q.embed.width||parseInt(q.embed.style.width)||"";t=q.embed.height||parseInt(q.embed.style.height)||"";C=q.embed.wmode||""}else{if(q.obj){B=q.obj.width||parseInt(q.obj.style.width)||"";t=q.obj.height||parseInt(q.obj.style.height)||"";C=q.obj.wmode||""}}if(q.obj){v=q.obj.style["float"]||"";z=q.obj.style["vertical-align"]||""}else{if(q.embed){v=q.embed.style["float"]||"";z=q.embed.style["vertical-align"]||""}}this.src.margin.val(r);this.src.type.val(q.embed?q.embed.type:"")}if(a(r).hasClass("elrte-swf-placeholder")){this.placeholder=a(r);k=a(r).attr("rel");B=parseInt(a(r).css("width"))||"";t=parseInt(a(r).css("height"))||"";v=a(r).css("float");z=a(r).css("vertical-align");this.src.margin.val(r);this.src.wmode.val(a(r).attr("wmode"))}this.src.url.val(k);this.src.width.val(B);this.src.height.val(t);this.src.align.val(v||z);this.src.wmode.val(C);var j={rtl:this.rte.rtl,submit:function(h,o){h.stopPropagation();h.preventDefault();b.set();o.close()},dialog:{width:580,position:"top",title:this.rte.i18n("Flash")}};var x=new elDialogForm(j);if(this.rte.options.fmAllow&&this.rte.options.fmOpen){var g=a("<span />").append(this.src.url.css("width","85%")).append(a("<span />").addClass("ui-state-default ui-corner-all").css({"float":"right","margin-right":"3px"}).attr("title",b.rte.i18n("Open file manger")).append(a("<span />").addClass("ui-icon ui-icon-folder-open")).click(function(){b.rte.options.fmOpen(function(h){b.src.url.val(h).change()})}).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}))}else{var g=this.src.url}x.append([this.rte.i18n("URL"),g],null,true);x.append([this.rte.i18n("Type"),this.src.type],null,true);x.append([this.rte.i18n("Size"),a("<span />").append(this.src.width).append(" x ").append(this.src.height).append(" px")],null,true);x.append([this.rte.i18n("Wmode"),this.src.wmode],null,true);x.append([this.rte.i18n("Alignment"),this.src.align],null,true);x.append([this.rte.i18n("Margins"),this.src.margin],null,true);x.open();setTimeout(function(){b.src.url.focus()},100);var u=a("<fieldset />").append(a("<legend />").text(this.rte.i18n("Preview")));x.append(u,"main");var p=document.createElement("iframe");a(p).attr("src","#").addClass("el-rte-preview").appendTo(u);html=this.rte.options.doctype+'<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style="padding:0;margin:0;font-size:9px"> Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin</body></html>';p.contentWindow.document.open();p.contentWindow.document.write(html);p.contentWindow.document.close();this.frame=p.contentWindow.document;this.preview=a(p.contentWindow.document.body);this.src.type.change(function(){b.src.url.change()});this.src.width.change(function(){if(b.swf){var h=parseInt(a(this).val())||"";a(this).val(h);b.swf.css("width",h);b.swf.children("embed").css("width",h)}else{a(this).val("")}});this.src.height.change(function(){if(b.swf){var o=parseInt(a(this).val())||"";a(this).val(o);b.swf.css("height",o);b.swf.children("embed").css("height",o)}else{a(this).val("")}});this.src.wmode.change(function(){if(b.swf){var h=a(this).val();if(h){b.swf.attr("wmode",h);b.swf.children("embed").attr("wmode",h)}else{b.swf.removeAttr("wmode");b.swf.children("embed").removeAttr("wmode")}}});this.src.align.change(function(){var h=a(this).val(),o=h=="left"||h=="right";if(b.swf){b.swf.css({"float":o?h:"","vertical-align":o?"":h})}else{a(this).val("")}});this.src.margin.change(function(){if(b.swf){var h=b.src.margin.val();if(h.css){b.swf.css("margin",h.css)}else{b.swf.css("margin-top",h.top);b.swf.css("margin-right",h.right);b.swf.css("margin-bottom",h.bottom);b.swf.css("margin-left",h.left)}}});this.src.url.change(function(){var h=b.rte.utils.absoluteURL(a(this).val()),o,w;if(h){o=b.rte.utils.mediaInfo(b.src.type.val());if(!o){o=b.rte.util.mediaInfo("application/x-shockwave-flash")}w='<object classid="'+o.classid+'" codebase="'+o.codebase+'"><param name="src" value="'+h+'" /><embed quality="high" src="'+h+'" type="'+o.type+'"></object>';b.preview.children("object").remove().end().prepend(w);b.swf=b.preview.children("object").eq(0)}else{if(b.swf){b.swf.remove();b.swf=null}}b.src.width.trigger("change");b.src.height.trigger("change");b.src.align.trigger("change")}).trigger("change")};this.set=function(){b.swf=null;var g=this.rte.utils.absoluteURL(this.src.url.val()),B=parseInt(this.src.width.val())||"",t=parseInt(this.src.height.val())||"",C=this.src.wmode.val(),z=this.src.align.val(),v=z=="left"||z=="right"?z:"",A=this.placeholder?this.placeholder.attr("rel"):"",p,k,x,q=this.src.margin.val(),r;if(!g){if(this.placeholder){this.placeholder.remove();delete this.rte.filter.scripts[A]}}else{i=b.rte.utils.mediaInfo(b.src.type.val());if(!i){i=b.rte.util.mediaInfo("application/x-shockwave-flash")}x=this.rte.filter.videoHostRegExp.test(g)?g.replace(this.rte.filter.videoHostRegExp,"$2"):i.type.replace(/^\w+\/(.+)/,"$1");p={obj:{classid:i.classid[0],codebase:i.codebase,style:{}},params:[{name:"src",value:g}],embed:{src:g,type:i.type,quality:"high",wmode:C,style:{}}};if(B){p.obj.width=B;p.embed.width=B}if(t){p.obj.height=t;p.embed.height=t}if(v){p.obj.style["float"]=v}else{if(z){p.obj.style["vertical-align"]=z}}if(q.css){r={margin:q.css}}else{r={"margin-top":q.top,"margin-right":q.right,"margin-bottom":q.bottom,"margin-left":q.left}}p.obj.style=a.extend({},p.obj.style,r);if(this.placeholder&&A){k=this.rte.filter.scripts[A]||{};p=a.extend(true,k,p);delete p.obj.style.width;delete p.obj.style.height;delete p.embed.style.width;delete p.embed.style.height;this.rte.filter.scripts[A]=p;this.placeholder.removeAttr("class")}else{var j="media"+Math.random().toString().substring(2);this.rte.filter.scripts[j]=p;this.placeholder=a(this.rte.dom.create("img")).attr("rel",j).attr("src",this.rte.filter.url+"pixel.gif");var u=true}this.placeholder.attr("title",this.rte.utils.encode(g)).attr("width",B||150).attr("height",t||100).addClass("elrte-protected elrte-media elrte-media-"+x).css(p.obj.style);if(v){this.placeholder.css("float",v).css("vertical-align","")}else{if(z){this.placeholder.css("float","").css("vertical-align",z)}else{this.placeholder.css("float","").css("vertical-align","")}}if(u){this.rte.window.focus();this.rte.selection.restoreIERange();this.rte.selection.insertNode(this.placeholder.get(0))}}};this.update=function(){this.domElem.removeClass("disabled");var g=this.rte.selection.getNode();this.domElem.toggleClass("active",g&&g.nodeName=="IMG"&&a(g).hasClass("elrte-media"))}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.fontname=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;var g={tpl:'<span style="font-family:%val">%label</span>',select:function(h){b.set(h)},src:{"":this.rte.i18n("Font"),"andale mono,sans-serif":"Andale Mono","arial,helvetica,sans-serif":"Arial","arial black,gadget,sans-serif":"Arial Black","book antiqua,palatino,sans-serif":"Book Antiqua","comic sans ms,cursive":"Comic Sans MS","courier new,courier,monospace":"Courier New","georgia,palatino,serif":"Georgia","helvetica,sans-serif":"Helvetica","impact,sans-serif":"Impact","lucida console,monaco,monospace":"Lucida console","lucida sans unicode,lucida grande,sans-serif":"Lucida grande","tahoma,sans-serif":"Tahoma","times new roman,times,serif":"Times New Roman","trebuchet ms,lucida grande,verdana,sans-serif":"Trebuchet MS","verdana,geneva,sans-serif":"Verdana"}};this.select=this.domElem.elSelect(g);this.command=function(){};this.set=function(j){this.rte.history.add();var h=this.rte.selection.selected({filter:"textContainsNodes"});a.each(h,function(){$this=/^(THEAD|TFOOT|TBODY|COL|COLGROUP|TR)$/.test(this.nodeName)?a(this).find("td,th"):a(this);a(this).css("font-family",j).find("[style]").css("font-family","")});this.rte.ui.update()};this.update=function(){this.domElem.removeClass("disabled");var j=this.rte.selection.getNode();if(j.nodeType!=1){j=j.parentNode}var h=a(j).css("font-family");h=h?h.toString().toLowerCase().replace(/,\s+/g,",").replace(/'|"/g,""):"";this.select.val(g.src[h]?h:"")}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.fontsize=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;var g={labelTpl:"%label",tpl:'<span style="font-size:%val;line-height:1.2em">%label</span>',select:function(h){b.set(h)},src:{"":this.rte.i18n("Font size"),"xx-small":this.rte.i18n("Small (8pt)"),"x-small":this.rte.i18n("Small (10px)"),small:this.rte.i18n("Small (12pt)"),medium:this.rte.i18n("Normal (14pt)"),large:this.rte.i18n("Large (18pt)"),"x-large":this.rte.i18n("Large (24pt)"),"xx-large":this.rte.i18n("Large (36pt)")}};this.select=this.domElem.elSelect(g);this.command=function(){};this.set=function(j){this.rte.history.add();var h=this.rte.selection.selected({filter:"textContainsNodes"});a.each(h,function(){$this=/^(THEAD|TFOOT|TBODY|COL|COLGROUP|TR)$/.test(this.nodeName)?a(this).find("td,th"):a(this);$this.css("font-size",j).find("[style]").css("font-size","")});this.rte.ui.update()};this.update=function(){this.domElem.removeClass("disabled");var h=this.rte.selection.getNode();this.select.val((m=this.rte.dom.attr(h,"style").match(/font-size:\s*([^;]+)/i))?m[1]:"")}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.forecolor=function(f,c){var b=this;this.constructor.prototype.constructor.call(this,f,c);var g={"class":"",color:this.defaultColor,update:function(h){b.indicator.css("background-color",h)},change:function(h){b.set(h)}};this.defaultColor=this.name=="forecolor"?"#000000":"#ffffff";this.picker=this.domElem.elColorPicker(g);this.indicator=a("<div />").addClass("color-indicator").prependTo(this.domElem);this.command=function(){};this.set=function(k){if(!this.rte.selection.collapsed()){this.rte.history.add();var h=this.rte.selection.selected({collapse:false,wrap:"text"}),j=this.name=="forecolor"?"color":"background-color";a.each(h,function(){if(/^(THEAD|TBODY|TFOOT|TR)$/.test(this.nodeName)){a(this).find("td,th").each(function(){a(this).css(j,k).find("*").css(j,"")})}else{a(this).css(j,k).find("*").css(j,"")}});this.rte.ui.update(true)}};this.update=function(){this.domElem.removeClass("disabled");var h=this.rte.selection.getNode();this.picker.val(this.rte.utils.rgb2hex(a(h.nodeType!=1?h.parentNode:h).css(this.name=="forecolor"?"color":"background-color"))||this.defaultColor)}};elRTE.prototype.ui.prototype.buttons.hilitecolor=elRTE.prototype.ui.prototype.buttons.forecolor})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.formatblock=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var h=this.rte.browser.msie?function(j){b.val=j;b.constructor.prototype.command.call(b)}:function(j){b.ieCommand(j)};var b=this;var g={labelTpl:"%label",tpls:{"":"%label"},select:function(j){b.formatBlock(j)},src:{span:this.rte.i18n("Format"),h1:this.rte.i18n("Heading 1"),h2:this.rte.i18n("Heading 2"),h3:this.rte.i18n("Heading 3"),h4:this.rte.i18n("Heading 4"),h5:this.rte.i18n("Heading 5"),h6:this.rte.i18n("Heading 6"),p:this.rte.i18n("Paragraph"),address:this.rte.i18n("Address"),pre:this.rte.i18n("Preformatted"),div:this.rte.i18n("Normal (DIV)")}};this.select=this.domElem.elSelect(g);this.command=function(){};this.formatBlock=function(u){function t(z,v){function x(A){a(A).find("h1,h2,h3,h4,h5,h6,p,address,pre").each(function(){a(this).replaceWith(a(this).html())});return A}if(/^(LI|DT|DD|TD|TH|CAPTION)$/.test(z.nodeName)){!b.rte.dom.isEmpty(z)&&b.rte.dom.wrapContents(x(z),v)}else{if(/^(UL|OL|DL|TABLE)$/.test(z.nodeName)){b.rte.dom.wrap(z,v)}else{!b.rte.dom.isEmpty(z)&&a(x(z)).replaceWith(a(b.rte.dom.create(v)).html(a(z).html()))}}}this.rte.history.add();var w=u.toUpperCase(),p,o,r,q=this.rte.selection.collapsed(),k=this.rte.selection.getBookmark(),j=this.rte.selection.selected({collapsed:true,blocks:true,filter:"textContainsNodes",wrap:"inline",tag:"span"});l=j.length,s=a(j[0]).prev(),e=a(j[j.length-1]).next();while(l--){o=j[l];r=a(o);if(w=="DIV"||w=="SPAN"){if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(o.nodeName)){r.replaceWith(a(this.rte.dom.create("div")).html(r.html()||""))}}else{if(/^(THEAD|TBODY|TFOOT|TR)$/.test(o.nodeName)){r.find("td,th").each(function(){t(this,w)})}else{if(o.nodeName!=w){t(o,w)}}}}this.rte.selection.moveToBookmark(k);this.rte.ui.update(true)};this.update=function(){this.domElem.removeClass("disabled");var j=this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^(H[1-6]|P|ADDRESS|PRE)$/);this.select.val(j?j.nodeName.toLowerCase():"span")}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.fullscreen=function(g,f){var b=this;this.constructor.prototype.constructor.call(this,g,f);this.active=true;this.editor=g.editor;this.wz=g.workzone;this.height=0;this.delta=0;this._class="el-fullscreen";setTimeout(function(){b.height=b.wz.height();b.delta=b.editor.outerHeight()-b.height},50);function c(){b.wz.height(a(window).height()-b.delta);b.rte.updateHeight()}this.command=function(){var B=a(window),u=this.editor,k=u.parents().filter(function(h,p){return !/^(html|body)$/i.test(p.nodeName)&&a(p).css("position")=="relative"}),q=this.wz,z=this._class,t=u.hasClass(z),j=this.rte,C=this.rte.selection,o=a.browser.mozilla,A,r;function x(){if(o){A=C.getBookmark()}}function v(){if(o){b.wz.children().toggle();b.rte.source.focus();b.wz.children().toggle();C.moveToBookmark(A)}}x();k.css("position",t?"relative":"static");if(t){u.removeClass(z);q.height(this.height);B.unbind("resize",c);this.domElem.removeClass("active")}else{u.addClass(z).removeAttr("style");q.height(B.height()-this.delta).css("width","100%");B.bind("resize",c);this.domElem.addClass("active")}j.updateHeight();j.resizable(t);v()};this.update=function(){this.domElem.removeClass("disabled")}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.horizontalrule=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.src={width:a('<input type="text" />').attr({name:"width",size:4}).css("text-align","right"),wunit:a("<select />").attr("name","wunit").append(a("<option />").val("%").text("%")).append(a("<option />").val("px").text("px")).val("%"),height:a('<input type="text" />').attr({name:"height",size:4}).css("text-align","right"),bg:a("<div />"),border:a("<div />"),"class":a('<input type="text" />').css("width","100%"),style:a('<input type="text" />').css("width","100%")};this.command=function(){this.src.bg.elColorPicker({palettePosition:"outer","class":"el-colorpicker ui-icon ui-icon-pencil"});var k=this.rte.selection.getEnd();this.hr=k.nodeName=="HR"?a(k):a(f.doc.createElement("hr")).css({width:"100%",height:"1px"});this.src.border.elBorderSelect({styleHeight:73,value:this.hr});var g=this.hr.css("width")||this.hr.attr("width");this.src.width.val(parseInt(g)||100);this.src.wunit.val(g.indexOf("px")!=-1?"px":"%");this.src.height.val(this.rte.utils.toPixels(this.hr.css("height")||this.hr.attr("height"))||1);this.src.bg.val(this.rte.utils.color2Hex(this.hr.css("background-color")));this.src["class"].val(this.rte.dom.attr(this.hr,"class"));this.src.style.val(this.rte.dom.attr(this.hr,"style"));var h={rtl:this.rte.rtl,submit:function(o,p){o.stopPropagation();o.preventDefault();b.set();p.close()},dialog:{title:this.rte.i18n("Horizontal rule")}};var j=new elDialogForm(h);j.append([this.rte.i18n("Width"),a("<span />").append(this.src.width).append(this.src.wunit)],null,true).append([this.rte.i18n("Height"),a("<span />").append(this.src.height).append(" px")],null,true).append([this.rte.i18n("Border"),this.src.border],null,true).append([this.rte.i18n("Background"),this.src.bg],null,true).append([this.rte.i18n("Css class"),this.src["class"]],null,true).append([this.rte.i18n("Css style"),this.src.style],null,true).open()};this.update=function(){this.domElem.removeClass("disabled");if(this.rte.selection.getEnd().nodeName=="HR"){this.domElem.addClass("active")}else{this.domElem.removeClass("active")}};this.set=function(){this.rte.history.add();!this.hr.parentNode&&this.rte.selection.insertNode(this.hr.get(0));var h={noshade:true,style:this.src.style.val()};var g=this.src.border.val();var j={width:(parseInt(this.src.width.val())||100)+this.src.wunit.val(),height:parseInt(this.src.height.val())||1,"background-color":this.src.bg.val(),border:g.width&&g.style?g.width+" "+g.style+" "+g.color:""};this.hr.removeAttr("class").removeAttr("style").removeAttr("width").removeAttr("height").removeAttr("align").attr(h).css(j);if(this.src["class"].val()){this.hr.attr("class",this.src["class"].val())}this.rte.ui.update()}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.image=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.img=null;this.init=function(){this.labels={main:"Properies",link:"Link",adv:"Advanced",events:"Events",id:"ID","class":"Css class",style:"Css style",longdesc:"Detail description URL",href:"URL",target:"Open in",title:"Title"};this.src={main:{src:a('<input type="text" />').css("width","100%"),title:a('<input type="text" />').css("width","100%"),alt:a('<input type="text" />').css("width","100%"),width:a('<input type="text" />').attr("size",5).css("text-align","right"),height:a('<input type="text" />').attr("size",5).css("text-align","right"),margin:a("<div />"),align:a("<select />").css("width","100%").append(a("<option />").val("").text(this.rte.i18n("Not set","dialogs"))).append(a("<option />").val("left").text(this.rte.i18n("Left"))).append(a("<option />").val("right").text(this.rte.i18n("Right"))).append(a("<option />").val("top").text(this.rte.i18n("Top"))).append(a("<option />").val("text-top").text(this.rte.i18n("Text top"))).append(a("<option />").val("middle").text(this.rte.i18n("middle"))).append(a("<option />").val("baseline").text(this.rte.i18n("Baseline"))).append(a("<option />").val("bottom").text(this.rte.i18n("Bottom"))).append(a("<option />").val("text-bottom").text(this.rte.i18n("Text bottom"))),border:a("<div />")},adv:{id:a('<input type="text" />').css("width","100%"),"class":a('<input type="text" />').css("width","100%"),style:a('<input type="text" />').css("width","100%"),longdesc:a('<input type="text" />').css("width","100%")},events:{}};a.each(["onblur","onfocus","onclick","ondblclick","onmousedown","onmouseup","onmouseover","onmouseout","onmouseleave","onkeydown","onkeypress","onkeyup"],function(){b.src.events[this]=a('<input type="text" />').css("width","100%")});a.each(b.src,function(){for(var g in this){this[g].attr("name",g)}})};this.command=function(){!this.src&&this.init();this.rte.selection.saveIERange();this.src.main.border.elBorderSelect({change:function(){b.updateImg()},name:"border"});this.src.main.margin.elPaddingInput({type:"margin"});this.cleanValues();this.src.main.src.val("");var o=this.rte.selection.getEnd(),u=a(o);this.preview=null;this.prevImg=null;this.link=null;if(o.nodeName=="IMG"&&!u.hasClass("elrte-protected")){this.img=a(o)}else{this.img=a(this.rte.doc.createElement("img"))}var h={rtl:this.rte.rtl,submit:function(w,x){w.stopPropagation();w.preventDefault();b.set();x.close()},dialog:{width:570,position:"top",title:this.rte.i18n("Image")}};var t=new elDialogForm(h);if(this.rte.options.fmAllow&&this.rte.options.fmOpen){var g=a("<span />").append(this.src.main.src.css("width","88%")).append(a("<span />").addClass("ui-state-default ui-corner-all").css({"float":"right","margin-right":"3px"}).attr("title",b.rte.i18n("Open file manger")).append(a("<span />").addClass("ui-icon ui-icon-folder-open")).click(function(){b.rte.options.fmOpen(function(w){b.src.main.src.val(w).change()})}).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}))}else{var g=this.src.main.src}t.tab("main",this.rte.i18n("Properies")).append([this.rte.i18n("Image URL"),g],"main",true).append([this.rte.i18n("Title"),this.src.main.title],"main",true).append([this.rte.i18n("Alt text"),this.src.main.alt],"main",true).append([this.rte.i18n("Size"),a("<span />").append(this.src.main.width).append(" x ").append(this.src.main.height).append(" px")],"main",true).append([this.rte.i18n("Alignment"),this.src.main.align],"main",true).append([this.rte.i18n("Margins"),this.src.main.margin],"main",true).append([this.rte.i18n("Border"),this.src.main.border],"main",true);for(var p in this.src){if(p!="main"){t.tab(p,this.rte.i18n(this.labels[p]));for(var j in this.src[p]){var q=this.rte.i18n(this.labels[j]?this.labels[j]:j);if(p=="events"){this.src[p][j].val(this.rte.utils.trimEventCallback(this.img.attr(j)))}else{if(p=="link"){if(this.link){this.src[p][j].val(j=="href"?this.rte.utils.absoluteURL(this.link.attr(j)):this.link.attr(j))}}else{this.src[p][j].val(this.img.attr(j)||"")}}t.append([q,this.src[p][j]],p,true)}}}t.open();var r=a("<fieldset />").append(a("<legend />").text(this.rte.i18n("Preview")));t.append(r,"main");var k=document.createElement("iframe");a(k).attr("src","#").addClass("el-rte-preview").appendTo(r);html=this.rte.options.doctype+'<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style="padding:0;margin:0;font-size:9px"> </body></html>';k.contentWindow.document.open();k.contentWindow.document.write(html);k.contentWindow.document.close();this.frame=k.contentWindow.document;this.preview=a(k.contentWindow.document.body).text("Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin");if(this.img.attr("src")){this.prevImg=a(this.frame.createElement("img")).attr("src",this.rte.utils.absoluteURL(this.img.attr("src")));this.prevImg.attr("width",this.img.attr("width")).attr("height",this.img.attr("height")).attr("title",this.img.attr("title")||"").attr("alt",this.img.attr("alt")||"").attr("style",this.img.attr("style")||"");for(var o in this.src.adv){var v=this.img.attr(o);if(v){this.prevImg.attr(o,v)}}this.preview.prepend(this.prevImg);this.updateValues()}a.each(this.src,function(){a.each(this,function(){if(this===b.src.main.src){this.bind("change",function(){b.updatePreview()})}else{if(this==b.src.main.width||this==b.src.main.height){this.bind("change",function(w){b.updateDimesions(w)})}else{this.bind("change",function(){b.updateImg()})}}})})};this.updateValues=function(){var g=this.prevImg.get(0);this.origW=this.prevImg.attr("width");this.origH=this.prevImg.attr("height");this.src.main.src.val(this.rte.dom.attr(g,"src"));this.src.main.title.val(this.rte.dom.attr(g,"title"));this.src.main.alt.val(this.rte.dom.attr(g,"alt"));this.src.main.width.val(this.origW);this.src.main.height.val(this.origH);this.src.adv["class"].val(this.rte.dom.attr(g,"class"));this.src.main.margin.val(this.prevImg);var h=this.prevImg.css("float");this.src.main.align.val(h=="left"||h=="right"?h:(this.prevImg.css("vertical-align")||""));this.src.main.border.val(this.prevImg);this.src.adv.style.val(this.rte.dom.attr(g,"style"))};this.cleanValues=function(){a.each(this.src,function(){a.each(this,function(){var g=a(this);if(g.attr("name")!="src"){g.val("")}})})};this.updateImg=function(){this.prevImg.attr({style:a.trim(this.src.adv.style.val()),title:a.trim(this.src.main.title.val()),alt:a.trim(this.src.main.alt.val()),width:parseInt(this.src.main.width.val()),height:parseInt(this.src.main.height.val())});var j=this.src.main.align.val();var k=j=="left"||j=="right"?j:"";var h=this.src.main.border.val();var g=this.src.main.margin.val();this.prevImg.css("float",k);this.prevImg.css("vertical-align",k?"":j);this.prevImg.css("border",a.trim(h.width+" "+h.style+" "+h.color));if(g.css){this.prevImg.css("margin",g.css)}else{this.prevImg.css("margin-top",g.top);this.prevImg.css("margin-right",g.right);this.prevImg.css("margin-bottom",g.bottom);this.prevImg.css("margin-left",g.left)}a.each([this.src.events,this.src.adv],function(){a.each(this,function(){var p=a(this);var q=p.attr("name");if(q!="style"){var o=a.trim(p.val());if(o){b.prevImg.attr(q,o)}else{b.prevImg.removeAttr(q)}}})})};this.updatePreview=function(){var h=this.prevImg?this.prevImg.attr("src"):"";var g=a.trim(this.src.main.src.val());if(!g||g!=h){if(this.prevImg){this.prevImg.remove();this.prevImg=null}this.cleanValues();if(g){this.prevImg=a(this.frame.createElement("img")).attr("src",this.rte.utils.absoluteURL(g)).bind("load",function(){b.updateValues()});this.preview.prepend(this.prevImg);b.updateValues()}}else{this.updateImg()}};this.updateDimesions=function(k){var g=parseInt(this.src.main.width.val())||0;var j=parseInt(this.src.main.height.val())||0;if(g>0&&j>0){if(k.currentTarget==this.src.main.width.get(0)){this.src.main.height.val(parseInt(g*this.origH/this.origW))}else{this.src.main.width.val(parseInt(j*this.origW/this.origH))}}else{this.src.main.width.val(this.origW);this.src.main.height.val(this.origH)}this.updateImg()};this.set=function(){this.rte.history.add();this.rte.selection.restoreIERange();if(!this.prevImg||!this.prevImg.attr("width")){this.img&&this.img.remove();this.link&&this.rte.doc.execCommand("unlink",false,null)}else{if(!this.img[0].parentNode){this.img=a(this.rte.doc.createElement("img"))}this.img.attr({src:this.rte.utils.absoluteURL(a.trim(this.src.main.src.val())),style:a.trim(this.rte.dom.attr(this.prevImg.get(0),"style")),title:a.trim(this.src.main.title.val()),alt:a.trim(this.src.main.alt.val()),width:parseInt(this.src.main.width.val()),height:parseInt(this.src.main.height.val())});for(var g in this.src.adv){if(g!="style"){var h=this.src.adv[g].val();if(h){this.img.attr(g,h)}else{this.img.removeAttr(g)}}}for(var g in this.src.events){var h=this.src.events[g].val();if(h){this.img.attr(g,h)}else{this.img.removeAttr(g)}}if(!this.img[0].parentNode){this.rte.selection.insertNode(this.img.get(0))}}this.rte.ui.update()};this.update=function(){this.domElem.removeClass("disabled");var h=this.rte.selection.getEnd(),g=a(h);if(h.nodeName=="IMG"&&!g.hasClass("elrte-protected")){this.domElem.addClass("active")}else{this.domElem.removeClass("active")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.indent=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.command=function(){this.rte.history.add();var h=this.rte.selection.selected({collapsed:true,blocks:true,wrap:"inline",tag:"p"});function g(q){var o=/(IMG|HR|TABLE|EMBED|OBJECT)/.test(q.nodeName)?"margin-left":"padding-left";var p=b.rte.dom.attr(q,"style").indexOf(o)!=-1?parseInt(a(q).css(o))||0:0;a(q).css(o,p+40+"px")}for(var j=0;j<h.length;j++){if(/^(TABLE|THEAD|TFOOT|TBODY|COL|COLGROUP|TR)$/.test(h[j].nodeName)){a(h[j]).find("td,th").each(function(){g(this)})}else{if(/^LI$/.test(h[j].nodeName)){var k=a(h[j]);a(this.rte.dom.create(h[j].parentNode.nodeName)).append(a(this.rte.dom.create("li")).html(k.html()||"")).appendTo(k.html("&nbsp;"))}else{g(h[j])}}}this.rte.ui.update()};this.update=function(){this.domElem.removeClass("disabled")}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.justifyleft=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.align=this.name=="justifyfull"?"justify":this.name.replace("justify","");this.command=function(){var g=this.rte.selection.selected({collapsed:true,blocks:true,tag:"div"}),f=g.length;f&&this.rte.history.add();while(f--){this.rte.dom.filter(g[f],"textNodes")&&a(g[f]).css("text-align",this.align)}this.rte.ui.update()};this.update=function(){var f=this.rte.selection.getNode(),g=f.nodeName=="BODY"?f:this.rte.dom.selfOrParent(f,"textNodes")||(f.parentNode&&f.parentNode.nodeName=="BODY"?f.parentNode:null);if(g){this.domElem.removeClass("disabled").toggleClass("active",a(g).css("text-align")==this.align)}else{this.domElem.addClass("disabled")}}};elRTE.prototype.ui.prototype.buttons.justifycenter=elRTE.prototype.ui.prototype.buttons.justifyleft;elRTE.prototype.ui.prototype.buttons.justifyright=elRTE.prototype.ui.prototype.buttons.justifyleft;elRTE.prototype.ui.prototype.buttons.justifyfull=elRTE.prototype.ui.prototype.buttons.justifyleft})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.link=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.img=false;function g(){b.labels={id:"ID","class":"Css class",style:"Css style",dir:"Script direction",lang:"Language",charset:"Charset",type:"Target MIME type",rel:"Relationship page to target (rel)",rev:"Relationship target to page (rev)",tabindex:"Tab index",accesskey:"Access key"};b.src={main:{href:a('<input type="text" />'),title:a('<input type="text" />'),anchor:a("<select />").attr("name","anchor"),target:a("<select />").append(a("<option />").text(b.rte.i18n("In this window")).val("")).append(a("<option />").text(b.rte.i18n("In new window (_blank)")).val("_blank"))},popup:{use:a('<input type="checkbox />"'),url:a('<input type="text" />').val("http://"),name:a('<input type="text" />'),width:a('<input type="text" />').attr({size:6,title:b.rte.i18n("Width")}).css("text-align","right"),height:a('<input type="text" />').attr({size:6,title:b.rte.i18n("Height")}).css("text-align","right"),left:a('<input type="text" />').attr({size:6,title:b.rte.i18n("Left")}).css("text-align","right"),top:a('<input type="text" />').attr({size:6,title:b.rte.i18n("Top")}).css("text-align","right"),location:a('<input type="checkbox" />'),menubar:a('<input type="checkbox" />'),toolbar:a('<input type="checkbox" />'),scrollbars:a('<input type="checkbox" />'),status:a('<input type="checkbox" />'),resizable:a('<input type="checkbox" />'),dependent:a('<input type="checkbox" />'),retfalse:a('<input type="checkbox" />').attr("checked",true)},adv:{id:a('<input type="text" />'),"class":a('<input type="text" />'),style:a('<input type="text" />'),dir:a("<select />").append(a("<option />").text(b.rte.i18n("Not set")).val("")).append(a("<option />").text(b.rte.i18n("Left to right")).val("ltr")).append(a("<option />").text(b.rte.i18n("Right to left")).val("rtl")),lang:a('<input type="text" />'),charset:a('<input type="text" />'),type:a('<input type="text" />'),rel:a('<input type="text" />'),rev:a('<input type="text" />'),tabindex:a('<input type="text" />'),accesskey:a('<input type="text" />')},events:{}};a.each(["onblur","onfocus","onclick","ondblclick","onmousedown","onmouseup","onmouseover","onmouseout","onmouseleave","onkeydown","onkeypress","onkeyup"],function(){b.src.events[this]=a('<input type="text" />')});a.each(b.src,function(){for(var j in this){this[j].attr("name",j);var h=this[j].attr("type");if(!h||(h=="text"&&!this[j].attr("size"))){this[j].css("width","100%")}}})}this.command=function(){var p=this.rte.selection.getNode(),o,u,x,h,t,j,w,k,z;!this.src&&g();this.rte.selection.saveIERange();function q(r){return r.nodeName=="A"&&r.href}this.link=this.rte.dom.selfOrParentLink(p);if(!this.link){o=a.browser.msie?this.rte.selection.selected():this.rte.selection.selected({wrap:false});if(o.length){for(u=0;u<o.length;u++){if(q(o[u])){this.link=o[u];break}}if(!this.link){this.link=this.rte.dom.parent(o[0],q)||this.rte.dom.parent(o[o.length-1],q)}}}this.link=this.link?a(this.link):a(this.rte.doc.createElement("a"));this.img=p.nodeName=="IMG"?p:null;this.updatePopup();this.src.main.anchor.empty();a('a[href!=""][name]',this.rte.doc).each(function(){var r=a(this).attr("name");b.src.main.anchor.append(a("<option />").val(r).text(r))});if(this.src.main.anchor.children().length){this.src.main.anchor.prepend(a("<option />").val("").text(this.rte.i18n("Select bookmark"))).change(function(){var r=a(this).val();if(r){b.src.main.href.val("#"+r)}})}h={rtl:this.rte.rtl,submit:function(r,v){r.stopPropagation();r.preventDefault();b.set();v.close()},tabs:{show:function(v,r){if(r.index==3){b.updateOnclick()}}},close:function(){b.rte.browser.msie&&b.rte.selection.restoreIERange()},dialog:{width:"auto",width:430,title:this.rte.i18n("Link")}};d=new elDialogForm(h);t=a("<div />").append(a("<label />").append(this.src.popup.location).append(this.rte.i18n("Location bar"))).append(a("<label />").append(this.src.popup.menubar).append(this.rte.i18n("Menu bar"))).append(a("<label />").append(this.src.popup.toolbar).append(this.rte.i18n("Toolbar"))).append(a("<label />").append(this.src.popup.scrollbars).append(this.rte.i18n("Scrollbars")));j=a("<div />").append(a("<label />").append(this.src.popup.status).append(this.rte.i18n("Status bar"))).append(a("<label />").append(this.src.popup.resizable).append(this.rte.i18n("Resizable"))).append(a("<label />").append(this.src.popup.dependent).append(this.rte.i18n("Depedent"))).append(a("<label />").append(this.src.popup.retfalse).append(this.rte.i18n("Add return false")));d.tab("main",this.rte.i18n("Properies")).tab("popup",this.rte.i18n("Popup")).tab("adv",this.rte.i18n("Advanced")).tab("events",this.rte.i18n("Events")).append(a("<label />").append(this.src.popup.use).append(this.rte.i18n("Open link in popup window")),"popup").separator("popup").append([this.rte.i18n("URL"),this.src.popup.url],"popup",true).append([this.rte.i18n("Window name"),this.src.popup.name],"popup",true).append([this.rte.i18n("Window size"),a("<span />").append(this.src.popup.width).append(" x ").append(this.src.popup.height).append(" px")],"popup",true).append([this.rte.i18n("Window position"),a("<span />").append(this.src.popup.left).append(" x ").append(this.src.popup.top).append(" px")],"popup",true).separator("popup").append([t,j],"popup",true);w=this.link.get(0);k=this.rte.dom.attr(w,"href");this.src.main.href.val(k).change(function(){a(this).val(b.rte.utils.absoluteURL(a(this).val()))});if(this.rte.options.fmAllow&&this.rte.options.fmOpen){var z=a("<span />").append(this.src.main.href.css("width","87%")).append(a("<span />").addClass("ui-state-default ui-corner-all").css({"float":"right","margin-right":"3px"}).attr("title",b.rte.i18n("Open file manger")).append(a("<span />").addClass("ui-icon ui-icon-folder-open")).click(function(){b.rte.options.fmOpen(function(r){b.src.main.href.val(r).change()})}).hover(function(){a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}));d.append([this.rte.i18n("Link URL"),z],"main",true)}else{d.append([this.rte.i18n("Link URL"),this.src.main.href],"main",true)}this.src.main.href.change();d.append([this.rte.i18n("Title"),this.src.main.title.val(this.rte.dom.attr(w,"title"))],"main",true);if(this.src.main.anchor.children().length){d.append([this.rte.i18n("Bookmark"),this.src.main.anchor.val(k)],"main",true)}if(!this.rte.options.doctype.match(/xhtml/)){d.append([this.rte.i18n("Target"),this.src.main.target.val(this.link.attr("target")||"")],"main",true)}for(var p in this.src.adv){this.src.adv[p].val(this.rte.dom.attr(w,p));d.append([this.rte.i18n(this.labels[p]?this.labels[p]:p),this.src.adv[p]],"adv",true)}for(var p in this.src.events){var x=this.rte.utils.trimEventCallback(this.rte.dom.attr(w,p));this.src.events[p].val(x);d.append([this.rte.i18n(this.labels[p]?this.labels[p]:p),this.src.events[p]],"events",true)}this.src.popup.use.change(function(){var r=a(this).attr("checked");a.each(b.src.popup,function(){if(a(this).attr("name")!="use"){if(r){a(this).removeAttr("disabled")}else{a(this).attr("disabled",true)}}})});this.src.popup.use.change();d.open()};this.update=function(){var h=this.rte.selection.getNode();if(this.rte.dom.selfOrParentLink(h)){this.domElem.removeClass("disabled").addClass("active")}else{if(this.rte.dom.selectionHas(function(j){return j.nodeName=="A"&&j.href})){this.domElem.removeClass("disabled").addClass("active")}else{if(!this.rte.selection.collapsed()||h.nodeName=="IMG"){this.domElem.removeClass("disabled active")}else{this.domElem.addClass("disabled").removeClass("active")}}}};this.updatePopup=function(){var h=this.rte.dom.attr(this.link.get(0),"onclick");h=h?a.trim(h.toString()):"";if(h.length>0&&(m=h.match(/window.open\("([^"]+)",\s*"([^"]*)",\s*"([^"]*)"\s*.*\);\s*(return\s+false)?/))){this.src.popup.use.attr("checked","on");this.src.popup.url.val(m[1]);this.src.popup.name.val(m[2]);if(/location=yes/.test(m[3])){this.src.popup.location.attr("checked",true)}if(/menubar=yes/.test(m[3])){this.src.popup.menubar.attr("checked",true)}if(/toolbar=yes/.test(m[3])){this.src.popup.toolbar.attr("checked",true)}if(/scrollbars=yes/.test(m[3])){this.src.popup.scrollbars.attr("checked",true)}if(/status=yes/.test(m[3])){this.src.popup.status.attr("checked",true)}if(/resizable=yes/.test(m[3])){this.src.popup.resizable.attr("checked",true)}if(/dependent=yes/.test(m[3])){this.src.popup.dependent.attr("checked",true)}if((_m=m[3].match(/width=([^,]+)/))){this.src.popup.width.val(_m[1])}if((_m=m[3].match(/height=([^,]+)/))){this.src.popup.height.val(_m[1])}if((_m=m[3].match(/left=([^,]+)/))){this.src.popup.left.val(_m[1])}if((_m=m[3].match(/top=([^,]+)/))){this.src.popup.top.val(_m[1])}if(m[4]){this.src.popup.retfalse.attr("checked",true)}}else{a.each(this.src.popup,function(){var j=a(this);if(j.attr("type")=="text"){j.val(j.attr("name")=="url"?"http://":"")}else{if(j.attr("name")=="retfalse"){this.attr("checked",true)}else{j.removeAttr("checked")}}})}};this.updateOnclick=function(){var o=this.src.popup.url.val();if(this.src.popup.use.attr("checked")&&o){var p="";if(this.src.popup.location.attr("checked")){p+="location=yes,"}if(this.src.popup.menubar.attr("checked")){p+="menubar=yes,"}if(this.src.popup.toolbar.attr("checked")){p+="toolbar=yes,"}if(this.src.popup.scrollbars.attr("checked")){p+="scrollbars=yes,"}if(this.src.popup.status.attr("checked")){p+="status=yes,"}if(this.src.popup.resizable.attr("checked")){p+="resizable=yes,"}if(this.src.popup.dependent.attr("checked")){p+="dependent=yes,"}if(this.src.popup.width.val()){p+="width="+this.src.popup.width.val()+","}if(this.src.popup.height.val()){p+="height="+this.src.popup.height.val()+","}if(this.src.popup.left.val()){p+="left="+this.src.popup.left.val()+","}if(this.src.popup.top.val()){p+="top="+this.src.popup.top.val()+","}if(p.length>0){p=p.substring(0,p.length-1)}var j=this.src.popup.retfalse.attr("checked")?"return false;":"";var k='window.open("'+o+'", "'+a.trim(this.src.popup.name.val())+'", "'+p+'");'+j;this.src.events.onclick.val(k);if(!this.src.main.href.val()){this.src.main.href.val("#")}}else{var h=this.src.events.onclick.val();h=h.replace(/window\.open\([^\)]+\)\s*;?\s*return\s*false\s*;?/i,"");this.src.events.onclick.val(h)}};this.set=function(){var j,k;this.updateOnclick();this.rte.selection.restoreIERange();this.rte.history.add();j=this.rte.utils.absoluteURL(this.src.main.href.val());if(!j){var p=this.rte.selection.getBookmark();this.rte.dom.unwrap(this.link[0]);this.rte.selection.moveToBookmark(p)}else{if(!this.link[0].parentNode){if(this.img&&this.img.parentNode){this.link=a(this.rte.dom.create("a")).attr("href",j);this.rte.dom.wrap(this.img,this.link[0])}else{k="#--el-editor---"+Math.random();this.rte.doc.execCommand("createLink",false,k);this.link=a('a[href="'+k+'"]',this.rte.doc);this.link.each(function(){var r=a(this);if(!a.trim(r.html())&&!a.trim(r.text())){r.replaceWith(r.text())}})}}this.src.main.href.val(j);for(var o in this.src){if(o!="popup"){for(var q in this.src[o]){if(q!="anchors"){var h=a.trim(this.src[o][q].val());if(h){this.link.attr(q,h)}else{this.link.removeAttr(q)}}}}}this.img&&this.rte.selection.select(this.img)}this.rte.ui.update(true)}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.nbsp=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.command=function(){this.rte.history.add();this.rte.selection.insertHtml("&nbsp;",true);this.rte.window.focus();this.rte.ui.update()};this.update=function(){this.domElem.removeClass("disabled")}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.outdent=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.command=function(){var g=this.find();if(g.node){this.rte.history.add();a(g.node).css(g.type,(g.val>40?g.val-40:0)+"px");this.rte.ui.update()}};this.find=function(j){function g(p){var k={type:"",val:0};var o;if((o=b.rte.dom.attr(p,"style"))){k.type=o.indexOf("padding-left")!=-1?"padding-left":(o.indexOf("margin-left")!=-1?"margin-left":"");k.val=k.type?parseInt(a(p).css(k.type))||0:0}return k}var j=this.rte.selection.getNode();var h=g(j);if(h.val){h.node=j}else{a.each(this.rte.dom.parents(j,"*"),function(){h=g(this);if(h.val){h.node=this;return h}})}return h};this.update=function(){var g=this.find();if(g.node){this.domElem.removeClass("disabled")}else{this.domElem.addClass("disabled")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.pagebreak=function(c,b){this.constructor.prototype.constructor.call(this,c,b);a(this.rte.doc.body).bind("mousedown",function(f){if(a(f.target).hasClass("elrte-pagebreak")){f.preventDefault()}});this.command=function(){this.rte.selection.insertHtml('<img src="'+this.rte.filter.url+'pixel.gif" class="elrte-protected elrte-pagebreak"/>',false)};this.update=function(){this.domElem.removeClass("disabled")}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.pasteformattext=function(f,c){this.constructor.prototype.constructor.call(this,f,c);this.iframe=a(document.createElement("iframe")).addClass("el-rte-paste-input");this.doc=null;var b=this;this.command=function(){this.rte.selection.saveIERange();var g=this,h={submit:function(o,p){o.stopPropagation();o.preventDefault();g.paste();p.close()},dialog:{width:500,title:this.rte.i18n("Paste formatted text")}},k=new elDialogForm(h);k.append(this.iframe).open();this.doc=this.iframe.get(0).contentWindow.document;html=this.rte.options.doctype+'<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';html+="</head><body> <br /> </body></html>";this.doc.open();this.doc.write(html);this.doc.close();if(!this.rte.browser.msie){try{this.doc.designMode="on"}catch(j){}}else{this.doc.body.contentEditable=true}setTimeout(function(){g.iframe[0].contentWindow.focus()},50)};this.paste=function(){a(this.doc.body).find("[class]").removeAttr("class");var g=a.trim(a(this.doc.body).html());if(g){this.rte.history.add();this.rte.selection.restoreIERange();this.rte.selection.insertHtml(this.rte.filter.wysiwyg2wysiwyg(this.rte.filter.proccess("paste",g)));this.rte.ui.update(true)}};this.update=function(){this.domElem.removeClass("disabled")}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.pastetext=function(f,c){this.constructor.prototype.constructor.call(this,f,c);this.input=a("<textarea />").addClass("el-rte-paste-input");var b=this;this.command=function(){this.rte.browser.msie&&this.rte.selection.saveIERange();var g={submit:function(j,k){j.stopPropagation();j.preventDefault();b.paste();k.close()},dialog:{width:500,title:this.rte.i18n("Paste only text")}};var h=new elDialogForm(g);h.append(this.input).open()};this.paste=function(){var g=a.trim(this.input.val());if(g){this.rte.history.add();this.rte.browser.msie&&this.rte.selection.restoreIERange();this.rte.selection.insertText(g.replace(/\r?\n/g,"<br />"),true);this.rte.ui.update(true)}this.input.val("")};this.update=function(){this.domElem.removeClass("disabled")}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.save=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.active=true;this.command=function(){this.rte.save()};this.update=function(){}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.smiley=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.img=null;this.url=this.rte.filter.url+"smileys/";this.smileys={smile:"smile.png",happy:"happy.png",tongue:"tongue.png",surprised:"surprised.png",waii:"waii.png",wink:"wink.png",evilgrin:"evilgrin.png",grin:"grin.png",unhappy:"unhappy.png"};this.width=120;this.command=function(){var h=this,j=this.url,o,k,g;this.rte.browser.msie&&this.rte.selection.saveIERange();k={dialog:{height:120,width:this.width,title:this.rte.i18n("Smiley"),buttons:{}}};o=new elDialogForm(k);a.each(this.smileys,function(q,p){o.append(a('<img src="'+j+p+'" title="'+q+'" id="'+q+'" class="el-rte-smiley"/>').click(function(){h.set(this.id,o)}))});o.open()};this.update=function(){this.domElem.removeClass("disabled");this.domElem.removeClass("active")};this.set=function(g,h){this.rte.browser.msie&&this.rte.selection.restoreIERange();if(this.smileys[g]){this.img=a(this.rte.doc.createElement("img"));this.img.attr({src:this.url+this.smileys[g],title:g,alt:g});this.rte.selection.insertNode(this.img.get(0));this.rte.ui.update()}h.close()}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.stopfloat=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.find=function(){if(this.rte.selection.collapsed()){var f=this.rte.dom.selfOrParent(this.rte.selection.getEnd(),/^DIV$/);if(f&&(this.rte.dom.attr(f,"clear")||a(f).css("clear")!="none")){return f}}};this.command=function(){var f;if((f=this.find())){var f=a(f);this.rte.history.add();if(!f.children().length&&!a.trim(f.text()).length){f.remove()}else{f.removeAttr("clear").css("clear","")}}else{this.rte.history.add();this.rte.selection.insertNode(a(this.rte.dom.create("div")).css("clear","both").get(0),true)}this.rte.ui.update(true)};this.update=function(){this.domElem.removeClass("disabled");if(this.find()){this.domElem.addClass("active")}else{this.domElem.removeClass("active")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.table=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.src=null;this.labels=null;function g(){b.labels={main:"Properies",adv:"Advanced",events:"Events",id:"ID","class":"Css class",style:"Css style",dir:"Script direction",summary:"Summary",lang:"Language",href:"URL"};b.src={main:{caption:a('<input type="text" />'),rows:a('<input type="text" />').attr("size",5).val(2),cols:a('<input type="text" />').attr("size",5).val(2),width:a('<input type="text" />').attr("size",5),wunit:a("<select />").append(a("<option />").val("%").text("%")).append(a("<option />").val("px").text("px")),height:a('<input type="text" />').attr("size",5),hunit:a("<select />").append(a("<option />").val("%").text("%")).append(a("<option />").val("px").text("px")),align:a("<select />").append(a("<option />").val("").text(b.rte.i18n("Not set"))).append(a("<option />").val("left").text(b.rte.i18n("Left"))).append(a("<option />").val("center").text(b.rte.i18n("Center"))).append(a("<option />").val("right").text(b.rte.i18n("Right"))),spacing:a('<input type="text" />').attr("size",5),padding:a('<input type="text" />').attr("size",5),border:a("<div />"),rules:a("<select />").append(a("<option />").val("none").text(b.rte.i18n("No"))).append(a("<option />").val("all").text(b.rte.i18n("Cells"))).append(a("<option />").val("groups").text(b.rte.i18n("Groups"))).append(a("<option />").val("rows").text(b.rte.i18n("Rows"))).append(a("<option />").val("cols").text(b.rte.i18n("Columns"))),margin:a("<div />"),bg:a("<div />"),bgimg:a('<input type="text" />').css("width","90%")},adv:{id:a('<input type="text" />'),summary:a('<input type="text" />'),"class":a('<input type="text" />'),style:a('<input type="text" />'),dir:a("<select />").append(a("<option />").text(b.rte.i18n("Not set")).val("")).append(a("<option />").text(b.rte.i18n("Left to right")).val("ltr")).append(a("<option />").text(b.rte.i18n("Right to left")).val("rtl")),lang:a('<input type="text" />')},events:{}};a.each(b.src,function(){for(var j in this){this[j].attr("name",j);var h=this[j].get(0).nodeName;if(h=="INPUT"&&j!="bgimg"){this[j].css(this[j].attr("size")?{"text-align":"right"}:{width:"100%"})}else{if(h=="SELECT"&&j!="wunit"&&j!="hunit"){this[j].css("width","100%")}}}});a.each(["onblur","onfocus","onclick","ondblclick","onmousedown","onmouseup","onmouseover","onmouseout","onmouseleave","onkeydown","onkeypress","onkeyup"],function(){b.src.events[this]=a('<input type="text" />').attr("name",this).css("width","100%")});b.src.main.align.change(function(){var j=a(this).val();if(j=="center"){b.src.main.margin.val({left:"auto",right:"auto"})}else{var h=b.src.main.margin.val();if(h.left=="auto"&&h.right=="auto"){b.src.main.margin.val({left:"",right:""})}}});b.src.main.bgimg.change(function(){var h=a(this);h.val(b.rte.utils.absoluteURL(h.val()))})}this.command=function(){var r=this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^TABLE$/);if(this.name=="table"){this.table=a(this.rte.doc.createElement("table"))}else{this.table=r?a(r):a(this.rte.doc.createElement("table"))}!this.src&&g();this.src.main.border.elBorderSelect({styleHeight:117});this.src.main.bg.elColorPicker({palettePosition:"outer","class":"el-colorpicker ui-icon ui-icon-pencil"});this.src.main.margin.elPaddingInput({type:"margin",value:this.table});if(this.table.parents().length){this.src.main.rows.val("").attr("disabled",true);this.src.main.cols.val("").attr("disabled",true)}else{this.src.main.rows.val(2).removeAttr("disabled");this.src.main.cols.val(2).removeAttr("disabled")}var D=this.table.css("width")||this.table.attr("width");this.src.main.width.val(parseInt(D)||"");this.src.main.wunit.val(D.indexOf("px")!=-1?"px":"%");var z=this.table.css("height")||this.table.attr("height");this.src.main.height.val(parseInt(z)||"");this.src.main.hunit.val(z&&z.indexOf("px")!=-1?"px":"%");var B=this.table.css("float");this.src.main.align.val("");if(B=="left"||B=="right"){this.src.main.align.val(B)}else{var t=this.table.css("margin-left");var p=this.table.css("margin-right");if(t=="auto"&&p=="auto"){this.src.main.align.val("center")}}this.src.main.border.val(this.table);this.src.main.rules.val(this.rte.dom.attr(this.table.get(0),"rules"));this.src.main.bg.val(this.table.css("background-color"));var j=(this.table.css("background-image")||"").replace(/url\(([^\)]+)\)/i,"$1");this.src.main.bgimg.val(j!="none"?j:"");var k={rtl:this.rte.rtl,submit:function(h,v){h.stopPropagation();h.preventDefault();b.set();v.close()},dialog:{width:530,title:this.rte.i18n("Table")}};var C=new elDialogForm(k);for(var q in this.src){C.tab(q,this.rte.i18n(this.labels[q]));if(q=="main"){var A=a("<table />").append(a("<tr />").append("<td>"+this.rte.i18n("Rows")+"</td>").append(a("<td />").append(this.src.main.rows))).append(a("<tr />").append("<td>"+this.rte.i18n("Columns")+"</td>").append(a("<td />").append(this.src.main.cols)));var x=a("<table />").append(a("<tr />").append("<td>"+this.rte.i18n("Width")+"</td>").append(a("<td />").append(this.src.main.width).append(this.src.main.wunit))).append(a("<tr />").append("<td>"+this.rte.i18n("Height")+"</td>").append(a("<td />").append(this.src.main.height).append(this.src.main.hunit)));var u=a("<table />").append(a("<tr />").append("<td>"+this.rte.i18n("Spacing")+"</td>").append(a("<td />").append(this.src.main.spacing.val(this.table.attr("cellspacing")||"")))).append(a("<tr />").append("<td>"+this.rte.i18n("Padding")+"</td>").append(a("<td />").append(this.src.main.padding.val(this.table.attr("cellpadding")||""))));C.append([this.rte.i18n("Caption"),this.src.main.caption.val(this.table.find("caption").eq(0).text()||"")],"main",true).separator("main").append([A,x,u],"main",true).separator("main").append([this.rte.i18n("Border"),this.src.main.border],"main",true).append([this.rte.i18n("Inner borders"),this.src.main.rules],"main",true).append([this.rte.i18n("Alignment"),this.src.main.align],"main",true).append([this.rte.i18n("Margins"),this.src.main.margin],"main",true).append([this.rte.i18n("Background"),a("<span />").append(a("<span />").css({"float":"left","margin-right":"3px"}).append(this.src.main.bg)).append(this.src.main.bgimg)],"main",true)}else{for(var o in this.src[q]){var E=this.rte.dom.attr(this.table,o);if(q=="events"){E=this.rte.utils.trimEventCallback(E)}C.append([this.rte.i18n(this.labels[o]?this.labels[o]:o),this.src[q][o].val(E)],q,true)}}}C.open()};this.set=function(){if(!this.table.parents().length){var k=parseInt(this.src.main.rows.val())||0;var B=parseInt(this.src.main.cols.val())||0;if(k<=0||B<=0){return}this.rte.history.add();var D=a(this.rte.doc.createElement("tbody")).appendTo(this.table);for(var u=0;u<k;u++){var C="<tr>";for(var t=0;t<B;t++){C+="<td>&nbsp;</td>"}D.append(C+"</tr>")}}else{this.table.removeAttr("width").removeAttr("height").removeAttr("border").removeAttr("align").removeAttr("bordercolor").removeAttr("bgcolor").removeAttr("cellspacing").removeAttr("cellpadding").removeAttr("frame").removeAttr("rules").removeAttr("style")}var I=a.trim(this.src.main.caption.val());if(I){if(!this.table.children("caption").length){this.table.prepend("<caption />")}this.table.children("caption").text(I)}else{this.table.children("caption").remove()}for(var p in this.src){if(p!="main"){for(var o in this.src[p]){var G=a.trim(this.src[p][o].val());if(G){this.table.attr(o,G)}else{this.table.removeAttr(o)}}}}var A,E,H;if((A=parseInt(this.src.main.spacing.val()))&&A>=0){this.table.attr("cellspacing",A)}if((E=parseInt(this.src.main.padding.val()))&&E>=0){this.table.attr("cellpadding",E)}if((H=this.src.main.rules.val())){this.table.attr("rules",H)}var F=parseInt(this.src.main.width.val())||"",x=parseInt(this.src.main.height.val())||"",u=a.trim(this.src.main.bgimg.val()),D=this.src.main.border.val(),q=this.src.main.margin.val(),z=this.src.main.align.val();this.table.css({width:F?F+this.src.main.wunit.val():"",height:x?x+this.src.main.hunit.val():"",border:a.trim(D.width+" "+D.style+" "+D.color),"background-color":this.src.main.bg.val(),"background-image":u?"url("+u+")":""});if(q.css){this.table.css("margin",q.css)}else{this.table.css({"margin-top":q.top,"margin-right":q.right,"margin-bottom":q.bottom,"margin-left":q.left})}if((z=="left"||z=="right")&&this.table.css("margin-left")!="auto"&&this.table.css("margin-right")!="auto"){this.table.css("float",z)}if(!this.table.attr("style")){this.table.removeAttr("style")}if(!this.table.parents().length){this.rte.selection.insertNode(this.table.get(0),true)}this.rte.ui.update()};this.update=function(){this.domElem.removeClass("disabled");if(this.name=="tableprops"&&!this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^TABLE$/)){this.domElem.addClass("disabled").removeClass("active")}}};elRTE.prototype.ui.prototype.buttons.tableprops=elRTE.prototype.ui.prototype.buttons.table})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.tablerm=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.command=function(){var f=this.rte.dom.parent(this.rte.selection.getNode(),/^TABLE$/);if(f){this.rte.history.add();a(f).remove()}this.rte.ui.update(true)};this.update=function(){if(this.rte.dom.parent(this.rte.selection.getNode(),/^TABLE$/)){this.domElem.removeClass("disabled")}else{this.domElem.addClass("disabled")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.tbcellprops=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.src=null;this.labels=null;function g(){b.labels={main:"Properies",adv:"Advanced",events:"Events",id:"ID","class":"Css class",style:"Css style",dir:"Script direction",lang:"Language"};b.src={main:{type:a("<select />").css("width","100%").append(a("<option />").val("td").text(b.rte.i18n("Data"))).append(a("<option />").val("th").text(b.rte.i18n("Header"))),width:a('<input type="text" />').attr("size",4),wunit:a("<select />").append(a("<option />").val("%").text("%")).append(a("<option />").val("px").text("px")),height:a('<input type="text" />').attr("size",4),hunit:a("<select />").append(a("<option />").val("%").text("%")).append(a("<option />").val("px").text("px")),align:a("<select />").css("width","100%").append(a("<option />").val("").text(b.rte.i18n("Not set"))).append(a("<option />").val("left").text(b.rte.i18n("Left"))).append(a("<option />").val("center").text(b.rte.i18n("Center"))).append(a("<option />").val("right").text(b.rte.i18n("Right"))).append(a("<option />").val("justify").text(b.rte.i18n("Justify"))),border:a("<div />"),padding:a("<div />"),bg:a("<div />"),bgimg:a('<input type="text" />').css("width","90%"),apply:a("<select />").css("width","100%").append(a("<option />").val("").text(b.rte.i18n("Current cell"))).append(a("<option />").val("row").text(b.rte.i18n("All cells in row"))).append(a("<option />").val("column").text(b.rte.i18n("All cells in column"))).append(a("<option />").val("table").text(b.rte.i18n("All cells in table")))},adv:{id:a('<input type="text" />'),"class":a('<input type="text" />'),style:a('<input type="text" />'),dir:a("<select />").css("width","100%").append(a("<option />").text(b.rte.i18n("Not set")).val("")).append(a("<option />").text(b.rte.i18n("Left to right")).val("ltr")).append(a("<option />").text(b.rte.i18n("Right to left")).val("rtl")),lang:a('<input type="text" />')},events:{}};a.each(b.src,function(){for(var h in this){this[h].attr("name",h);if(this[h].attr("type")=="text"&&!this[h].attr("size")&&h!="bgimg"){this[h].css("width","100%")}}});a.each(["onblur","onfocus","onclick","ondblclick","onmousedown","onmouseup","onmouseover","onmouseout","onmouseleave","onkeydown","onkeypress","onkeyup"],function(){b.src.events[this]=a('<input type="text" />').attr("name",this).css("width","100%")})}this.command=function(){!this.src&&g();this.cell=this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^(TD|TH)$/);if(!this.cell){return}this.src.main.type.val(this.cell.nodeName.toLowerCase());this.cell=a(this.cell);this.src.main.border.elBorderSelect({styleHeight:117,value:this.cell});this.src.main.bg.elColorPicker({palettePosition:"outer","class":"el-colorpicker ui-icon ui-icon-pencil"});this.src.main.padding.elPaddingInput({value:this.cell});var j=this.cell.css("width")||this.cell.attr("width");this.src.main.width.val(parseInt(j)||"");this.src.main.wunit.val(j.indexOf("px")!=-1?"px":"%");var q=this.cell.css("height")||this.cell.attr("height");this.src.main.height.val(parseInt(q)||"");this.src.main.hunit.val(q.indexOf("px")!=-1?"px":"%");this.src.main.align.val(this.cell.attr("align")||this.cell.css("text-align"));this.src.main.bg.val(this.cell.css("background-color"));var t=this.cell.css("background-image");this.src.main.bgimg.val(t&&t!="none"?t.replace(/url\(([^\)]+)\)/i,"$1"):"");this.src.main.apply.val("");var r={rtl:this.rte.rtl,submit:function(h,v){h.stopPropagation();h.preventDefault();b.set();v.close()},dialog:{width:520,title:this.rte.i18n("Table cell properties")}};var u=new elDialogForm(r);for(var p in this.src){u.tab(p,this.rte.i18n(this.labels[p]));if(p=="main"){u.append([this.rte.i18n("Width"),a("<span />").append(this.src.main.width).append(this.src.main.wunit)],"main",true).append([this.rte.i18n("Height"),a("<span />").append(this.src.main.height).append(this.src.main.hunit)],"main",true).append([this.rte.i18n("Table cell type"),this.src.main.type],"main",true).append([this.rte.i18n("Border"),this.src.main.border],"main",true).append([this.rte.i18n("Alignment"),this.src.main.align],"main",true).append([this.rte.i18n("Paddings"),this.src.main.padding],"main",true).append([this.rte.i18n("Background"),a("<span />").append(a("<span />").css({"float":"left","margin-right":"3px"}).append(this.src.main.bg)).append(this.src.main.bgimg)],"main",true).append([this.rte.i18n("Apply to"),this.src.main.apply],"main",true)}else{for(var o in this.src[p]){var k=this.cell.attr(o)||"";if(p=="events"){k=this.rte.utils.trimEventCallback(k)}u.append([this.rte.i18n(this.labels[o]?this.labels[o]:o),this.src[p][o].val(k)],p,true)}}}u.open()};this.set=function(){var x=this.cell,B=this.src.main.apply.val();switch(this.src.main.apply.val()){case"row":x=this.cell.parent("tr").children("td,th");break;case"column":x=a(this.rte.dom.tableColumn(this.cell.get(0)));break;case"table":x=this.cell.parents("table").find("td,th");break}for(var o in this.src){if(o!="main"){for(var k in this.src[o]){var C=a.trim(this.src[o][k].val());if(C){x.attr(k,C)}else{x.removeAttr(k)}}}}x.removeAttr("width").removeAttr("height").removeAttr("border").removeAttr("align").removeAttr("bordercolor").removeAttr("bgcolor");var D=this.src.main.type.val();var A=parseInt(this.src.main.width.val())||"";var r=parseInt(this.src.main.height.val())||"";var q=a.trim(this.src.main.bgimg.val());var z=this.src.main.border.val();var u={width:A?A+this.src.main.wunit.val():"",height:r?r+this.src.main.hunit.val():"","background-color":this.src.main.bg.val(),"background-image":q?"url("+q+")":"",border:a.trim(z.width+" "+z.style+" "+z.color),"text-align":this.src.main.align.val()||""};var j=this.src.main.padding.val();if(j.css){u.padding=j.css}else{u["padding-top"]=j.top;u["padding-right"]=j.right;u["padding-bottom"]=j.bottom;u["padding-left"]=j.left}x=x.get();a.each(x,function(){var w=this.nodeName.toLowerCase();var F=a(this);if(w!=D){var h={};for(var t in b.src.adv){var p=F.attr(t);if(p){h[t]=p.toString()}}for(var t in b.src.events){var p=F.attr(t);if(p){h[t]=p.toString()}}var G=F.attr("colspan")||1;var E=F.attr("rowspan")||1;if(G>1){h.colspan=G}if(E>1){h.rowspan=E}F.replaceWith(a("<"+D+" />").html(F.html()).attr(h).css(u))}else{F.css(u)}});this.rte.ui.update()};this.update=function(){if(this.rte.dom.parent(this.rte.selection.getNode(),/^TABLE$/)){this.domElem.removeClass("disabled")}else{this.domElem.addClass("disabled")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.tbcellsmerge=function(g,f){this.constructor.prototype.constructor.call(this,g,f);var c=this;function b(){var j=c.rte.dom.selfOrParent(c.rte.selection.getStart(),/^(TD|TH)$/);var h=c.rte.dom.selfOrParent(c.rte.selection.getEnd(),/^(TD|TH)$/);if(j&&h&&j!=h&&a(j).parents("table").get(0)==a(h).parents("table").get(0)){return[j,h]}return null}this.command=function(){var z=b();if(z){var x=this.rte.dom.indexOf(a(z[0]).parent("tr").get(0));var r=this.rte.dom.indexOf(a(z[1]).parent("tr").get(0));var q=Math.min(x,r);var u=Math.max(x,r)-q+1;var j=this.rte.dom.tableColumn(z[0],true,true);var h=this.rte.dom.tableColumn(z[1],true);var B=a.inArray(z[0],j.column);var w=a.inArray(z[1],h.column);var p=j.info.offset[B]<h.info.offset[w]?j:h;var v=j.info.offset[B]>=h.info.offset[w]?j:h;var k=0;var t=null;var o="";this.rte.history.add();var A=a(a(z[0]).parents("table").eq(0).find("tr").get().slice(q,q+u)).each(function(E){var D=o.length;var C=false;a(this).children("td,th").each(function(){var K=a(this);var I=a.inArray(this,p.column);var H=a.inArray(this,v.column);if(I!=-1||H!=-1){C=I!=-1&&H==-1;var G=parseInt(K.attr("colspan")||1);if(E==0){k+=G}if(I!=-1&&E>0){var L=p.info.delta[I];if(L>0){if(K.css("text-align")=="left"){var F=K.clone(true);K.html("&nbsp;")}else{var F=K.clone().html("&nbsp;")}F.removeAttr("colspan").removeAttr("id").insertBefore(this);if(L>1){F.attr("colspan",L)}}}if(H!=-1){var L=v.info.delta[H];if(G-L>1){var J=G-L-1;if(K.css("text-align")=="right"){var F=K.clone(true);K.html("&nbsp;")}else{var F=K.clone().html("&nbsp;")}F.removeAttr("colspan").removeAttr("id").insertAfter(this);if(J>1){F.attr("colspan",J)}}}if(!t){t=K}else{o+=K.html();K.remove()}}else{if(C){if(E==0){k+=parseInt(K.attr("colspan")||1)}o+=K.html();K.remove()}}});o+=D!=o.length?"<br />":""});t.removeAttr("colspan").removeAttr("rowspan").html(t.html()+o);if(k>1){t.attr("colspan",k)}if(u>1){t.attr("rowspan",u)}this.rte.dom.fixTable(a(z[0]).parents("table").get(0))}};this.update=function(){if(b()){this.domElem.removeClass("disabled")}else{this.domElem.addClass("disabled")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.tbcellsplit=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.command=function(){var j=this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^(TD|TH)$/);if(j){this.rte.history.add();var k=parseInt(this.rte.dom.attr(j,"colspan"));var o=parseInt(this.rte.dom.attr(j,"rowspan"));if(k>1||o>1){var u=k-1;var v=o-1;var q=this.rte.dom.parent(j,/^TABLE$/);var p=this.rte.dom.tableMatrix(q);if(u){for(var t=0;t<u;t++){a(this.rte.dom.create(j.nodeName)).html("&nbsp;").insertAfter(j)}}if(v){var x=this.rte.dom.indexesOfCell(j,p);var h=x[0];var g=x[1];for(var f=h+1;f<h+v+1;f++){var w;if(!p[f][g].nodeName){if(p[f][g-1].nodeName){w=p[f][g-1]}else{for(var t=g-1;t>=0;t--){if(p[f][t].nodeName){w=p[f][t];break}}}if(w){for(var t=0;t<=u;t++){a(this.rte.dom.create(w.nodeName)).html("&nbsp;").insertAfter(w)}}}}}a(j).removeAttr("colspan").removeAttr("rowspan");this.rte.dom.fixTable(q)}}this.rte.ui.update(true)};this.update=function(){var f=this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^(TD|TH)$/);if(f&&(parseInt(this.rte.dom.attr(f,"colspan"))>1||parseInt(this.rte.dom.attr(f,"rowspan"))>1)){this.domElem.removeClass("disabled")}else{this.domElem.addClass("disabled")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.tbcolbefore=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.command=function(){var g=this.rte.dom.tableColumn(this.rte.selection.getNode(),false,true);if(g.length){this.rte.history.add();a.each(g,function(){var j=a(this);var h=parseInt(j.attr("colspan")||1);if(h>1){j.attr("colspan",h+1)}else{var k=j.clone().html("&nbsp;").removeAttr("colspan").removeAttr("width").removeAttr("id");if(b.name=="tbcolbefore"){k.insertBefore(this)}else{k.insertAfter(this)}}});this.rte.ui.update()}};this.update=function(){if(this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^(TD|TH)$/)){this.domElem.removeClass("disabled")}else{this.domElem.addClass("disabled")}}};elRTE.prototype.ui.prototype.buttons.tbcolafter=elRTE.prototype.ui.prototype.buttons.tbcolbefore})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.tbcolrm=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.command=function(){var p=this.rte.selection.getNode();var o=this.rte.dom.selfOrParent(p,/^(TD|TH)$/);var k=a(o).prev("td,th").get(0);var j=a(o).next("td,th").get(0);var g=this.rte.dom.parent(p,/^TABLE$/);var h=this.rte.dom.tableColumn(p,false,true);if(h.length){this.rte.history.add();a.each(h,function(){var r=a(this);var q=parseInt(r.attr("colspan")||1);if(q>1){r.attr("colspan",q-1)}else{r.remove()}});this.rte.dom.fixTable(g);if(k||j){this.rte.selection.selectContents(k?k:j).collapse(true)}this.rte.ui.update(true)}};this.update=function(){if(this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^(TD|TH)$/)){this.domElem.removeClass("disabled")}else{this.domElem.addClass("disabled")}}}})(jQuery);elRTE.prototype.ui.prototype.buttons.tbrowbefore=function(b,a){this.constructor.prototype.constructor.call(this,b,a);this.command=function(){var h=this.rte.selection.getNode();var t=this.rte.dom.selfOrParent(h,/^(TD|TH)$/);var f=this.rte.dom.selfOrParent(t,/^TR$/);var w=this.rte.dom.tableMatrix(this.rte.dom.selfOrParent(t,/^TABLE$/));if(t&&f&&w){this.rte.history.add();var u=this.name=="tbrowbefore";var q=$(f).prevAll("tr").length;var j=0;var p=[];function k(c,r){while(r>0){r--;if(w[r]&&w[r][c]&&w[r][c].nodeName){return w[r][c]}}}for(var o=0;o<w[q].length;o++){if(w[q][o]&&w[q][o].nodeName){var v=$(w[q][o]);var g=parseInt(v.attr("colspan")||1);if(parseInt(v.attr("rowspan")||1)>1){if(u){j+=g}else{p.push(v)}}else{j+=g}}else{if(w[q][o]=="-"){v=k(o,q);v&&p.push($(v))}}}var x=$("<tr />");for(var o=0;o<j;o++){x.append("<td>&nbsp;</td>")}if(u){x.insertBefore(f)}else{x.insertAfter(f)}$.each(p,function(){$(this).attr("rowspan",parseInt($(this).attr("rowspan")||1)+1)});this.rte.ui.update()}};this.update=function(){if(this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^TR$/)){this.domElem.removeClass("disabled")}else{this.domElem.addClass("disabled")}}};elRTE.prototype.ui.prototype.buttons.tbrowafter=elRTE.prototype.ui.prototype.buttons.tbrowbefore;(function(a){elRTE.prototype.ui.prototype.buttons.tbrowrm=function(f,c){this.constructor.prototype.constructor.call(this,f,c);var b=this;this.command=function(){var h=this.rte.selection.getNode(),x=this.rte.dom.selfOrParent(h,/^(TD|TH)$/),g=this.rte.dom.selfOrParent(x,/^TR$/),q=this.rte.dom.selfOrParent(x,/^TABLE$/),A=this.rte.dom.tableMatrix(q);if(x&&g&&A.length){this.rte.history.add();if(A.length==1){a(q).remove();return this.rte.ui.update()}var u=[];var v=a(g).prevAll("tr").length;function p(r,C){while(C>0){C--;if(A[C]&&A[C][r]&&A[C][r].nodeName){return A[C][r]}}}function B(C,r){y=v+1;var E=null;if(A[y]){for(var D=0;D<r;D++){if(A[y][D]&&A[y][D].nodeName){E=A[y][D]}}C=C.remove();if(E){C.insertAfter(E)}else{C.prependTo(a(g).next("tr").eq(0))}}}function o(C){for(var r=0;r<C.length;r++){if(C[r]==x){return r<C.length-1?C[r+1]:C[r-1]}}}for(var t=0;t<A[v].length;t++){var z=null;var j=false;if(A[v][t]&&A[v][t].nodeName){z=A[v][t];j=true}else{if(A[v][t]=="-"&&(z=p(t,v))){j=false}}if(z){z=a(z);var k=parseInt(z.attr("rowspan")||1);if(k>1){z.attr("rowspan",k-1);j&&B(z,t,v)}}}var w=o(this.rte.dom.tableColumn(x));if(w){this.rte.selection.selectContents(w).collapse(true)}a(g).remove()}this.rte.ui.update()};this.update=function(){if(this.rte.dom.selfOrParent(this.rte.selection.getNode(),/^TR$/)){this.domElem.removeClass("disabled")}else{this.domElem.addClass("disabled")}}}})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.undo=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.command=function(){if(this.name=="undo"&&this.rte.history.canBack()){this.rte.history.back();this.rte.ui.update()}else{if(this.name=="redo"&&this.rte.history.canFwd()){this.rte.history.fwd();this.rte.ui.update()}}};this.update=function(){this.domElem.toggleClass("disabled",this.name=="undo"?!this.rte.history.canBack():!this.rte.history.canFwd())}};elRTE.prototype.ui.prototype.buttons.redo=elRTE.prototype.ui.prototype.buttons.undo})(jQuery);(function(a){elRTE.prototype.ui.prototype.buttons.unlink=function(c,b){this.constructor.prototype.constructor.call(this,c,b);this.command=function(){var k=this.rte.selection.getNode(),f=this.rte.dom.selfOrParentLink(k);function j(o){return o.nodeName=="A"&&o.href}if(!f){var h=a.browser.msie?this.rte.selection.selected():this.rte.selection.selected({wrap:false});if(h.length){for(var g=0;g<h.length;g++){if(j(h[g])){f=h[g];break}}if(!f){f=this.rte.dom.parent(h[0],j)||this.rte.dom.parent(h[h.length-1],j)}}}if(f){this.rte.history.add();this.rte.selection.select(f);this.rte.doc.execCommand("unlink",false,null);this.rte.ui.update(true)}};this.update=function(){var f=this.rte.selection.getNode();if(this.rte.dom.selfOrParentLink(f)){this.domElem.removeClass("disabled").addClass("active")}else{if(this.rte.dom.selectionHas(function(g){return g.nodeName=="A"&&g.href})){this.domElem.removeClass("disabled").addClass("active")}else{this.domElem.addClass("disabled").removeClass("active")}}}}})(jQuery);
\ No newline at end of file
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.YOUR_LANG.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.YOUR_LANG.js
new file mode 100644
index 0000000..2f41cc1
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.YOUR_LANG.js
@@ -0,0 +1,211 @@
+/*
+ * WARNING! You this file if you want to make your own translation
+ */
+/*
+ * YOUR_LANGUAGE_TRANSLATION translation
+ * @author NAME <EMAIL>
+ * @version 201x-xx-xx
+ */
+(function($) {
+elRTE.prototype.i18Messages.TWO_LETTER_LANG_CODE = {
+	'Editor' : '',
+	'Source' : '',
+	// panels names
+	'Copy/Pase'      : '',
+	'Undo/Redo'      : '',
+	'Text styles'    : '',
+	'Colors'         : '',
+	'Alignment'      : '',
+	'Indent/Outdent' : '',
+	'Text format'    : '',
+	'Lists'          : '',
+	'Misc elements'  : '',
+	'Links'          : '',
+	'Images'         : '',
+	'Media'          : '',
+	'Tables'         : '',
+	'File manager (elFinder)' : '',
+	// buttons names
+	'About this software'     : '',
+	'Save'                    : '',
+	'Copy'                    : '',
+	'Cut'                     : '',
+	'Paste'                   : '',
+	'Paste only text'         : '',
+	'Paste formatted text'    : '',
+	'Clean format'            : '',
+	'Undo last action'        : '',
+	'Redo previous action'    : '',
+	'Bold'                    : '',
+	'Italic'                  : '',
+	'Underline'               : '',
+	'Strikethrough'           : '',
+	'Superscript'             : '',
+	'Subscript'               : '',
+	'Align left'              : '',
+	'Ailgn right'             : '',
+	'Align center'            : '',
+	'Align full'              : '',
+	'Font color'              : '',
+	'Background color'        : '',
+	'Indent'                  : '',
+	'Outdent'                 : '',
+	'Format'                  : '',
+	'Font size'               : '',
+	'Font'                    : '',
+	'Ordered list'            : '',
+	'Unordered list'          : '',
+	'Horizontal rule'         : '',
+	'Blockquote'              : '',
+	'Block element (DIV)'     : '',
+	'Link'                    : '',
+	'Delete link'             : '',
+	'Bookmark'                : '',
+	'Image'                   : '',
+	'Table'                   : '',
+	'Delete table'            : '',
+	'Insert row before'       : '',
+	'Insert row after'        : '',
+	'Delete row'              : '',
+	'Insert column before'    : '',
+	'Insert column after'     : '',
+	'Delete column'           : '',
+	'Merge table cells'       : '',
+	'Split table cell'        : '',
+	'Toggle display document structure' : '',
+	'Table cell properties'   : '',
+	'Table properties'        : '',
+	'Toggle full screen mode' : '',
+	'Open file manager'       : '',
+	'Non breakable space'     : '',
+	'Stop element floating'   : '',
+	// dialogs
+	'Warning'          : '',
+	'Properies'        : '',
+	'Popup'            : '',
+	'Advanced'         : '',
+	'Events'           : '',
+	'Width'            : '',
+	'Height'           : '',
+	'Left'             : '',
+	'Center'           : '',
+	'Right'            : '',
+	'Border'           : '',
+	'Background'       : '',
+	'Css class'        : '',
+	'Css style'        : '',
+	'No'               : '',
+	'Title'            : '',
+	'Script direction' : '',
+	'Language'         : '',
+	'Charset'          : '',
+	'Not set'          : '',
+	'Left to right'    : '',
+	'Right to left'    : '',
+	'In this window'   : '',
+	'In new window (_blank)'         : '',
+	'In new parent window (_parent)' : '',
+	'In top frame (_top)'            : '',
+	'URL'              : '',
+	'Open in'          : '',
+	'Open file manger' : '',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : '',
+	// format
+	'Heading 1'     : '',
+	'Heading 2'     : '',
+	'Heading 3'     : '',
+	'Heading 4'     : '',
+	'Heading 5'     : '',
+	'Heading 6'     : '',
+	'Paragraph'     : '',
+	'Address'       : '',
+	'Preformatted'  : '',
+	// font size
+	'Small (8pt)'   : '',
+	'Small (10px)'  : '',
+	'Small (12pt)'  : '',
+	'Normal (14pt)' : '',
+	'Large (18pt)'  : '',
+	'Large (24pt)'  : '',
+	'Large (36pt)'  : '',
+	// bookmark
+	'Bookmark name' : '',
+	// link
+	'Link URL'         : '',
+	'Target'           : '',
+	'Select bookmark'  : '',
+	'Open link in popup window' : '',
+	'Window name'      : '',
+	'Window size'      : '',
+	'Window position'  : '',
+	'Location bar'     : '',
+	'Menu bar'         : '',
+	'Toolbar'          : '',
+	'Scrollbars'       : '',
+	'Status bar'       : '',
+	'Resizable'        : '',
+	'Depedent'         : '',
+	'Add return false' : '',
+	'Target MIME type' : '',
+	'Relationship page to target (rel)' : '',
+	'Relationship target to page (rev)' : '',
+	'Tab index'        : '',
+	'Access key'       : '',
+	// image
+	'Size'             : '',
+	'Preview'          : '',
+	'Margins'          : '',
+	'Alt text'         : '',
+	'Image URL'        : '',
+	// table
+	'Spacing'          : '',
+	'Padding'          : '',
+	'Rows'             : '',
+	'Columns'          : '',
+	'Groups'           : '',
+	'Cells'            : '',
+	'Caption'          : '',
+	'Inner borders'    : '',
+	// table cell
+	'Table cell type'  : '',
+	'Data'             : '',
+	'Header'           : '',
+	'Justify'          : '',
+	'Paddings'         : '',
+	'Apply to'         : '',
+	'Current cell'     : '',
+	'All cells in row' : '',
+	'All cells in column' : '',
+	'All cells in table' : '',
+	// about
+	'About elRTE'                  : '',
+	'Version'                      : '',
+	'Licence'                      : '',
+	'elRTE is an open-source JavaScript based WYSIWYG HTML-editor.' : '',
+	'Main goal of the editor - simplify work with text and formating (HTML) on sites, blogs, forums and other online services.' : '',
+	'You can use it in any commercial or non-commercial projects.' : '',
+	'Authors'                      : '',
+	'Chief developer'              : '',
+	'Developer, tech support'      : '',
+	'Developer'                    : '',
+	'Interface designer'           : '',
+	'Spanish localization'         : '',
+	'Czech localization'           : '',
+	'Japanese localization'        : '',
+	'Latvian localization'         : '',
+	'German localization'          : '',
+	'Ukranian localization'        : '',
+	'Persian (farsi) localization' : '',
+	'Arabic localization'          : '',
+	'RTL support'                  : '',
+	'French localization'          : '',
+	'Dutch localization'           : '',
+	'Hungarian localization'       : '',
+	'Polish localization'          : '',
+	'Italian localization'         : '',
+	'Traditional Chinese localization' : '',
+	'For more information about this software visit the' : '',
+	'elRTE website'                : 'на сайте elRTE'
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ar.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ar.js
new file mode 100644
index 0000000..85d9e4b
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ar.js
@@ -0,0 +1,195 @@
+/**
+ * Arabic translation
+ * @author tawfek daghistani <tawfekov@gmail.com>
+ * @version 2010-09-18
+ */
+(function($) {
+elRTE.prototype.i18Messages.ar = {
+	'Editor' : 'المحرر',
+	'Source' : 'المصدر',
+	// Panel Name
+	'Copy/Pase'      : 'نسخ/لصق',
+	'Undo/Redo'      : 'تراجع/تكرار',
+	'Text styles'    : 'تنسيق النص',
+	'Colors'         : 'الألوان',
+	'Alignment'      : 'المحاذاة',
+	'Indent/Outdent' : 'مسافة بادئة / مسافة خاتمة',
+	'Indent/Outdent' : '',
+	'Text format'    : 'التنسيق',
+	'Lists'          : 'قوائم',
+	'Misc elements'  : 'عناصر متنوعة',
+	'Links'          : 'رابط تشعبي',
+	'Images'         : 'صورة',
+	'Media'          : 'عنصر صوت أو فيديو',
+	'Tables'         : 'جدول',
+	'File manager (elFinder)' : 'مستكشف الملفات',
+	// button names
+	'Save'                    : 'حفظ',
+	'Copy'                    : 'نسخ',
+	'Cut'                     : 'قص',
+	'Paste'                   : 'لصق',
+	'Paste only text'         : 'لصق النصوص فقط',
+	'Paste formatted text'    : 'لصق النصوص المنسقة',
+	'Clean format'            : 'إزالة التنسيقات',
+	'Undo last action'        : 'التراجع عن أخر فعل',
+	'Redo previous action'    : 'تكرار أخر فعل ',
+	'Bold'                    : 'عريض',
+	'Italic'                  : 'مائل',
+	'Underline'               : 'تحته خط',
+	'Strikethrough'           : 'يتوسطه خط',
+	'Superscript'             : 'يعلوه خط',
+	'Subscript'               : 'تحته خط',
+	'Align left'              : 'محاذاة إلى اليسار',
+	'Ailgn right'             : 'محاذاة إلى اليمين ',
+	'Align center'            : 'محاذاة إلى المنتصف',
+	'Align full'              : 'محاذاة بعرض الصفحة',
+	'Font color'              : 'لون الخط',
+	'Background color'        : 'لون الخلفية',
+	'Indent'                  : 'مسافة بادئة',
+	'Outdent'                 : 'مسافة خاتمة',
+	'Underline'               : '',
+	'Strikethrough'           : '',
+	'Superscript'             : '',
+	'Subscript'               : '',
+	'Align left'              : 'محاذاة إلى اليسار',
+	'Ailgn right'             : 'محاذاة إلى اليمين ',
+	'Align center'            : 'محاذاة إل المنتصف',
+	'Align full'              : '',
+	'Font color'              : 'لون الخط',
+	'Background color'        : 'لون الخلفية',
+	'Indent'                  : '',
+	'Outdent'                 : '',
+	'Format'                  : 'النتسيق',
+	'Font size'               : 'قياس الخط',
+	'Font'                    : 'الخط',
+	'Ordered list'            : 'فائمة مرقمة',
+	'Unordered list'          : 'قائمة مرتبة',
+	'Horizontal rule'         : 'خط افقي',
+	'Blockquote'              : 'اقتباس',
+	'Block element (DIV)'     : 'اقتباس (DIV)',
+	'Link'                    : 'رابط',
+	'Delete link'             : 'حذف الرابط',
+	'Bookmark'                : 'حفظ كعلامة',
+	'Image'                   : 'صورة',
+	'Table'                   : 'جدول',
+	'Delete table'            : 'حذف الجدول',
+	'Insert row before'       : 'إدراج الصف قبل ',
+	'Insert row after'        : 'إدراج الصف بعده',
+	'Delete row'              : 'حذف الصف',
+	'Insert column before'    : 'إدراج عمود قبل ',
+	'Insert column after'     : 'إدراج عمود بعد ',
+	'Delete column'           : 'حذف العمود',
+	'Merge table cells'       : 'دمج الخلايا',
+	'Split table cell'        : 'تقسيم الخلية',
+	'Toggle display document structure' : 'إخفاء/ إظهار ',
+	'Table cell properties'   : 'خصائص الخلايا',
+	'Table properties'        : 'خصائص الجدول',
+	'Toggle full screen mode' : 'عرض بكامل الشاشة',
+	'Open file manager'       : 'افتح مستكشف الملفات',
+	'Non breakable space'     : '',
+	'Stop element floating'   : '',
+	// dialogs
+	'Warning' : 'تنبيه',
+	'Properies' : 'خصائص',
+	'Popup' : 'نافذة منبئقة',
+	'Advanced' : 'متقدم',
+	'Events' : 'الأحداث',
+	'Popup' : '',
+	'Advanced' : '',
+	'Events' : '',
+	'Width' : 'العرض',
+	'Height' : 'الارتفاع',
+	'Left'   : 'اليسار',
+	'Center' : 'المنتصف',
+	'Right'  : 'اليمين',
+	'Border' : 'حدود',
+	'Background' : 'الخلفية',
+	'Css class' : 'Css نمط',
+	'Css style' : 'Css تنسيق',
+	'Border' : '',
+	'Background' : '',
+	'Css class' : '',
+	'Css style' : '',
+	'No' : 'لا',
+	'Title' : 'العنوان',
+	'Script direction' : 'اتجاه النص',
+	'Language' : 'اللغة',
+	'Charset' : 'الترميز',
+	'Not set' : 'غير محدد',
+	'Left to right' : 'من اليسار إلى اليمين',
+	'Right to left' : 'من اليمين إلى اليسار',
+	'In this window' : '(_self)',
+	'In new window (_blank)' : '(_blank)',
+	'In new parent window (_parent)' : '(_parent)',
+	'In top frame (_top)' : '(_top)',
+	'URL' : '',
+	'Open in' : '',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'هذه العملية معطلة لأسباب أمنية , استخدم الاختصار بدلاً عنها',
+	// format
+	'Heading 1' : 'عنوان رئيسي 1',
+	'Heading 2' : 'عنوان رئيسي 2',
+	'Heading 3' : 'عنوان رئيسي 3',
+	'Heading 4' : 'عنوان رئيسي 4',
+	'Heading 5' : 'عنوان رئيسي 5',
+	'Heading 6' : 'عنوان رئيسي 6',
+	'Paragraph' : 'مقطع نصي ',
+	'Address' : 'العنوان',
+	'Preformatted' : '',
+	// font size
+	'Small (8pt)'   : '',
+	'Small (10px)'  : '',
+	'Small (12pt)'  : '',
+	'Normal (14pt)' : '',
+	'Large (18pt)'  : '',
+	'Large (24pt)'  : '',
+	'Large (36pt)'  : '',
+	// bookmark
+	'Bookmark name' : 'اسم العلامة',
+	// link
+	'Link URL' : '(ارتباط)',
+	'Target' : 'الهدف',
+	'Open link in popup window' : 'افتح في نافذة صغيرة',
+	'URL' : 'ارتباط',
+	'Window name' : 'اسم النافذة',
+	'Window size' : 'حجم النافذة',
+	'Window position' : 'الموضع',
+	'Location bar' : 'العنوان',
+	'Menu bar' : 'شريط القوائم',
+	'Toolbar' : 'قائمة الأدوات',
+	'Scrollbars' : 'شريط التمرير',
+	'Status bar' : 'شريط المعلومات',
+	'Resizable' : 'متغير الحجم',
+	'Depedent' : '',
+	'Add return false' : 'إضافة (return false)',
+	'Menu bar' : '',
+	'Toolbar' : 'قائمة الأدوات',
+	'Scrollbars' : '',
+	'Status bar' : '',
+	'Resizable' : 'متغير الحجم',
+	'Depedent' : '',
+	'Add return false' : '',
+	'Target MIME type' : 'MIME type',
+	'Relationship page to target (rel)' : '',
+	'Relationship target to page (rev)' : '',
+	'Tab index' : '',
+	'Access key' : 'زر اختصار',
+	// image
+	'Size' : 'الحجم',
+	'Preview' : 'معاينة',
+	'Margins' : '',
+	'Alt text' : 'نص بديل',
+	'Image URL' : 'رابط صورة',
+	// table
+	'Spacing'       : 'مسافات (spacing)',
+	'Padding'       : 'الهامش (padding)',
+	'Spacing'       : '',
+	'Padding'       : '',
+	'Rows'          : 'الصفوف',
+	'Columns'       : 'الأعمدة',
+	'Groups'        : 'المجموعات',
+	'Cells'         : 'خلايا',
+	'Caption'       : 'العنوان',
+	'Inner borders' : 'حدود داخلية'
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.cs.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.cs.js
new file mode 100644
index 0000000..4a774b7
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.cs.js
@@ -0,0 +1,169 @@
+/*
+ * Czech translation
+ * @author Michal Marek <mich.marek@gmail.com>
+ * @version 2010-09-19
+ */
+(function($) {
+elRTE.prototype.i18Messages.cs = {
+	'Editor' : 'Editor',
+	'Source' : 'Kód',
+	// Panel Name
+	'Copy/Pase'      : 'Kopírovat/Vložit',
+	'Undo/Redo'      : 'Zpět/Znovu',
+	'Text styles'    : 'Styly',
+	'Colors'         : 'Barvy',
+	'Alignment'      : 'Zarovnání',
+	'Indent/Outdent' : 'Odsadit / Předsadit',
+	'Text format'    : 'Formát',
+	'Lists'          : 'Seznamy',
+	'Misc elements'  : 'Ostatní elementy',
+	'Links'          : 'Odkazy',
+	'Images'         : 'Obrázky',
+	'Media'          : 'Média',
+	'Tables'         : 'Tabulky',
+	'File manager (elFinder)' : 'Správce souborů (elFinder)',
+	'elfinder' : 'Správce souborů',
+	// button names
+	'Save'                    : 'Uložit',
+	'Copy'                    : 'Kopírovat',
+	'Cut'                     : 'Vyjmout',
+	'Paste'                   : 'Vložit',
+	'Paste only text'         : 'Vložit pouze text',
+	'Paste formatted text'    : 'Vložit formátovaný text',
+	'Clean format'            : 'Vyčistit',
+	'Undo last action'        : 'Zpět',
+	'Redo previous action'    : 'Znovu',
+	'Bold'                    : 'Tučné',
+	'Italic'                  : 'Kurzíva',
+	'Underline'               : 'Podtržené',
+	'Strikethrough'           : 'Škrtnuté',
+	'Superscript'             : 'Horní index',
+	'Subscript'               : 'Dolní index',
+	'Align left'              : 'Zarovnat vlevo',
+	'Ailgn right'             : 'Zarovna vpravo',
+	'Align center'            : 'Zarovnat na střed',
+	'Align full'              : 'Do bloku',
+	'Font color'              : 'Barva písma',
+	'Background color'        : 'Barva pozadí',
+	'Indent'                  : 'Odsadit',
+	'Outdent'                 : 'Předsadit',
+	'Format'                  : 'Formát',
+	'Font size'               : 'Velikost',
+	'Font'                    : 'Písmo',
+	'Ordered list'            : 'Číslovaný seznam',
+	'Unordered list'          : 'Seznam',
+	'Horizontal rule'         : 'Vodorovná čára',
+	'Blockquote'              : 'Citát',
+	'Block element (DIV)'     : 'DIV element',
+	'Link'                    : 'Odkaz',
+	'Delete link'             : 'Odstranit odkaz',
+	'Bookmark'                : 'Záložka',
+	'Image'                   : 'Obrázek',
+	'Table'                   : 'Tabulka',
+	'Delete table'            : 'Smazat tabulku',
+	'Insert row before'       : 'Vložit řádek nad',
+	'Insert row after'        : 'Vložit řádek pod',
+	'Delete row'              : 'Smazat řádek',
+	'Insert column before'    : 'Vložit sloupec před',
+	'Insert column after'     : 'Vložit sloupec za',
+	'Delete column'           : 'Smazat sloupec',
+	'Merge table cells'       : 'Sloučit buňky',
+	'Split table cell'        : 'Rozdělit buňku',
+	'Toggle display document structure' : 'Zobrazit strukturu',
+	'Table cell properties'   : 'Vlastnosti buňky',
+	'Table properties'        : 'Vlastnosti tabulky',
+	'Toggle full screen mode' : 'Fullscreen',
+	'Open file manager'       : 'Otevřít správce souborů',
+	'Non breakable space'     : 'Nedělitelná mezera',
+	'Stop element floating'   : 'Zrušit obtékání elementu',
+	// dialogs
+	'Warning' : 'Pozor',
+	'Properies' : 'Vlastnosti',
+	'Popup' : 'Pop-up',
+	'Advanced' : 'Více',
+	'Events' : 'Události',
+	'Width' : 'Šířka',
+	'Height' : 'Výška',
+	'Left'   : 'Vlevo',
+	'Center' : 'Na střed',
+	'Right'  : 'Vpravo',
+	'Border' : 'Rámeček',
+	'Background' : 'Pozadí',
+	'Css class' : 'CSS třída',
+	'Css style' : 'CSS styl',
+	'No' : 'Ne',
+	'Title' : 'Titulek',
+	'Script direction' : 'Pravidla scriptu',
+	'Language' : 'Jazyk',
+	'Charset' : 'Znaková sada',
+	'Not set' : 'Nenastaveno',
+	'Left to right' : 'Zleva doprava',
+	'Right to left' : 'Zprava doleva',
+	'In this window' : 'V tomto okně (_self)',
+	'In new window (_blank)' : 'V novém okně (_blank)',
+	'In new parent window (_parent)' : 'V novém rodičovském okně (_parent)',
+	'In top frame (_top)' : 'V hlavním okně (_top)',
+	'URL' : 'URL',
+	'Open in' : 'Otevřít v',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'Tato operace je ve vašem prohlížeči vypnutá kvůli bezpečnosti. Použijte klávesovou zkratku.',
+	// format
+	'Heading 1' : 'Nadpis 1',
+	'Heading 2' : 'Nadpis 2',
+	'Heading 3' : 'Nadpis 3',
+	'Heading 4' : 'Nadpis 4',
+	'Heading 5' : 'Nadpis 5',
+	'Heading 6' : 'Nadpis 6',
+	'Paragraph' : 'Odstavec',
+	'Address' : 'Adresa',
+	'Preformatted' : 'Předformátováno',
+	// font size
+	'Small (8pt)'   : 'Malé (8 pt)',
+	'Small (10px)'  : 'Malé (10 pt)',
+	'Small (12pt)'  : 'Malé (12 pt)',
+	'Normal (14pt)' : 'Normální (14 pt)',
+	'Large (18pt)'  : 'Velké (18 pt)',
+	'Large (24pt)'  : 'Velké (24 pt)',
+	'Large (36pt)'  : 'Velké (36 pt)',
+	// bookmark
+	'Bookmark name' : 'Jméno záložky',
+	// link
+	'Link URL' : 'URL',
+	'Target' : 'Cíl',
+	'Open link in popup window' : 'Otevírat odkaz v popup okně.',
+	'URL' : 'URL',
+	'Window name' : 'Jméno okna',
+	'Window size' : 'Velikost okna',
+	'Window position' : 'Pozice okna',
+	'Location bar' : 'Adresní řádek',
+	'Menu bar' : 'Menu nabídek',
+	'Toolbar' : 'Lišta nástrojů',
+	'Scrollbars' : 'Posuvníky',
+	'Status bar' : 'Stavový řádek',
+	'Resizable' : 'Změna velikosti',
+	'Depedent' : '',
+	'Add return false' : 'Přidat return false',
+	'Target MIME type' : 'Cílový MIME typ',
+	'Relationship page to target (rel)' : '',
+	'Relationship target to page (rev)' : '',
+	'Tab index' : '',
+	'Access key' : '',
+	// image
+	'Size' : 'Velikost',
+	'Preview' : 'Náhled',
+	'Margins' : 'Okraje',
+	'Alt text' : 'Alternativní text',
+	'Image URL' : 'URL',
+	// table
+	'Spacing'       : 'Vnější okraje',
+	'Padding'       : 'Vnitřní okraje',
+	'Rows'          : 'Řádky',
+	'Columns'       : 'Sloupce',
+	'Groups'        : 'Skupiny',
+	'Cells'         : 'Buňky',
+	'Caption'       : 'Popisek',
+	'Inner borders' : 'Vnitřní rámečky'
+
+
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.de.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.de.js
new file mode 100644
index 0000000..0534fee
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.de.js
@@ -0,0 +1,168 @@
+/*
+ * German translation
+ * @author Vasiliy Razumnyh <rvn@std42.ru>
+ * @version 2010-09-18
+ */
+(function($) {
+elRTE.prototype.i18Messages.de = {
+	'Editor' : 'Editor',
+	'Source' : 'Quellcode',
+	// Panel Name
+	'Copy/Pase'      : 'Kopieren/Einfügen',
+	'Undo/Redo'      : 'Rückgängig/Wiederherstellen',
+	'Text styles'    : 'Textstile',
+	'Colors'         : 'Farbe',
+	'Alignment'      : 'Alignment',
+	'Indent/Outdent' : 'Einrücken / Ausrücken',
+	'Text format'    : 'Format',
+	'Lists'          : 'Listen',
+	'Misc elements'  : 'Sonstige elemente',
+	'Links'          : 'Link',
+	'Images'         : 'Bild',
+	'Media'          : 'Media datei',
+	'Tables'         : 'Tabelle',
+	'File manager (elFinder)' : 'Datei-Manager (elFinder)',
+	// button names
+	'Save'                    : 'Speichern',
+	'Copy'                    : 'Ausschneiden',
+	'Cut'                     : 'Kopieren',
+	'Paste'                   : 'Einfügen',
+	'Paste only text'         : 'Fügen sie nur text',
+	'Paste formatted text'    : 'Fügen sie formatierten text',
+	'Clean format'            : 'Formatierungen entfernen',
+	'Undo last action'        : 'Rückgängig',
+	'Redo previous action'    : 'Wiederherstellen',
+	'Bold'                    : 'Fett',
+	'Italic'                  : 'Kursiv',
+	'Underline'               : 'Unterstrichen',
+	'Strikethrough'           : 'Durchgestrichen',
+	'Superscript'             : 'Hochgestellt',
+	'Subscript'               : 'Tiefgestellt',
+	'Align left'              : 'Linksbündig',
+	'Ailgn right'             : 'Rechtsbündig',
+	'Align center'            : 'Zentriert',
+	'Align full'              : 'Blocksatz',
+	'Font color'              : 'Textfarbe',
+	'Background color'        : 'Hintergrundfarbe',
+	'Indent'                  : 'Einzug erhöhen',
+	'Outdent'                 : 'Einzug verringern',
+	'Format'                  : 'Format',
+	'Font size'               : 'Größe',
+	'Font'                    : 'Schriftart',
+	'Ordered list'            : 'Nummerierte Liste',
+	'Unordered list'          : 'Liste',
+	'Horizontal rule'         : 'Horizontale Linie',
+	'Blockquote'              : 'Zitatblock',
+	'Block element (DIV)'     : 'Block-Element (DIV)',
+	'Link'                    : 'Link',
+	'Delete link'             : 'Link entfernen',
+	'Bookmark'                : 'Anker einfügen/editieren',
+	'Image'                   : 'Bild',
+	'Table'                   : 'Tabelle',
+	'Delete table'            : 'Tabelle löschen',
+	'Insert row before'       : 'Zeile oberhalb einfügen',
+	'Insert row after'        : 'Zeile unterhalb einfügen',
+	'Delete row'              : 'Zeile entfernen',
+	'Insert column before'    : 'Spalte links davor einfügen',
+	'Insert column after'     : 'Spalte rechts danach einfügen',
+	'Delete column'           : 'Spalte löschen',
+	'Merge table cells'       : 'Zellen verbinden',
+	'Split table cell'        : 'Zelle teilen',
+	'Toggle display document structure' : 'Blöcke anzeigen',
+	'Table cell properties'   : 'Zellen-Eigenschaften',
+	'Table properties'        : 'Tabellen-Eigenschaften',
+	'Toggle full screen mode' : 'Editor maximieren',
+	'Open file manager'       : 'Server',
+	'Non breakable space'     : 'Non-breaking space',
+	'Stop element floating'   : 'Deaktivieren Sie flow-Element Text',
+	// dialogs
+	'Warning' : 'ACHTUNG',
+	'Properies' : 'Properies',
+	'Popup' : 'Pop-up',
+	'Advanced' : 'mehr',
+	'Events' : 'Veranstaltungen',
+	'Width' : 'Breite',
+	'Height' : 'Höhe',
+	'Left'   : 'Links',
+	'Center' : 'Zentrum',
+	'Right'  : 'Rechts',
+	'Border' : 'Rahmen',
+	'Background' : 'Hintergrundfarbe',
+	'Css class' : 'Css class',
+	'Css style' : 'Css style',
+	'No' : 'Nein',
+	'Title' : 'Titel',
+	'Script direction' : 'Richtung Schreiben',
+	'Language' : 'Sprache',
+	'Charset' : 'Charset',
+	'Not set' : 'nicht',
+	'Left to right' : 'Links nach Rechts',
+	'Right to left' : 'Rechts nach Links',
+	'In this window' : 'Gleiches Fenster (_self)',
+	'In new window (_blank)' : 'Neues Fenster (_blank)',
+	'In new parent window (_parent)' : 'Oberes Fenster (_parent)',
+	'In top frame (_top)' : 'Oberstes Fenster (_top)',
+	'URL' : '',
+	'Open in' : '',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'Dieser Vorgang ist in Ihrem Browser aus Sicherheitsgründen deaktiviert. Tastenkombination statt.',
+	// format
+	'Heading 1' : 'Überschrift 1',
+	'Heading 2' : 'Überschrift 2',
+	'Heading 3' : 'Überschrift 3',
+	'Heading 4' : 'Überschrift 4',
+	'Heading 5' : 'Überschrift 5',
+	'Heading 6' : 'Überschrift 6',
+	'Paragraph' : 'Formatiert',
+	'Address' : 'Addresse',
+	'Preformatted' : '',
+	// font size
+	'Small (8pt)'   : '',
+	'Small (10px)'  : '',
+	'Small (12pt)'  : '',
+	'Normal (14pt)' : '',
+	'Large (18pt)'  : '',
+	'Large (24pt)'  : '',
+	'Large (36pt)'  : '',
+	// bookmark
+	'Bookmark name' : 'Anker Name',
+	// link
+	'Link URL' : '(URL)',
+	'Target' : 'Zielseite',
+	'Open link in popup window' : 'Link in einem Popup-Fenster',
+	'URL' : '',
+	'Window name' : 'Pop-up Fenster-Name',
+	'Window size' : 'Größe',
+	'Window position' : 'Position',
+	'Location bar' : 'Adress-Leiste',
+	'Menu bar' : 'Menü-Leiste',
+	'Toolbar' : 'Werkzeugleiste',
+	'Scrollbars' : 'Rollbalken',
+	'Status bar' : 'Statusleiste',
+	'Resizable' : 'Vergrößerbar',
+	'Depedent' : 'Abhängig (Netscape)',
+	'Add return false' : 'add (return false)',
+	'Target MIME type' : 'MIME type',
+	'Relationship page to target (rel)' : '',
+	'Relationship target to page (rev)' : '',
+	'Tab index' : '',
+	'Access key' : 'Zugriffstaste',
+	// image
+	'Size' : 'Größe',
+	'Preview' : 'Vorschau',
+	'Margins' : '',
+	'Alt text' : 'Alt',
+	'Image URL' : 'URL',
+	// table
+	'Spacing'       : 'Abstand (spacing)',
+	'Padding'       : 'Abstand (padding)',
+	'Rows'          : 'Zeile',
+	'Columns'       : 'Spalte',
+	'Groups'        : 'Gruppen',
+	'Cells'         : 'Zellen',
+	'Caption'       : 'Tabellen-Eigenschaften',
+	'Inner borders' : 'Innere Grenzen'
+
+
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.es.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.es.js
new file mode 100644
index 0000000..b14e59d
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.es.js
@@ -0,0 +1,167 @@
+/**
+ * Spanish translation
+ * @author Ricardo Obregón <robregonm@gmail.com>
+ * @version 2010-09-18
+ */
+(function($) {
+elRTE.prototype.i18Messages.es = {
+	'Editor' : 'Editor',
+	'Source' : 'Código Fuente',
+	// Panel Name
+	'Copy/Pase'      : 'Copiar/Pegar',
+	'Undo/Redo'      : 'Deshacer/Rehacer',
+	'Text styles'    : 'Estilos de Texto',
+	'Colors'         : 'Colores',
+	'Alignment'      : 'Alineación',
+	'Indent/Outdent' : 'Aumentar/Disminuir Sangría',
+	'Text format'    : 'Formato de texto',
+	'Lists'          : 'Listas',
+	'Misc elements'  : 'Elementos varios',
+	'Links'          : 'Vínculos',
+	'Images'         : 'Imágenes',
+	'Media'          : 'Multimedia',
+	'Tables'         : 'Tablas',
+	'File manager (elFinder)' : 'Administrador de archivos',
+	// button names
+	'Save'                    : 'Guardar',
+	'Copy'                    : 'Copiar',
+	'Cut'                     : 'Cortar',
+	'Paste'                   : 'Pegar',
+	'Paste only text'         : 'Pegar solo texto',
+	'Paste formatted text'    : 'Pegar texto formateado',
+	'Clean format'            : 'Limpiar formato',
+	'Undo last action'        : 'Deshacer la última acción',
+	'Redo previous action'    : 'Rehacer la última acción',
+	'Bold'                    : 'Negrita',
+	'Italic'                  : 'Cursiva',
+	'Underline'               : 'Subrayado',
+	'Strikethrough'           : 'Tachado',
+	'Superscript'             : 'Superíndice',
+	'Subscript'               : 'Subíndice',
+	'Align left'              : 'Alinear a la izquierda',
+	'Ailgn right'             : 'Alinear a la derecha',
+	'Align center'            : 'Centrar',
+	'Align full'              : 'Justificado',
+	'Font color'              : 'Color de texto',
+	'Background color'        : 'Color de fondo',
+	'Indent'                  : 'Aumentar sangría',
+	'Outdent'                 : 'Reducir sangría',
+	'Format'                  : 'Formato',
+	'Font size'               : 'Tamaño de letra',
+	'Font'                    : 'Fuente',
+	'Ordered list'            : 'Lista ordenada',
+	'Unordered list'          : 'Lista desordenada',
+	'Horizontal rule'         : 'Línea horizontal',
+	'Blockquote'              : 'Cita',
+	'Block element (DIV)'     : 'Bloque de Elementos (DIV)',
+	'Link'                    : 'Vínculo',
+	'Delete link'             : 'Eliminar vínculo',
+	'Bookmark'                : 'Marcador',
+	'Image'                   : 'Imagen',
+	'Table'                   : 'Tabla',
+	'Delete table'            : 'Eliminar tabla',
+	'Insert row before'       : 'Insertar fila antes',
+	'Insert row after'        : 'Insertar fila después',
+	'Delete row'              : 'Eliminar fila',
+	'Insert column before'    : 'Insertar columna antes',
+	'Insert column after'     : 'Insertar columna después',
+	'Delete column'           : 'Eliminar columna',
+	'Merge table cells'       : 'Fundir celdas',
+	'Split table cell'        : 'Dividir celda',
+	'Toggle display document structure' : 'Pantalla de estructura de documento',
+	'Table cell properties'   : 'Propiedades de celda',
+	'Table properties'        : 'Propiedades de tabla',
+	'Toggle full screen mode' : 'Modo de pantalla completa',
+	'Open file manager'       : 'Abrir administrador de archivos',
+	'Non breakable space'     : 'Espacio indivisible',
+	'Stop element floating'   : 'Detener elemento flotante',
+	// dialogs
+	'Warning' : 'Advertencia',
+	'Properies' : 'Propiedades',
+	'Popup' : 'Ventana emergente',
+	'Advanced' : 'Avanzado',
+	'Events' : 'Eventos',
+	'Width' : 'Ancho',
+	'Height' : 'Alto',
+	'Left'   : 'Izquierda',
+	'Center' : 'Centrado',
+	'Right'  : 'Derecha',
+	'Border' : 'Borde',
+	'Background' : 'Fondo',
+	'Css class' : 'Clase CSS',
+	'Css style' : 'Estilo CSS',
+	'No' : 'No',
+	'Title' : 'Título',
+	'Script direction' : 'Dirección del script',
+	'Language' : 'Idioma',
+	'Charset' : 'Charset',
+	'Not set' : 'No establecido',
+	'Left to right' : 'Izquierda a derecha',
+	'Right to left' : 'Derecha a izquierda',
+	'In this window' : 'En esta ventana (_self)',
+	'In new window (_blank)' : 'En nueva ventana (_blank)',
+	'In new parent window (_parent)' : 'En nueva ventana padre (_parent)',
+	'In top frame (_top)' : 'En marco superior (_top)',
+	'URL' : 'URL',
+	'Open in' : 'Abrir en',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'Esta operación está desactivada en su navegador por razones de seguridad. Utilice en su lugar un comando de teclado.',
+	// format
+	'Heading 1' : 'Encabezado 1',
+	'Heading 2' : 'Encabezado 2',
+	'Heading 3' : 'Encabezado 3',
+	'Heading 4' : 'Encabezado 4',
+	'Heading 5' : 'Encabezado 5',
+	'Heading 6' : 'Encabezado 6',
+	'Paragraph' : 'Párrafo',
+	'Address' : 'Dirección',
+	'Preformatted' : 'Preformateado',
+	// font size
+	'Small (8pt)'   : 'Pequeño (8pt)',
+	'Small (10px)'  : 'Pequeño (10px)',
+	'Small (12pt)'  : 'Pequeño (12pt)',
+	'Normal (14pt)' : 'Normal (14pt)',
+	'Large (18pt)'  : 'Grande (18pt)',
+	'Large (24pt)'  : 'Grande (24pt)',
+	'Large (36pt)'  : 'Grande (36pt)',
+	// bookmark
+	'Bookmark name' : 'Nombre del marcador',
+	// link
+	'Link URL' : 'URL del vínculo',
+	'Target' : 'Objetivo',
+	'Open link in popup window' : 'Abrir vínculo en ventana emergente',
+	'Window name' : 'Nombre de la ventana',
+	'Window size' : 'Tamaño de la ventana',
+	'Window position' : 'Posición de la ventana',
+	'Location bar' : 'Barra de dirección',
+	'Menu bar' : 'Barra de Menú',
+	'Toolbar' : 'Barra de herramientas',
+	'Scrollbars' : 'Barras de desplazamiento',
+	'Status bar' : 'Barra de estado',
+	'Resizable' : 'Redimensionable',
+	'Depedent' : 'Dependiente (Netscape)',
+	'Add return false' : 'Agregar (return false)',
+	'Target MIME type' : 'Objetivo de Tipo MIME',
+	'Relationship page to target (rel)' : '',
+	'Relationship target to page (rev)' : '',
+	'Tab index' : '',
+	'Access key' : 'Tecla de acceso',
+	// image
+	'Size' : 'Tamaño',
+	'Preview' : 'Previsualización',
+	'Margins' : 'Márgenes',
+	'Alt text' : 'Texto alternativo',
+	'Image URL' : 'URL de la imagen',
+	// table
+	'Spacing'       : 'Espaciado (Spacing)',
+	'Padding'       : 'Relleno (Padding)',
+	'Rows'          : 'Filas',
+	'Columns'       : 'Columnas',
+	'Groups'        : 'Grupos',
+	'Cells'         : 'Celdas',
+	'Caption'       : 'Leyenda',
+	'Inner borders' : 'Bordes internos'
+
+
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.fa.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.fa.js
new file mode 100644
index 0000000..71a8a7e
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.fa.js
@@ -0,0 +1,168 @@
+/**
+ * Persian translation
+ * @author Saleh soozanchi <info@soozanchi.ir>
+ * @version 2010-09-18
+ */
+(function($) {
+elRTE.prototype.i18Messages.fa = {
+	'Editor' : 'ویراستار',
+	'Source' : 'کد منبع',
+	// Panel Name
+	'Copy/Pase'      : 'کپی در حافظه موفت/بازگردانی از حافظه',
+	'Undo/Redo'      : 'انجام عمل بعد/برگشت به عمل قبل',
+	'Text styles'    : 'استایل متن',
+	'Colors'         : 'رنگها',
+	'Alignment'      : 'صفحه بندی',
+	'Indent/Outdent' : 'تو رفتگی/ برون رفتگی',
+	'Text format'    : 'قالب متون',
+	'Lists'          : 'لیست ها',
+	'Misc elements'  : 'عناصر متفرقه',
+	'Links'          : 'پیوندها',
+	'Images'         : 'تصاویر',
+	'Media'          : 'مولتی مدیا',
+	'Tables'         : 'جدول ها',
+	'File manager (elFinder)' : '(elFinder)مدیریت فایل',
+	// button names
+	'Save'                    : 'ذخیره کردن',
+	'Copy'                    : 'کپی کردن',
+	'Cut'                     : 'برش دادن',
+	'Paste'                   : 'بازگردانی',
+	'Paste only text'         : 'بازگرادنی فقط متنها',
+	'Paste formatted text'    : 'بازگردانی متن های دارای قالب',
+	'Clean format'            : 'حذف قالب ها',
+	'Undo last action'        : 'بازگشتن به آخرین حرکت',
+	'Redo previous action'    : 'تکرار حرکت قبلی',
+	'Bold'                    : 'درشت',
+	'Italic'                  : 'خوابیده',
+	'Underline'               : 'خط زیر متن',
+	'Strikethrough'           : 'خط روی متن',
+	'Superscript'             : 'بالانویس',
+	'Subscript'               : 'زیرنویس',
+	'Align left'              : 'چپ چین',
+	'Ailgn right'             : 'راست چین',
+	'Align center'            : 'وسط چین',
+	'Align full'              : 'به صورت کشده و کامل',
+	'Font color'              : 'رنگ قلم ها',
+	'Background color'        : 'رنگ ضمینه',
+	'Indent'                  : 'تورفتگی',
+	'Outdent'                 : 'بیرون رفتگی',
+	'Format'                  : 'قالب',
+	'Font size'               : 'اندازه قلم',
+	'Font'                    : 'قلم',
+	'Ordered list'            : 'مرتب سازی لیست',
+	'Unordered list'          : 'به هم ریختن لیست',
+	'Horizontal rule'         : 'خط افقی',
+	'Blockquote'              : 'نقل قول',
+	'Block element (DIV)'     : 'عنر نگه دارنده (DIV)',
+	'Link'                    : 'پیوند',
+	'Delete link'             : 'حذف لینک',
+	'Bookmark'                : 'نشانه گزاری',
+	'Image'                   : 'تصویر',
+	'Table'                   : 'جدول',
+	'Delete table'            : 'حذف جدول',
+	'Insert row before'       : 'درج سطر قبل از این',
+	'Insert row after'        : 'درج سطر بعد از این',
+	'Delete row'              : 'حذف سطر',
+	'Insert column before'    : 'درج ستون قبل از',
+	'Insert column after'     : 'درج ستون بعد از',
+	'Delete column'           : 'حذف ستون',
+	'Merge table cells'       : 'ادغام کردن  خانه های جدول',
+	'Split table cell'        : 'تقسیم و مجزا کردن خانه های جدول',
+	'Toggle display document structure' : 'زنجیر شده به ساختار سند در حال نمایش',
+	'Table cell properties'   : 'تنظیمات خونه جدول',
+	'Table properties'        : 'تنظیمات جدول',
+	'Toggle full screen mode' : 'نمایش و پوشانیدن کل نمایشگر',
+	'Open file manager'       : 'بازکردن مدیریت فایل',
+	'Non breakable space'     : 'فضای غیر قابل شکستن',
+	'Stop element floating'   : 'متوقف ساخت عنر شناور',
+	// dialogs
+	'Warning' : 'اخطار',
+	'Properies' : 'خصوصیات',
+	'Popup' : 'پنجر بازشو',
+	'Advanced' : 'پیشرفته',
+	'Events' : 'رویداد',
+	'Width' : 'طول',
+	'Height' : 'عرض',
+	'Left'   : 'چپ',
+	'Center' : 'وسط',
+	'Right'  : 'راست',
+	'Border' : 'کادر حایه',
+	'Background' : 'پشت صحنه/ضمینه',
+	'Css class' : 'کلاس سی اس اس',
+	'Css style' : 'استایل سی اس اس',
+	'No' : 'خیر',
+	'Title' : 'عنوان',
+	'Script direction' : 'اسکریپت هم سو',
+	'Language' : 'ربان',
+	'Charset' : 'کدپیج زیان',
+	'Not set' : 'اعمال نشد',
+	'Left to right' : 'چپ به راست',
+	'Right to left' : 'راست به چپ',
+	'In this window' : '(_self) نمایش در همین پنجره',
+	'In new window (_blank)' : '(_blank) نمایش در پنجره جدید ',
+	'In new parent window (_parent)' : '(_parent) نمایش در پنجره اصلی',
+	'In top frame (_top)' : '(_top) نمایش در بالای قاب',
+	'URL' : '',
+	'Open in' : 'باز کردن در',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'این عملیات به دلایل امنیتی در مرورگر وب شما مسدود شده ، لطفا از میانبر ها استفاده کنید.',
+	// format
+	'Heading 1' : 'سر فصل 1',
+	'Heading 2' : 'سر فصل 2',
+	'Heading 3' : 'سر فصل 3',
+	'Heading 4' : 'سر فصل 4',
+	'Heading 5' : 'سر فصل 5',
+	'Heading 6' : 'سر فصل 6',
+	'Paragraph' : 'پراگراف',
+	'Address' : 'آدرس',
+	'Preformatted' : 'قالب بندی شده',
+	// font size
+	'Small (8pt)'   : '',
+	'Small (10px)'  : '',
+	'Small (12pt)'  : '',
+	'Normal (14pt)' : '',
+	'Large (18pt)'  : '',
+	'Large (24pt)'  : '',
+	'Large (36pt)'  : '',
+	// bookmark
+	'Bookmark name' : 'نام نشانه',
+	// link
+	'Link URL' : '(URL) پیوند',
+	'Target' : 'مقصد',
+	'Open link in popup window' : 'باز کردن پیوند در یک پنجره بازشو',
+	'URL' : '',
+	'Window name' : 'نام پنجره',
+	'Window size' : 'سایز پنجره',
+	'Window position' : 'موقعیت پنجره',
+	'Location bar' : 'محل نگه دارنده',
+	'Menu bar' : 'نگه دارنده منو',
+	'Toolbar' : 'جعبه ابزار',
+	'Scrollbars' : 'محل اسکرول',
+	'Status bar' : 'محل وضعیت',
+	'Resizable' : 'تغییر ساز پذیر بودن',
+	'Depedent' : 'محتاج',
+	'Add return false' : '(return false) افزودن',
+	'Target MIME type' : 'MIME type',
+	'Relationship page to target (rel)' : '',
+	'Relationship target to page (rev)' : '',
+	'Tab index' : '',
+	'Access key' : 'کیلید دسترسی',
+	// image
+	'Size' : 'سایز',
+	'Preview' : 'پیش نمایش',
+	'Margins' : 'حاشیه ها',
+	'Alt text' : 'Alt',
+	'Image URL' : 'URL',
+	// table
+	'Spacing'       : '(spacing)فاصه های میانی',
+	'Padding'       : '(padding) حاشیه ها درونی',
+	'Rows'          : 'سطرها',
+	'Columns'       : 'ستون ها',
+	'Groups'        : 'گروه هاس',
+	'Cells'         : 'خانه هاس',
+	'Caption'       : 'عنوان',
+	'Inner borders' : 'کادر درونی'
+
+
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.fr.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.fr.js
new file mode 100644
index 0000000..34909b9
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.fr.js
@@ -0,0 +1,167 @@
+/**
+ * French translation
+ * @author Francois Mazerolle <fmaz008@gmail.com>
+ * @version 2010-09-18
+ */
+(function($) {
+elRTE.prototype.i18Messages.fr = {
+	'Editor' : 'Editeur',
+	'Source' : 'Code Source',
+	// Panel Name
+	'Copy/Pase'      : 'Copier/Coller',
+	'Undo/Redo'      : 'Annuler/Répéter',
+	'Text styles'    : 'Styles de texte',
+	'Colors'         : 'Couleurs',
+	'Alignment'      : 'Alignement',
+	'Indent/Outdent' : 'Augmenter/Diminuer l\'incrément',
+	'Text format'    : 'Format de texte',
+	'Lists'          : 'Listes',
+	'Misc elements'  : 'Éléments divers',
+	'Links'          : 'Liens',
+	'Images'         : 'Images',
+	'Media'          : 'Multimédia',
+	'Tables'         : 'Tableaux',
+	'File manager (elFinder)' : 'Gestionnaire de fichiers',
+	// button names
+	'Save'                    : 'Enregistrer',
+	'Copy'                    : 'Copier',
+	'Cut'                     : 'Couper',
+	'Paste'                   : 'Coller',
+	'Paste only text'         : 'Coller seulement le texte',
+	'Paste formatted text'    : 'Coller le texte formaté',
+	'Clean format'            : 'Effacer le formatage',
+	'Undo last action'        : 'Annuler la dernière action',
+	'Redo previous action'    : 'Répéter la dernière action',
+	'Bold'                    : 'Gras',
+	'Italic'                  : 'Italique',
+	'Underline'               : 'Souligner',
+	'Strikethrough'           : 'Barré',
+	'Superscript'             : 'Exposant',
+	'Subscript'               : 'Indice',
+	'Align left'              : 'Aligner à gauche',
+	'Ailgn right'             : 'Aligner à droite',
+	'Align center'            : 'Centrer',
+	'Align full'              : 'Justifier',
+	'Font color'              : 'Couleur de texte',
+	'Background color'        : 'Couleur d\'arrière plan',
+	'Indent'                  : 'Aumenter la marge',
+	'Outdent'                 : 'Réduire la marge',
+	'Format'                  : 'Formater',
+	'Font size'               : 'Taille de police',
+	'Font'                    : 'Police',
+	'Ordered list'            : 'Liste ordonnée',
+	'Unordered list'          : 'Liste désordonnée',
+	'Horizontal rule'         : 'Ligne horizontale',
+	'Blockquote'              : 'Citation',
+	'Block element (DIV)'     : 'Bloc élément (DIV)',
+	'Link'                    : 'Lien',
+	'Delete link'             : 'Supprimer le lien',
+	'Bookmark'                : 'Marque page',
+	'Image'                   : 'Image',
+	'Table'                   : 'Tableau',
+	'Delete table'            : 'Supprimer tableau',
+	'Insert row before'       : 'Insérer une ligne avant',
+	'Insert row after'        : 'Insérer une ligne après',
+	'Delete row'              : 'Supprimer une ligne',
+	'Insert column before'    : 'Insérer une colone avant',
+	'Insert column after'     : 'Insérer une colone après',
+	'Delete column'           : 'Supprimer une colone',
+	'Merge table cells'       : 'Fusionner les cellules',
+	'Split table cell'        : 'Diviser la cellule',
+	'Toggle display document structure' : 'Alterner la vue du document',
+	'Table cell properties'   : 'Propriété de la cellule',
+	'Table properties'        : 'Propriété du tableau',
+	'Toggle full screen mode' : 'Alterner la vue plein écran',
+	'Open file manager'       : 'Ouvrir le gestionnaire de fichiers',
+	'Non breakable space'     : 'Espace insécable',
+	'Stop element floating'   : 'Interrompre le flottement de l\'élément',
+	// dialogs
+	'Warning' : 'Attention',
+	'Properies' : 'Propriété',
+	'Popup' : 'Nouvelle fenêtre',
+	'Advanced' : 'Avancé',
+	'Events' : 'Évènements',
+	'Width' : 'Largeur',
+	'Height' : 'Hauteur',
+	'Left'   : 'Gauche',
+	'Center' : 'Centre',
+	'Right'  : 'Droite',
+	'Border' : 'Bordure',
+	'Background' : 'Arrière plan',
+	'Css class' : 'Classe CSS',
+	'Css style' : 'Style CSS',
+	'No' : 'Non',
+	'Title' : 'Titre',
+	'Script direction' : 'Direction de script',
+	'Language' : 'Langue',
+	'Charset' : 'Jeu de caractères',
+	'Not set' : 'No set',
+	'Left to right' : 'Gauche à droite',
+	'Right to left' : 'Droite à gauche',
+	'In this window' : 'Dans cette fenêtre (_self)',
+	'In new window (_blank)' : 'Dans une nouvelle fenêtre (_blank)',
+	'In new parent window (_parent)' : 'Dans une nouvelle fenêtre parente (_parent)',
+	'In top frame (_top)' : 'Dans le cadre maitre (_top)',
+	'URL' : 'URL',
+	'Open in' : 'Ouvrir dans',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'Cette opération est désactivée dans votre navigateur pour des raisons de sécurité. Utilisez le raccourci.',
+	// format
+	'Heading 1' : 'Entête 1',
+	'Heading 2' : 'Entête 2',
+	'Heading 3' : 'Entête 3',
+	'Heading 4' : 'Entête 4',
+	'Heading 5' : 'Entête 5',
+	'Heading 6' : 'Entête 6',
+	'Paragraph' : 'Paragraphe',
+	'Address' : 'Adresse',
+	'Preformatted' : 'Préformaté',
+	// font size
+	'Small (8pt)'   : 'Petite (8pt)',
+	'Small (10px)'  : 'Petite (10px)',
+	'Small (12pt)'  : 'Petite (12pt)',
+	'Normal (14pt)' : 'Normale (14pt)',
+	'Large (18pt)'  : 'Grande (18pt)',
+	'Large (24pt)'  : 'Grande (24pt)',
+	'Large (36pt)'  : 'Grande (36pt)',
+	// bookmark
+	'Bookmark name' : 'Nom du favori',
+	// link
+	'Link URL' : 'Adresse du lien',
+	'Target' : 'Cible',
+	'Open link in popup window' : 'Ouvrir dans une nouvelle fenêtre',
+	'Window name' : 'Nom de la fenêtre',
+	'Window size' : 'Taille de la fenêtre',
+	'Window position' : 'Position de la fenêtre',
+	'Location bar' : 'Barre d\'adresse',
+	'Menu bar' : 'Barre de menu',
+	'Toolbar' : 'Barre d\'outils',
+	'Scrollbars' : 'Barres de défillement',
+	'Status bar' : 'Barre d\'état',
+	'Resizable' : 'Redimensionable',
+	'Depedent' : 'Dépendent (Netscape)',
+	'Add return false' : 'Ajouter un retour négatif (return false)',
+	'Target MIME type' : 'Type MIME cible',
+	'Relationship page to target (rel)' : '',
+	'Relationship target to page (rev)' : '',
+	'Tab index' : 'Index de tabulation',
+	'Access key' : 'Tecla de acceso',
+	// image
+	'Size' : 'Taille',
+	'Preview' : 'Prévisualisation',
+	'Margins' : 'Marges',
+	'Alt text' : 'Texte ALT',
+	'Image URL' : 'URL de l\'image',
+	// table
+	'Spacing'       : 'Espace (Spacing)',
+	'Padding'       : 'Marge intérieure (Padding)',
+	'Rows'          : 'Lignes',
+	'Columns'       : 'Colones',
+	'Groups'        : 'Groupes',
+	'Cells'         : 'Cellules',
+	'Caption'       : 'Étiquette',
+	'Inner borders' : 'Bordures intérieures'
+
+
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.hu.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.hu.js
new file mode 100644
index 0000000..a0aee2c
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.hu.js
@@ -0,0 +1,201 @@
+/**
+ * Hungarian translation
+ * @author Viktor Tamas <tamas.viktor@totalstudio.hu>
+ * @version 2010-09-18
+ */
+ (function($) {
+elRTE.prototype.i18Messages.hu = {
+    'Editor' : 'Szerkesztő',
+    'Source' : 'Forrás',
+    // названия панелей
+    'Copy/Pase'      : 'Másolás/Beillesztés',
+    'Undo/Redo'      : 'Visszavonás/Ismét',
+    'Text styles'    : 'Szöveg stílus',
+    'Colors'         : 'Színek',
+    'Alignment'      : 'Elrendezés',
+    'Indent/Outdent' : 'Отступы',
+    'Text format'    : 'Szöveg forma',
+    'Lists'          : 'Listák',
+    'Misc elements'  : 'Egyéb elemek',
+    'Links'          : 'Linkek',
+    'Images'         : 'Képek',
+    'Media'          : 'Média',
+    'Tables'         : 'Táblázatok',
+    'File manager (elFinder)' : 'Fájl kezelő (elFinder)',
+    // названия кнопок
+    'About this software'     : 'A szoftverről',
+    'Save'                    : 'Mentés',
+    'Copy'                    : 'Másolás',
+    'Cut'                     : 'Kivágás',
+    'Paste'                   : 'Beillesztés',
+    'Paste only text'         : 'Beillesztés csak szövegként',
+    'Paste formatted text'    : 'Beillesztés formázott szövegként',
+    'Clean format'            : 'Formázás törlése',
+    'Undo last action'        : 'Utolsó művelet visszavonása',
+    'Redo previous action'    : 'Előző művelet újra',
+    'Bold'                    : 'Félkövér',
+    'Italic'                  : 'Dőlt',
+    'Underline'               : 'Aláhúzott',
+    'Strikethrough'           : 'Áthúzott',
+    'Superscript'             : 'Felső index',
+    'Subscript'               : 'Alsó index',
+    'Align left'              : 'Balra igazítás',
+    'Ailgn right'             : 'Jobbra igazítás',
+    'Align center'            : 'Középre igazítás',
+    'Align full'              : 'Sórkizárt igazítás',
+    'Font color'              : 'Betűszín',
+    'Background color'        : 'Háttér szín',
+    'Indent'                  : 'Behúzás',
+    'Outdent'                 : 'Kihúzás',
+    'Format'                  : 'Formátum',
+    'Font size'               : 'Betű méret',
+    'Font'                    : 'Betű típus',
+    'Ordered list'            : 'Számozott lista',
+    'Unordered list'          : 'Lista',
+    'Horizontal rule'         : 'Vízszintes vonal',
+    'Blockquote'              : 'Idézet',
+    'Block element (DIV)'     : 'Blokk elem (DIV)',
+    'Link'                    : 'Link',
+    'Delete link'             : 'Link törlése',
+    'Bookmark'                : 'Horgony',
+    'Image'                   : 'Kép',
+    'Table'                   : 'Táblázat',
+    'Delete table'            : 'Táblázat törlése',
+    'Insert row before'       : 'Sor beszúrása sor elé',
+    'Insert row after'        : 'Sor beszúrása sor mögé',
+    'Delete row'              : 'Sor törlése',
+    'Insert column before'    : 'Oszlop beszúrása oszlop elé',
+    'Insert column after'     : 'Oszlop beszúrása oszlop mögé',
+    'Delete column'           : 'Oszlop törlése',
+    'Merge table cells'       : 'Cellák összevonása',
+    'Split table cell'        : 'Cellák szétávlasztása',
+    'Toggle display document structure' : 'Dokumentum szerkezet megtekintése',
+    'Table cell properties'   : 'Táblázat cella tulajdonságai',
+    'Table properties'        : 'Tábla tulajdonságok',
+    'Toggle full screen mode' : 'Teljes képernyős mód',
+    'Open file manager'       : 'Fájl kezelő megnyitása',
+    'Non breakable space'     : 'Szóköz',
+    'Stop element floating'   : 'Elem elrendezések törlése',
+    // dialogs
+    'Warning' : 'Figyelmeztetés',
+    'Properies' : 'Tulajdonságok',
+    'Popup' : 'Popup',
+    'Advanced' : 'Egyéni',
+    'Events' : 'Események',
+    'Width' : 'Szélesség',
+    'Height' : 'Magasság',
+    'Left'   : 'Bal',
+    'Center' : 'Közép',
+    'Right'  : 'Jobb',
+    'Border' : 'Keret',
+    'Background' : 'Háttér',
+    'Css class' : 'Css class',
+    'Css style' : 'Css stílus',
+    'No' : 'Nem',
+    'Title' : 'Cím',
+    'Script direction' : 'Script hivatkozás',
+    'Language' : 'Nyelv',
+    'Charset' : 'Karaktertábla',
+    'Not set' : 'Nincs beállítva',
+    'Left to right' : 'Balról jobbra',
+    'Right to left' : 'Jobbról balra',
+    'In this window' : 'Ebbe az ablakba',
+    'In new window (_blank)' : 'Új ablakba (_blank)',
+    'In new parent window (_parent)' : 'Egy új ablakba (_parent)',
+    'In top frame (_top)' : 'A top frame-be (_top)',
+    'URL' : '',
+    'Open in' : 'Megnyitás',
+    'Open file manger' : 'Fájlkezelő megnyitása',
+    // copy
+    'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'Ez a művelet le van tiltva a böngészőjében a biztonsági okból. Használja a parancsikont ehelyett.',
+    // format
+    'Heading 1' : 'Címsor 1',
+    'Heading 2' : 'Címsor 2',
+    'Heading 3' : 'Címsor 3',
+    'Heading 4' : 'Címsor 4',
+    'Heading 5' : 'Címsor 5',
+    'Heading 6' : 'Címsor 6',
+    'Paragraph' : 'Bekezdés',
+    'Address' : 'Cím',
+    'Preformatted' : 'Előre formázott',
+    // font size
+    'Small (8pt)'   : 'Kicsi (8pt)',
+    'Small (10px)'  : 'Kicsi (10px)',
+    'Small (12pt)'  : 'Kicsi (12pt)',
+    'Normal (14pt)' : 'Normál (14pt)',
+    'Large (18pt)'  : 'Nagy (18pt)',
+    'Large (24pt)'  : 'Nagy (24pt)',
+    'Large (36pt)'  : 'Nagy (36pt)',
+    // bookmark
+    'Bookmark name' : 'Horgony neve',
+    // link
+    'Link URL' : 'Link címe (URL)',
+    'Target' : 'Cél',
+    'Select bookmark' : 'Horgony választása',
+    'Open link in popup window' : 'Hivatkozás megnyitása új popup ablakban',
+    'URL' : '',
+    'Window name' : 'Ablak neve',
+    'Window size' : 'Ablak mérete',
+    'Window position' : 'Ablak pozíciója',
+    'Location bar' : 'Címsor',
+    'Menu bar' : 'Menüsor',
+    'Toolbar' : 'Eszköztár',
+    'Scrollbars' : 'Görgősáv',
+    'Status bar' : 'Státusz sor',
+    'Resizable' : 'Átméretezhető',
+    'Depedent' : '',
+    'Add return false' : 'Hozzáadás (return false)',
+    'Target MIME type' : 'MIME típusú cél',
+    'Relationship page to target (rel)' : 'Célhoz kapcsolódó lap (rel)',
+    'Relationship target to page (rev)' : 'Laphoz kapcsolódó cél (rev)',
+    'Tab index' : 'Tabulátor index',
+    'Access key' : 'Hozzáférési kulcs',
+    // image
+    'Size' : 'Méret',
+    'Preview' : 'Előnézet',
+    'Margins' : 'Margók',
+    'Alt text' : 'Alt szöveg',
+    'Image URL' : 'Kép URL',
+    // table
+    'Spacing'       : 'Cellaköz',
+    'Padding'       : '',
+    'Rows'          : 'Sorok',
+    'Columns'       : 'Oszlopok',
+    'Groups'        : 'Csoportok',
+    'Cells'         : 'Cellák',
+    'Caption'       : 'Felirat',
+    'Inner borders' : 'Belső keret',
+    // table cell
+    'Table cell type' : 'Táblázat cella típus',
+    'Data' : 'Adat',
+    'Header' : 'Címsor',
+    'Justify' : 'Sorkizárt',
+    'Paddings' : 'Padding',
+    'Apply to' : 'Alkalmazás a',
+    'Current cell' : 'Jelenlegi cella',
+    'All cells in row' : 'Összes cella a sorban',
+    'All cells in column' : 'Összes cella az oszlopban',
+    'All cells in table' : 'Összes cella a táblázatban',
+    // about
+    'About elRTE' : 'Az elRTE-ről',
+    'Version' : 'Verzió',
+    'Licence' : 'Liszensz',
+    'elRTE is an open-source JavaScript based WYSIWYG HTML-editor.' : 'Az elRTE egy nyíltforráskódú JavaScript alapú WYSIWYG HTML-szerkesztő.',
+    'Main goal of the editor - simplify work with text and formating (HTML) on sites, blogs, forums and other online services.' : 'A szerkesztő fő célja, hogy egyszerűsítse a munkát és a szöveg formázást (HTML) az oldalakon, blogokon, fórumokon illetve más online szolgáltatásokban.',
+    'You can use it in any commercial or non-commercial projects.' : 'Használhatod bármilyen kereskedelni vagy nem-kereskedelmi célú projektben.',
+    'Authors' : 'Készítők',
+    'Chief developer' : 'Fő fejlesztő',
+    'Developer, tech support' : 'Fejelsaztő, tech kapcsolat',
+    'Interface designer' : 'Interface tervező',
+    'Spanish localization' : 'Spanyol fordító',
+    'Japanese localization' : 'Japán fordító',
+    'Latvian localization' : 'Litván fordító',
+    'German localization' : 'Német fordító',
+    'Ukranian localization' : 'Ukrán fordító',
+    'Magyar localization' : 'Magyar fordító',
+    'For more information about this software visit the' : 'További információkért a szoftverről keresse fel a ',
+    'elRTE website' : 'elRTE honlapját'
+
+
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.it.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.it.js
new file mode 100644
index 0000000..4a9ce0d
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.it.js
@@ -0,0 +1,167 @@
+/**
+ * Italian translation
+ * @author Ugo Punzolo <sadraczerouno@gmail.com>
+ * @version 2010-09-20
+ */
+(function($) {
+elRTE.prototype.i18Messages.it = {
+	'Editor' : 'Editor',
+	'Source' : 'Codice Sorgente',
+	// Panel Name
+	'Copy/Pase'      : 'Copia/Incolla',
+	'Undo/Redo'      : 'Annulla/Ripristina',
+	'Text styles'    : 'Stile del testo',
+	'Colors'         : 'Colori',
+	'Alignment'      : 'Allineamento',
+	'Indent/Outdent' : 'Aumenta/Riduci indentazione',
+	'Text format'    : 'Formato del testo',
+	'Lists'          : 'Liste',
+	'Misc elements'  : 'Elementi vari',
+	'Links'          : 'Collegamenti',
+	'Images'         : 'Immagini',
+	'Media'          : 'Multimedia',
+	'Tables'         : 'Tabelle',
+	'File manager (elFinder)' : 'File manager (elFinder)',
+	// button names
+	'Save'                    : 'Salva',
+	'Copy'                    : 'Copia',
+	'Cut'                     : 'Taglia',
+	'Paste'                   : 'Incolla',
+	'Paste only text'         : 'Incolla solo testo',
+	'Paste formatted text'    : 'Incolla testo formattato',
+	'Clean format'            : 'Pulisci formato',
+	'Undo last action'        : 'Annulla ultima azione',
+	'Redo previous action'    : 'Ripristina ultima azione',
+	'Bold'                    : 'Neretto',
+	'Italic'                  : 'Corsivo',
+	'Underline'               : 'Sottolineato',
+	'Strikethrough'           : 'Barrato',
+	'Superscript'             : 'Indice',
+	'Subscript'               : 'Pedice/Deponente',
+	'Align left'              : 'Allinea a sinistra',
+	'Ailgn right'             : 'Allinea a destra',
+	'Align center'            : 'Centra',
+	'Align full'              : 'Giustifica',
+	'Font color'              : 'Colore del testo',
+	'Background color'        : 'Colore di sfondo',
+	'Indent'                  : 'Aumenta indentazione',
+	'Outdent'                 : 'Riduci indentazione',
+	'Format'                  : 'Formato',
+	'Font size'               : 'Grandezza caratteri',
+	'Font'                    : 'Carattere',
+	'Ordered list'            : 'Lista ordinata',
+	'Unordered list'          : 'Lista non ordinata',
+	'Horizontal rule'         : 'Linea orizzontale',
+	'Blockquote'              : 'Citazione',
+	'Block element (DIV)'     : 'Blocco elemento (DIV)',
+	'Link'                    : 'Collegamento',
+	'Delete link'             : 'Elimina collegamento',
+	'Bookmark'                : 'Segnalibro',
+	'Image'                   : 'Immagine',
+	'Table'                   : 'Tabella',
+	'Delete table'            : 'Elimina tabella',
+	'Insert row before'       : 'Inserisci riga sopra',
+	'Insert row after'        : 'Inserisci riga sotto',
+	'Delete row'              : 'Elimina riga',
+	'Insert column before'    : 'Inserisci colonna a sinistra',
+	'Insert column after'     : 'Inserisci colonna a destra',
+	'Delete column'           : 'Elimina colonna',
+	'Merge table cells'       : 'Unisci celle',
+	'Split table cell'        : 'Separa celle',
+	'Toggle display document structure' : 'Passa alla modalit&agrave; "visualizzazione struttura del documento"',
+	'Table cell properties'   : 'Propriet&agrave; celle',
+	'Table properties'        : 'Propriet&agrave; tabella',
+	'Toggle full screen mode' : 'Passa alla modalit&agrave; "schermo intero"',
+	'Open file manager'       : 'Apri il file manager',
+	'Non breakable space'     : 'Spazio non divisibile',
+	'Stop element floating'   : 'Blocca elemento fluttuante',
+	// dialogs
+	'Warning' : 'Attenzione',
+	'Properies' : 'Propriet&agrave;',
+	'Popup' : 'Popup',
+	'Advanced' : 'Avanzate',
+	'Events' : 'Eventi',
+	'Width' : 'Larghezza',
+	'Height' : 'Altezza',
+	'Left'   : 'Sinistra',
+	'Center' : 'Centro',
+	'Right'  : 'Destra',
+	'Border' : 'Bordo',
+	'Background' : 'Sfondo',
+	'Css class' : 'Classe CSS',
+	'Css style' : 'Stile CSS',
+	'No' : 'No',
+	'Title' : 'Titolo',
+	'Script direction' : 'Direzione dello script',
+	'Language' : 'Lingua',
+	'Charset' : 'Charset',
+	'Not set' : 'Non settato',
+	'Left to right' : 'Da sinistra a destra',
+	'Right to left' : 'Da destra a sinistra',
+	'In this window' : 'In questa finestra (_self)',
+	'In new window (_blank)' : 'In una nuova finestra (_blank)',
+	'In new parent window (_parent)' : 'In una nuova finestra madre (_parent)',
+	'In top frame (_top)' : 'In alto al frame (_top)',
+	'URL' : 'URL',
+	'Open in' : 'Apri in',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'Questa operazione &egrave; disabilitata nel tuo browser per motivi di sicurezza. Puoi comunque utilizzare un comando da tastiera.',
+	// format
+	'Heading 1' : 'Intestazione 1',
+	'Heading 2' : 'Intestazione 2',
+	'Heading 3' : 'Intestazione 3',
+	'Heading 4' : 'Intestazione 4',
+	'Heading 5' : 'Intestazione 5',
+	'Heading 6' : 'Intestazione 6',
+	'Paragraph' : 'Paragrafo',
+	'Address' : 'Indirizzo',
+	'Preformatted' : 'Preformattato',
+	// font size
+	'Small (8pt)'   : 'Piccolo (8pt)',
+	'Small (10px)'  : 'Piccolo (10px)',
+	'Small (12pt)'  : 'Piccolo (12pt)',
+	'Normal (14pt)' : 'Normale (14pt)',
+	'Large (18pt)'  : 'Grande (18pt)',
+	'Large (24pt)'  : 'Grande (24pt)',
+	'Large (36pt)'  : 'Grande (36pt)',
+	// bookmark
+	'Bookmark name' : 'Nome del segnalibro',
+	// link
+	'Link URL' : 'URL del collegamento',
+	'Target' : 'Target',
+	'Open link in popup window' : 'Apri il link in una finestra popup',
+	'Window name' : 'Nome della finestra',
+	'Window size' : 'Dimensioni della finestra',
+	'Window position' : 'Posizione della finestra',
+	'Location bar' : 'Barra direzionale',
+	'Menu bar' : 'Barra del menu',
+	'Toolbar' : 'Barra degli strumenti',
+	'Scrollbars' : 'Barra di scorrimento',
+	'Status bar' : 'Barra di stato',
+	'Resizable' : 'Ridimensionabile',
+	'Depedent' : 'Dipendente (Netscape)',
+	'Add return false' : 'Aggiungi condizione falsa (return false)',
+	'Target MIME type' : 'Obiettivo del tipo di MIME (MIME type)',
+	'Relationship page to target (rel)' : 'Dalla pagina correlata all\'obiettivo',
+	'Relationship target to page (rev)' : 'Dall\'obiettivo alla pagina correlata',
+	'Tab index' : 'Indice di tabulazione',
+	'Access key' : 'Chiave di accesso',
+	// image
+	'Size' : 'Dimensione',
+	'Preview' : 'Anteprima',
+	'Margins' : 'Margini',
+	'Alt text' : 'Testo alternativo',
+	'Image URL' : 'URL dell\'immagine',
+	// table
+	'Spacing'       : 'Spaziatura (Spacing)',
+	'Padding'       : 'Riempimento (Padding)',
+	'Rows'          : 'Righe',
+	'Columns'       : 'Colonne',
+	'Groups'        : 'Gruppi',
+	'Cells'         : 'Celle',
+	'Caption'       : 'Didascalia',
+	'Inner borders' : 'Bordi interni'
+
+
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.jp.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.jp.js
new file mode 100644
index 0000000..7a37e48
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.jp.js
@@ -0,0 +1,187 @@
+/**
+ * Japanese translation
+ * @author Tomoaki Yoshida <info@yoshida-studio.jp>
+ * @version 2010-09-18
+ */
+(function($) {
+elRTE.prototype.i18Messages.jp = {
+	'Editor' : 'エディター',
+	'Source' : 'ソース',
+	// Panel Name
+	'Copy/Pase'      : 'コピー/ペースト',
+	'Undo/Redo'      : '元に戻す/やり直し',
+	'Text styles'    : 'テキストスタイル',
+	'Colors'         : '色',
+	'Alignment'      : '行揃え',
+	'Indent/Outdent' : 'インデント/アウトデント',
+	'Text format'    : 'テキストフォーマット',
+	'Lists'          : 'リスト',
+	'Misc elements'  : 'その他',
+	'Links'          : 'リンク',
+	'Images'         : '画像',
+	'Media'          : 'メディア',
+	'Tables'         : 'テーブル',
+	'File manager (elFinder)' : 'ファイルマネージャ(elFinder)',
+	// button names
+	'About this software'     : 'このソフトウェアについて',
+	'Save'                    : '保存',
+	'Copy'                    : 'コピー',
+	'Cut'                     : '切り取り',
+	'Paste'                   : '貼り付け',
+	'Paste only text'         : 'テキストのみ貼り付け',
+	'Paste formatted text'    : 'フォーマットされたテキストの貼り付け',
+	'Clean format'            : 'フォーマット消去',
+	'Undo last action'        : '元に戻す',
+	'Redo previous action'    : 'やり直し',
+	'Bold'                    : '太字',
+	'Italic'                  : '斜体',
+	'Underline'               : '下線',
+	'Strikethrough'           : '打ち消し線',
+	'Superscript'             : '上付き文字',
+	'Subscript'               : '添え字',
+	'Align left'              : '左揃え',
+	'Ailgn right'             : '右揃え',
+	'Align center'            : '中央揃え',
+	'Align full'              : '両端揃え',
+	'Font color'              : 'テキスト色',
+	'Background color'        : '背景色',
+	'Indent'                  : 'インデント',
+	'Outdent'                 : 'アウトデント',
+	'Format'                  : 'フォーマット',
+	'Font size'               : 'サイズ',
+	'Font'                    : 'フォント',
+	'Ordered list'            : '段落番号',
+	'Unordered list'          : '箇条書き',
+	'Horizontal rule'         : '横罫線',
+	'Blockquote'              : 'ブロック引用',
+	'Block element (DIV)'     : 'ブロック要素 (DIV)',
+	'Link'                    : 'リンク',
+	'Delete link'             : 'リンク削除',
+	'Bookmark'                : 'アンカー挿入/編集',
+	'Image'                   : 'イメージ',
+	'Table'                   : 'テーブル',
+	'Delete table'            : 'テーブル削除',
+	'Insert row before'       : '前に行を挿入',
+	'Insert row after'        : '後ろに行を挿入',
+	'Delete row'              : '行を削除',
+	'Insert column before'    : '前に列を挿入',
+	'Insert column after'     : '後ろに列を挿入',
+	'Delete column'           : '列を削除',
+	'Merge table cells'       : 'セルを結合する',
+	'Split table cell'        : 'セルを分割する',
+	'Toggle display document structure' : '構成要素の表示',
+	'Table cell properties'   : 'テーブルセルプロパティ',
+	'Table properties'        : 'テーブルプロパティ',
+	'Toggle full screen mode' : '最大化',
+	'Open file manager'       : 'ファイルマネージャを開く',
+	'Non breakable space'     : '改行なしスペース',
+	'Stop element floating'   : 'フロートの解除',
+	// dialogs
+	'Warning' : '警告',
+	'Properies' : 'プロパティ',
+	'Popup' : 'ポップアップ',
+	'Advanced' : 'アドバンス',
+	'Events' : 'イベント',
+	'Width' : '幅',
+	'Height' : '高さ',
+	'Left'   : '左',
+	'Center' : '中央',
+	'Right'  : '右',
+	'Border' : 'ボーダー',
+	'Background' : '背景',
+	'Css class' : 'CSS class',
+	'Css style' : 'CSS style',
+	'No' : 'No',
+	'Title' : 'タイトル',
+	'Script direction' : '文字表記方向',
+	'Language' : '言語',
+	'Charset' : 'Charset',
+	'Not set' : '設定しない',
+	'Left to right' : '左から右',
+	'Right to left' : '右から左',
+	'In this window' : '同じウィンドウ (_self)',
+	'In new window (_blank)' : '新しいウィンドウ (_blank)',
+	'In new parent window (_parent)' : '新しい親ウィンドウ (_parent)',
+	'In top frame (_top)' : 'トップフレーム (_top)',
+	'URL' : 'URL',
+	'Open in' : 'Open in',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'この機能はお使いのブラウザではセキュリティの観点からご利用できません。ショートカットをご利用ください。',
+	// format
+	'Heading 1' : '見出し1',
+	'Heading 2' : '見出し2',
+	'Heading 3' : '見出し3',
+	'Heading 4' : '見出し4',
+	'Heading 5' : '見出し5',
+	'Heading 6' : '見出し6',
+	'Paragraph' : '段落',
+	'Address' : 'アドレス',
+	'Preformatted' : '',
+	// font size
+	'Small (8pt)'   : '小(8pt)',
+	'Small (10px)'  : '小(10pt)',
+	'Small (12pt)'  : '小(12pt)',
+	'Normal (14pt)' : '中(14pt)',
+	'Large (18pt)'  : '大(18pt)',
+	'Large (24pt)'  : '大(24pt)',
+	'Large (36pt)'  : '大(36pt)',
+	// bookmark
+	'Bookmark name' : 'アンカー名',
+	// link
+	'Link URL' : '(URL)',
+	'Target' : 'ターゲット',
+	'Open link in popup window' : 'リンク先をポップアップで開く',
+	'URL' : 'URL',
+	'Window name' : 'ウィンドウ名',
+	'Window size' : 'ウィンドウサイズ',
+	'Window position' : 'ウィンドウ位置',
+	'Location bar' : 'ロケーションバー',
+	'Menu bar' : 'メニューバー',
+	'Toolbar' : 'ツールバー',
+	'Scrollbars' : 'スクロールバー',
+	'Status bar' : 'ステータスバー',
+	'Resizable' : 'サイズ可変',
+	'Depedent' : 'ウィンドウ連動',
+	'Add return false' : 'return falseを加える',
+	'Target MIME type' : 'Target MIME type',
+	'Relationship page to target (rel)' : 'ページからターゲットの関係 (rel)',
+	'Relationship target to page (rev)' : 'ターゲットからページの関係 (rev)',
+	'Tab index' : 'タブインデックス',
+	'Access key' : 'アクセスキー',
+	// image
+	'Size' : 'サイズ',
+	'Preview' : 'プレビュー',
+	'Margins' : 'マージン',
+	'Alt text' : '代替テキスト',
+	'Image URL' : '画像URL',
+	// table
+	'Spacing'       : 'セル間隔 (spacing)',
+	'Padding'       : 'セル内余白 (padding)',
+	'Rows'          : '行',
+	'Columns'       : '列',
+	'Groups'        : 'グループ',
+	'Cells'         : 'セル',
+	'Caption'       : 'キャプション',
+	'Inner borders' : '内部ボーダー',
+	// about
+	'About elRTE' : 'elRTEについて',
+	'Version' : 'バージョン',
+	'Licence' : 'ライセンス',
+	'elRTE is an open-source JavaScript based WYSIWYG HTML-editor.' : 'elRTEはJavascriptベースのオープンソースWYSIWYG HTMLエディタです。',
+	'Main goal of the editor - simplify work with text and formating (HTML) on sites, blogs, forums and other online services.' : 'このエディタの主な目的は、ウェブサイト、ブログ、フォーラムやその他のオンラインサービスのテキストとHTMLフォーマット入力作業をシンプルにすることです。',
+	'You can use it in any commercial or non-commercial projects.' : '商用・非商用に関わらずご利用いただけます。',
+	'Authors' : '著作者',
+	'Chief developer' : 'チーフデベロッパー',
+	'Developer, tech support' : 'デベロッパー・テクニカルサポート',
+	'Interface designer' : 'インターフェイスデザイナー',
+	'Spanish localization' : 'スペイン語化ローカライゼーション',
+	'Japanese localization' : '日本語化ローカライゼーション',
+	'Latvian localization' : 'ラトビア語化ローカライゼーション',
+	'German localization' : 'ドイツ語化ローカライゼーション',
+	'Ukranian localization' : 'ウクライナ語化ローカライゼーション',
+	'For more information about this software visit the' : '次のURLにてこのソフトウェアのより詳しい情報を公開しています。',
+	'elRTE website' : 'elRTE ウェブサイト'
+
+
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.lv.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.lv.js
new file mode 100644
index 0000000..88adf1e
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.lv.js
@@ -0,0 +1,179 @@
+/**
+ * Latvian translation
+ * @author Uldis Plotiņš <uldis.plotins@gmail.com>
+ * @version 2010-09-18
+ */
+(function($) {
+elRTE.prototype.i18Messages.lv = {
+	'Editor' : 'Redaktors',
+	'Source' : 'Izejas kods',
+	// panel names
+	'Copy/Pase'      : 'Kopēt/Ievietot',
+	'Undo/Redo'      : 'Atcelt/Atkārtot darbību',
+	'Text styles'    : 'Teksta stili',
+	'Colors'         : 'Krāsa',
+	'Alignment'      : 'Izlīdzināšana',
+	'Indent/Outdent' : 'Atkāpes',
+	'Text format'    : 'Formatēšana',
+	'Lists'          : 'Saraksti',
+	'Misc elements'  : 'Dažādi elementi',
+	'Links'          : 'Saites',
+	'Images'         : 'Attēli',
+	'Media'          : 'Mēdiju faili',
+	'Tables'         : 'Tabulas',
+	'File manager (elFinder)' : 'Failu pārvaldnieks (elFinder)',
+	// button names
+	'Save'                    : 'Saglabāt',
+	'Copy'                    : 'Kopēt',
+	'Cut'                     : 'Izgriezt',
+	'Paste'                   : 'Ievietot',
+	'Paste only text'         : 'Ievietot tikai tekstu',
+	'Paste formatted text'    : 'Ievietot formatētu tekstu',
+	'Clean format'            : 'Atcelt formatēšanu',
+	'Undo last action'        : 'Atcelt pēdējo darbību',
+	'Redo previous action'    : 'Atkārtot pēdējo darbību',
+	'Bold'                    : 'Treknraksts',
+	'Italic'                  : 'Slīpraksts',
+	'Underline'               : 'Pasvītrots',
+	'Strikethrough'           : 'Izsvītrots',
+	'Superscript'             : 'Augšraksts',
+	'Subscript'               : 'Apakšraksts',
+	'Align left'              : 'Izlīdzināt pa kreiso malu',
+	'Ailgn right'             : 'Izlīdzināt pa labo malu',
+	'Align center'            : 'Centrēt',
+	'Align full'              : 'Izlīdzināt pa malām',
+	'Font color'              : 'Šrifta krāsa',
+	'Background color'        : 'Fona krāsa',
+	'Indent'                  : 'Palielināt atkāpi',
+	'Outdent'                 : 'Samazināt atkāpi',
+	'Format'                  : 'Formatēšana',
+	'Font size'               : 'Šrifta lielums',
+	'Font'                    : 'Šrifts',
+	'Ordered list'            : 'Numurēts saraksts',
+	'Unordered list'          : 'Nenumurēts saraksts',
+	'Horizontal rule'         : 'Horizontālā līnija',
+	'Blockquote'              : 'Citāts',
+	'Block element (DIV)'     : 'Bloka elements (DIV)',
+	'Link'                    : 'Saite',
+	'Delete link'             : 'Dzēst saiti',
+	'Bookmark'                : 'Grāmatzīme',
+	'Image'                   : 'Attēls',
+	'Table'                   : 'Tabula',
+	'Delete table'            : 'Dzēst tabulu',
+	'Insert row before'       : 'Ievietot rindu pirms',
+	'Insert row after'        : 'Ievietot rindu pēc',
+	'Delete row'              : 'Dzēst rindu',
+	'Insert column before'    : 'Ievietot kolonnu pirms',
+	'Insert column after'     : 'Ievietot kolonnu pēc',
+	'Delete column'           : 'Dzēst kolonnu',
+	'Merge table cells'       : 'Apvienot ailes',
+	'Split table cell'        : 'Sadalīt aili',
+	'Toggle display document structure' : 'Rādīt dokumenta struktūru/neredzamos elementus',
+	'Table cell properties'   : 'Ailes iestatījumi',
+	'Table properties'        : 'Tabulas iestatījumi',
+	'Toggle full screen mode' : 'Pilns ekrāns',
+	'Open file manager'       : 'Atvērt failu pārvaldnieku',
+	'Non breakable space'     : 'Nepārtrauktā atstarpe',
+	'Stop element floating'   : 'Atslēgt elementu apklāšanu ar tekstu',
+	// dialogs
+	'Warning' : 'Uzmanību',
+	'Properies' : 'Iestatījumi',
+	'Popup' : 'Jauns logs',
+	'Advanced' : 'Papildus',
+	'Events' : 'Notikumi',
+	'Width' : 'Platums',
+	'Height' : 'Augstums',
+	'Left'   : 'Pa kresi',
+	'Center' : 'Pa centru',
+	'Right'  : 'Pa labi',
+	'Border' : 'Mala',
+	'Background' : 'Fons',
+	'Css class' : 'Css klase',
+	'Css style' : 'Css stils',
+	'No' : 'Nē',
+	'Title' : 'Virsraksts',
+	'Script direction' : 'Vēstules virziens',
+	'Language' : 'Valoda',
+	'Charset' : 'Kodējums',
+	'Not set' : 'Nav uzstādī†s',
+	'Left to right' : 'No kreisās uz labo',
+	'Right to left' : 'No labās uz kreiso',
+	'In this window' : 'Dotajā logā',
+	'In new window (_blank)' : 'Jaunā logā (_blank)',
+	'In new parent window (_parent)' : 'Vecāku logā (_parent)',
+	'In top frame (_top)' : 'Augšējā rāmī (_top)',
+	'URL' : 'URL',
+	'Open in' : 'Atvērt',
+	'Open file manger' : 'Atvērt failu pārvaldnieku',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'Dotā darbība jūsu pārlūkam ir liegta saistībā ar drošības aspektiem. Izmantojiet taustiņu kombināciju.',
+	// format
+	'Heading 1' : 'Virsraksts 1',
+	'Heading 2' : 'Virsraksts 2',
+	'Heading 3' : 'Virsraksts 3',
+	'Heading 4' : 'Virsraksts 4',
+	'Heading 5' : 'Virsraksts 5',
+	'Heading 6' : 'Virsraksts 6',
+	'Paragraph' : 'Paragrāfs',
+	'Address' : 'Adrese',
+	'Preformatted' : '',
+	// font size
+	'Small (8pt)'   : 'Sīks (8pt)',
+	'Small (10px)'  : 'Mazs (10px)',
+	'Small (12pt)'  : 'Neliels (12pt)',
+	'Normal (14pt)' : 'Parasts (14pt)',
+	'Large (18pt)'  : 'Liels (18pt)',
+	'Large (24pt)'  : 'Ļoti liels(24pt)',
+	'Large (36pt)'  : 'Milzīgs (36pt)',
+	// bookmark
+	'Bookmark name' : 'Grāmatzīmes vārds',
+	// link
+	'Link URL' : 'Saites adrese (URL)',
+	'Target' : 'Mērķis',
+	'Select bookmark' : 'Izvēlēties grāmatzīmi',
+	'Open link in popup window' : 'Atvērt saiti jaunā logā',
+	'URL' : 'URL',
+	'Window name' : 'Loga nosaukums',
+	'Window size' : 'Loga izmērs',
+	'Window position' : 'Loga pozīcija',
+	'Location bar' : 'Vietas panelis',
+	'Menu bar' : 'Izvēlnes panelis',
+	'Toolbar' : 'Instrumentu panelis',
+	'Scrollbars' : 'Ritjoslas',
+	'Status bar' : 'Stāvokļa panelis',
+	'Resizable' : 'Izmēra izmaiņas',
+	'Depedent' : 'Atkarīgs (Netscape)',
+	'Add return false' : 'Pievienot (return false)',
+	'Target MIME type' : 'MIME type mērķi',
+	'Relationship page to target (rel)' : 'Lapas attiecībaa pret mērķi (rel)',
+	'Relationship target to page (rev)' : 'Mērķa attiecība pret lapu (rev)',
+	'Tab index' : '',
+	'Access key' : 'Pieejas taustiņš',
+	// image
+	'Size' : 'Izmērs',
+	'Preview' : 'Priekšskats',
+	'Margins' : 'Atkāpes',
+	'Alt text' : 'Apraksta teksts',
+	'Image URL' : 'Bildes URL',
+	// table
+	'Spacing'       : 'Atstarpe',
+	'Padding'       : 'Atkāpe',
+	'Rows'          : 'Rindas',
+	'Columns'       : 'Kolonnas',
+	'Groups'        : 'Grupas',
+	'Cells'         : 'Ailes',
+	'Caption'       : 'Tabulas virsraksts',
+	'Inner borders' : 'Iekšējās robežas',
+	// table cell
+	'Table cell type' : 'Tabulas ailes tips',
+	'Data' : 'Dati',
+	'Header' : 'Virsraksts',
+	'Justify' : 'Pa malām',
+	'Paddings' : 'Atkāpes',
+	'Apply to' : 'Pielietot uz',
+	'Current cell' : 'Izvēlētā aile',
+	'All cells in row' : 'Visas rindas ailes',
+	'All cells in column' : 'Visas stabiņa ailes',
+	'All cells in table' : 'Visas tabulas ailes'
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.nl.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.nl.js
new file mode 100644
index 0000000..6046f28
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.nl.js
@@ -0,0 +1,199 @@
+/**
+ * Dutch translation
+ * @author Kurt Aerts
+ * @link http://ilabsolutions.net/
+ * @version 2010-09-18
+ */
+(function($) {
+elRTE.prototype.i18Messages.nl = {
+	'Editor' : 'Editor',
+	'Source' : 'Broncode',
+// Panel names
+	'Copy / Pase' : 'Kopieeer / Plakken',
+	'Undo / Redo' : 'Ongedaan maken / Herhalen typen',
+	'Text styles' : 'Tekst stijlen',
+	'Colors': 'Kleuren:',
+	'Alignment': 'Alinea',
+	'Indent / Outdent': '',
+	'Text format': 'Tekst opmaak',
+	'Lists': 'Lijsten',
+	'Misc elements': '',
+	'Links': 'Links',
+	'Images': 'Afbeeldingen',
+	'Media': 'Media',
+	'Tables': 'Tabelllen',
+	'File manager (elFinder)' : 'Bestandsmanager (elFinder)',
+// Button names
+	'About this software'     : 'Over deze software',
+	'Save': 'Opslaan',
+	'Copy': 'Kopieer',
+	'Cut': 'Knip',
+	'Paste': 'Plak',
+	'Paste only text': 'Plak alleen tekst',
+	'Paste formatted text': 'Plak opgemaakte tekst',
+	'Clean format': 'Opmaak opschonen',
+	'Undo last action': 'Maak laaste actie ongedaan',
+	'Redo previous action': 'Herdoe laatst gedane actie',
+	'Bold': 'Vet',
+	'Italic': 'Cursief',
+	'Underline': 'Onderlijnt',
+	'Strikethrough': 'Doorstreept',
+	'Superscript': '',
+	'Subscript': '',
+	'Align left': 'Links uitlijnen',
+	'Ailgn right': 'Rechts uitlijnen',
+	'Align center': 'Centreren',
+	'Align full': 'Uitvullen',
+	'Font color': 'Tekst kleur',
+	'Background color': 'Achtergrond kleur',
+	'Indent': 'Inspringing vergroten',
+	'Outdent': 'Inspringing Verkleinen',
+	'Format': 'Opmaak',
+	'Font size': 'Tekst grootte',
+	'Font': 'Lettertype',
+	'Ordered list': 'Geordende lijst',
+	'Unordered list': 'Ongeordende lijst',
+	'Horizontal rule': 'Horizontale regel',
+	'Blockquote': '',
+	'Block element (DIV)'  : '',
+	'Link': 'Link',
+	'Delete link': 'Verwijder mo,l',
+	'Bookmark': '',
+	'Image': 'Afbeelding',
+	'Table': 'Tabel',
+	'Delete table': 'Verwijder tabel',
+	'Insert row before': 'Invoegen voor rij',
+	'Insert row after': 'Invoegen na rij',
+	'Delete row': 'Verwijder rij',
+	'Insert column before': 'Invoegen voor kolom',
+	'Insert column after': 'Invoegen na kolom',
+	'Delete column': 'Verwijder kolom',
+	'Merge table cells': 'Samenvoegen tabel cellen',
+	'Split table cell': '',
+	'Toggle display document structure': '',
+	'Table cell properties': '',
+	'Table properties': '',
+	'Toggle full screen mode' : '(toggle) Volledig scherm',
+	'Open file manager'       : 'Open bestandsmanager',
+	'Non breakable space'   : '',
+	'Stop element floating' : '',
+// Dialogs
+	'Warning': 'Waarschuwing',
+	'Properies': 'Opties',
+	'Popup': 'Popup',
+	'Advanced': 'Geavanceerd',
+	'Events': 'Events',
+	'Width': 'Breedte',
+	'Height': 'Hoogte',
+	'Left'   : 'Links',
+	'Center' : 'Midden',
+	'Right'  : 'Rechts',
+	'Border': 'Border',
+	'Background': 'Achtergrond',
+	'Css class': 'Css Class',
+	'Css style': 'Css style',
+	'No': 'Nee',
+	'Title': 'Titel',
+	'Script direction': '',
+	'Language': 'Taal',
+	'Charset': 'Charset',
+	'Not set': 'Niet gezet',
+	'Left to right': 'Links naar rechts',
+	'Right to left': 'Rechts naar link',
+	'In this window': 'In dit venster',
+	'In new window (_blank)': 'In nieuw venster (_blank)',
+	'In new parent window (_parent)': 'In new parent window (_parent)',
+	'In top frame (_top)': 'In top frame (_top)',
+	'URL':'',
+	'Open in': 'Open in',
+// Copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead. ' : 'Deze operatie is uitgeschakeld in jou browser voor beveiligings redenen. Gebruik de snelkoppeling.',
+// Format
+	'Heading 1' : '',
+	'Heading 2' : '',
+	'Heading 3' : '',
+	'Heading 4' : '',
+	'Heading 5' : '',
+	'Heading 6' : '',
+	'Paragraph' : '',
+	'Address' : '',
+	'Preformatted':'',
+// Font size
+	'Small (8pt)': 'Kleinst (8pt)',
+	'Small (10px)': 'Kleiner (10px)',
+	'Small (12pt)': 'Klein (12pt)',
+	'Normal (14pt)': 'Normaal (14pt)',
+	'Large (18pt)': 'Groot (18pt)',
+	'Large (24pt)': 'Groter (24pt)',
+	'Large (36pt)': 'Grootst (36pt)',
+// Bookmark
+	'Bookmark name': '',
+// Link
+	'Link URL': '',
+	'Target': 'Doel',
+	'Select bookmark' : '',
+	'Open link in popup window': '',
+	'URL':'',
+	'Window name': 'Venster naam',
+	'Window size': 'Venster grootte',
+	'Window position': 'Venster Positie',
+	'Open link in popup window': 'Open link in een popup enster',
+	'Location bar': 'Locatie balk',
+	'Menu bar': 'Menu balk',
+	'Toolbar': 'Toolbar',
+	'Scrollbars': 'Scrollbar',
+	'Status bar': 'Status balk',
+	'Resizable': 'Schaalbaar',
+	'Depedent': '',
+	'Add return false': '',
+	'Target MIME type': '',
+	'Relationship page to target (rel)': '',
+	'Relationship target to page (rev)': '',
+	'Tab index':'',
+	'Access key': '',
+// Image
+	'Size': 'Grootte',
+	'Preview': 'Voorbeeld',
+	'Margins': '',
+	'Alt text': 'Alt tekst',
+	'Image URL': 'Afbeelding URL',
+// Table
+	'Spacing'       : '',
+	'Padding'       : '',
+	'Rows'          : '',
+	'Columns'       : '',
+	'Groups'        : '',
+	'Cells'         : '',
+	'Caption'       : '',
+	'Inner borders' : '' ,
+	// table cell
+	'Table cell type' : '',
+	'Data' : '',
+	'Header' : '',
+	'Justify' : '',
+	'Paddings' : '',
+	'Apply to' : 'Toepassen op',
+	'Current cell' : 'Huidige cell',
+	'All cells in row' : 'Alle cellen in rij',
+	'All cells in column' : 'Alle cellen in kolom',
+	'All cells in table' : 'Alle cellen in tabel',
+	// about
+	'About elRTE' : 'Over elRTE',
+	'Version' : 'Versie',
+	'Licence' : 'Licentie',
+	'elRTE is an open-source JavaScript based WYSIWYG HTML-editor.' : 'elRTE is een open-source Javascript gebasseerd WYSIWYG HTML-editor.',
+	'Main goal of the editor - simplify work with text and formating (HTML) on sites, blogs, forums and other online services.' : 'Hoofddoel van de editor - Simpel wekren met tekst en opmaak (HTML) op websites, forums en andere online diensten.',
+	'You can use it in any commercial or non-commercial projects.' : 'Je kan het gebruiken in commerciele en niet commericiele projecten.',
+	'Authors' : 'Auteurs',
+	'Chief developer' : '',
+	'Developer, tech support' : '',
+	'Interface designer' : '',
+	'Spanish localization' : '',
+	'Japanese localization' : '',
+	'Latvian localization' : '',
+	'German localization' : '',
+	'Ukranian localization' : '',
+	'For more information about this software visit the' : 'Voor meer informatie over deze software bezoek de',
+	'elRTE website' : ''
+};
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.pl.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.pl.js
new file mode 100644
index 0000000..ca76fb5
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.pl.js
@@ -0,0 +1,168 @@
+/**
+ * Polish translation
+ * @author Andrzej Borowicz
+ * @version 2010-09-18
+ */
+(function($) {
+elRTE.prototype.i18Messages.pl = {
+	'Editor' : 'Edytor',
+	'Source' : 'Kod źródłowy',
+	// Panel Name
+	'Copy/Pase'      : 'Kopiuj/Wklej',
+	'Undo/Redo'      : 'Cofnij/Ponów',
+	'Text styles'    : 'Style tekstowe',
+	'Colors'         : 'Kolor',
+	'Alignment'      : 'Wyrównanie',
+	'Indent/Outdent' : 'Wcięcie / wysynięcie',
+	'Text format'    : 'Format',
+	'Lists'          : 'Lista',
+	'Misc elements'  : 'Inne elementy',
+	'Links'          : 'Link',
+	'Images'         : 'Obraz',
+	'Media'          : 'Pliki multimedialne',
+	'Tables'         : 'Tabela',
+	'File manager (elFinder)' : 'Menadżer plików (elFinder)',
+	// button names
+	'Save'                    : 'Zapisz',
+	'Copy'                    : 'Wytnij',
+	'Cut'                     : 'Kopiuj',
+	'Paste'                   : 'Wklej',
+	'Paste only text'         : 'Wklej tylko tekst',
+	'Paste formatted text'    : 'Wklej tekst sformatowany',
+	'Clean format'            : 'Wyczyść formaty',
+	'Undo last action'        : 'Cofnij',
+	'Redo previous action'    : 'Ponów',
+	'Bold'                    : 'Pogróbienie',
+	'Italic'                  : 'Kursywa',
+	'Underline'               : 'Podkreślenie',
+	'Strikethrough'           : 'Przekreślenie',
+	'Superscript'             : 'Index górny',
+	'Subscript'               : 'index dolny',
+	'Align left'              : 'Wyrównanie do lewej',
+	'Ailgn right'             : 'Wyrównanie do prawej',
+	'Align center'            : 'Wycentrowanie',
+	'Align full'              : 'Wyjustowanie',
+	'Font color'              : 'Kolor czcionki',
+	'Background color'        : 'Kolor tła',
+	'Indent'                  : 'Wcięcie',
+	'Outdent'                 : 'Wysunięcie',
+	'Format'                  : 'Format',
+	'Font size'               : 'Rozmiar czcionki',
+	'Font'                    : 'Czcionka',
+	'Ordered list'            : 'Lista numerowana',
+	'Unordered list'          : 'Lista',
+	'Horizontal rule'         : 'Linia poziomae',
+	'Blockquote'              : 'Cytat',
+	'Block element (DIV)'     : 'Element blokowy (DIV)',
+	'Link'                    : 'Link',
+	'Delete link'             : 'Usuń link',
+	'Bookmark'                : 'Wstaw/etytuj kotwicę',
+	'Image'                   : 'Obraz',
+	'Table'                   : 'Tabela',
+	'Delete table'            : 'Skasuj Tabelę',
+	'Insert row before'       : 'Wstaw wiers przed',
+	'Insert row after'        : 'Wstaw wiers po',
+	'Delete row'              : 'Skasuj wiersz',
+	'Insert column before'    : 'Wstaw kolumnę Spalte przed',
+	'Insert column after'     : 'Wstaw kolumnę po',
+	'Delete column'           : 'Skasuj kolumnę',
+	'Merge table cells'       : 'Połącz komórki',
+	'Split table cell'        : 'Rozłącz komórki',
+	'Toggle display document structure' : 'Pokaż bloki',
+	'Table cell properties'   : 'Właściwości komórki',
+	'Table properties'        : 'Właściwości tabeli',
+	'Toggle full screen mode' : 'Pełny ekran',
+	'Open file manager'       : 'Menadźer plików',
+	'Non breakable space'     : 'Twarda spacja',
+	'Stop element floating'   : 'Wyłącz otaczanie elementów',
+	// dialogs
+	'Warning' : 'Ostrzeżenie',
+	'Properies' : 'Właściwości',
+	'Popup' : 'okienko Pop-up',
+	'Advanced' : 'Więcej',
+	'Events' : 'Wydarzenia',
+	'Width' : 'Szerokość',
+	'Height' : 'Wysokość',
+	'Left'   : 'Lewy',
+	'Center' : 'Centrum',
+	'Right'  : 'Prawy',
+	'Border' : 'Ramka',
+	'Background' : 'Kolor tła',
+	'Css class' : 'klasa Css',
+	'Css style' : 'styl Css',
+	'No' : 'Nie',
+	'Title' : 'Tytuł',
+	'Script direction' : 'Komentarz sktyptu',
+	'Language' : 'Język',
+	'Charset' : 'Strona kodowa',
+	'Not set' : 'nic',
+	'Left to right' : 'Z lewej do prawej',
+	'Right to left' : 'Z prawej do lewej',
+	'In this window' : 'To samo okno (_self)',
+	'In new window (_blank)' : 'Nowe okno (_blank)',
+	'In new parent window (_parent)' : 'Okno nadrzędne (_parent)',
+	'In top frame (_top)' : 'Górna ramka (_top)',
+	'URL' : '',
+	'Open in' : 'Otwórz w',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'Ta operacja jest zabroniona w twojej przeglądarce z powodu zabezpieczeń. Pomimo to możesz używać klawiszy skrótów.',
+	// format
+	'Heading 1' : 'Nagłówek 1',
+	'Heading 2' : 'Nagłówek 2',
+	'Heading 3' : 'Nagłówek 3',
+	'Heading 4' : 'Nagłówek 4',
+	'Heading 5' : 'Nagłówek 5',
+	'Heading 6' : 'Nagłówek 6',
+	'Paragraph' : 'Paragraf',
+	'Address' : 'Addresse',
+	'Preformatted' : '',
+	// font size
+	'Small (8pt)'   : 'Mały (8pt)',
+	'Small (10px)'  : 'Mały (10pt)',
+	'Small (12pt)'  : 'Mały (12pt)',
+	'Normal (14pt)' : 'Średni (14pt)',
+	'Large (18pt)'  : 'Duży (18pt)',
+	'Large (24pt)'  : 'Duży (24pt)',
+	'Large (36pt)'  : 'Duży (36pt)',
+	// bookmark
+	'Bookmark name' : 'Nazwa kotwicy',
+	// link
+	'Link URL' : '(URL)',
+	'Target' : 'Cel',
+	'Open link in popup window' : 'Otwórz link w nowym oknie',
+	'URL' : '',
+	'Window name' : 'Okienko Pop-up Nazwa',
+	'Window size' : 'Rozmiar',
+	'Window position' : 'Pozycja',
+	'Location bar' : 'pasek adresu',
+	'Menu bar' : 'Pasek menu',
+	'Toolbar' : 'Pasek narzędzi',
+	'Scrollbars' : 'Paski przewijania',
+	'Status bar' : 'pasek statusy',
+	'Resizable' : 'Zmiana rozmiaru okna',
+	'Depedent' : 'Zależne (Netscape)',
+	'Add return false' : 'dodaj (return false)',
+	'Target MIME type' : 'MIME type',
+	'Relationship page to target (rel)' : 'Zależnośc strony do celu (rel)',
+	'Relationship target to page (rev)' : 'Zależnośc strony do strony (rev)',
+	'Tab index' : 'Index tab',
+	'Access key' : 'Klawisz dostepu',
+	// image
+	'Size' : 'Rozmiar',
+	'Preview' : 'Podgląd',
+	'Margins' : 'Marginesy',
+	'Alt text' : 'Text alternatywny',
+	'Image URL' : 'URL',
+	// table
+	'Spacing'       : 'Dystans (spacing)',
+	'Padding'       : 'Dystans (padding)',
+	'Rows'          : 'Wiersz',
+	'Columns'       : 'Kolumna',
+	'Groups'        : 'Grupa',
+	'Cells'         : 'Komórki',
+	'Caption'       : 'Legenda',
+	'Inner borders' : 'Wewnętrzne ramki'
+
+
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ru.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ru.js
new file mode 100644
index 0000000..293bdb2
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ru.js
@@ -0,0 +1,211 @@
+/*
+ * Russian translation
+ * @author Dmitry Levashov <dio@std42.ru>
+ * @version 2010-09-20
+ */
+(function($) {
+elRTE.prototype.i18Messages.ru = {
+	'Editor' : 'Редактор',
+	'Source' : 'Исходник',
+	// названия панелей
+	'Copy/Pase'      : 'Копирование/Вставка',
+	'Undo/Redo'      : 'Отмена/Повтор действия',
+	'Text styles'    : 'Стили текста',
+	'Colors'         : 'Цвета',
+	'Alignment'      : 'Выравнивание',
+	'Indent/Outdent' : 'Отступы',
+	'Text format'    : 'Форматирование',
+	'Lists'          : 'Списки',
+	'Misc elements'  : 'Разные элементы',
+	'Links'          : 'Ссылки',
+	'Images'         : 'Изображения',
+	'Media'          : 'Media файлы',
+	'Tables'         : 'Таблицы',
+	'File manager (elFinder)' : 'Файловый менеджер (elFinder)',
+	// названия кнопок
+	'About this software'     : 'О программе',
+	'Save'                    : 'Сохранить',
+	'Copy'                    : 'Копировать',
+	'Cut'                     : 'Вырезать',
+	'Paste'                   : 'Вставить',
+	'Paste only text'         : 'Вставить только текст',
+	'Paste formatted text'    : 'Вставить форматированый текст',
+	'Clean format'            : 'Удалить форматирование',
+	'Undo last action'        : 'Отменить действие',
+	'Redo previous action'    : 'Повторить действие ',
+	'Bold'                    : 'Жирный',
+	'Italic'                  : 'Курсив',
+	'Underline'               : 'Подчеркнутый',
+	'Strikethrough'           : 'Перечеркнутый',
+	'Superscript'             : 'Надстрочный текст',
+	'Subscript'               : 'Подстрочный текст',
+	'Align left'              : 'Выровнять налево',
+	'Ailgn right'             : 'Выровнять направо',
+	'Align center'            : 'Выровнять по центру',
+	'Align full'              : 'Выровнять по краям',
+	'Font color'              : 'Цвет шрифта',
+	'Background color'        : 'Цвет заливки',
+	'Indent'                  : 'Увеличить отступ',
+	'Outdent'                 : 'Уменьшить отступ',
+	'Format'                  : 'Форматирование',
+	'Font size'               : 'Размер шрифта',
+	'Font'                    : 'Шрифт',
+	'Ordered list'            : 'Нумерованый список',
+	'Unordered list'          : 'Ненумерованый список',
+	'Horizontal rule'         : 'Горизонтальная линия',
+	'Blockquote'              : 'Цитата',
+	'Block element (DIV)'     : 'Блочный элемент (DIV)',
+	'Link'                    : 'Ссылка',
+	'Delete link'             : 'Удалить ссылку',
+	'Bookmark'                : 'Закладка',
+	'Image'                   : 'Изображение',
+	'Table'                   : 'Таблица',
+	'Delete table'            : 'Удалить таблицу',
+	'Insert row before'       : 'Вставить ряд до',
+	'Insert row after'        : 'Вставить ряд после',
+	'Delete row'              : 'Удалить ряд',
+	'Insert column before'    : 'Вставить колонку до',
+	'Insert column after'     : 'Вставить колонку после',
+	'Delete column'           : 'Удалить колонку',
+	'Merge table cells'       : 'Склеить ячейки',
+	'Split table cell'        : 'Разделить ячейку',
+	'Toggle display document structure' : 'Показать структуру документа/невидимые элементы',
+	'Table cell properties'   : 'Свойство ячейки',
+	'Table properties'        : 'Свойство таблицы',
+	'Toggle full screen mode' : 'Во весь экран',
+	'Open file manager'       : 'Открыть файловый менеджер',
+	'Non breakable space'     : 'Неразрывный пробел',
+	'Stop element floating'   : 'Отключить обтекание элементов текстом',
+	// dialogs
+	'Warning' : 'Внимание',
+	'Properies' : 'Свойства',
+	'Popup' : 'Новое окно',
+	'Advanced' : 'Дополнительно',
+	'Events' : 'События',
+	'Width' : 'Ширина',
+	'Height' : 'Высота',
+	'Left'   : 'Слева',
+	'Center' : 'По центру',
+	'Right'  : 'Справа',
+	'Border' : 'Бордюр',
+	'Background' : 'Фон',
+	'Css class' : 'Css класс',
+	'Css style' : 'Css cтиль',
+	'No' : 'Нет',
+	'Title' : 'Заголовок',
+	'Script direction' : 'Направление письма',
+	'Language' : 'Язык',
+	'Charset' : 'Кодировка',
+	'Not set' : 'Не установлено',
+	'Left to right' : 'Слево направо',
+	'Right to left' : 'Справа налево',
+	'In this window' : 'В этом окне',
+	'In new window (_blank)' : 'В новом окне (_blank)',
+	'In new parent window (_parent)' : 'В родительском окне (_parent)',
+	'In top frame (_top)' : 'В верхнем фрейме (_top)',
+	'URL' : '',
+	'Open in' : 'Открыть',
+	'Open file manger' : 'Открыть файловый менеджер',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'Действие запрещено в вашем браузере по соображениям безопастности. Используйте сочетание клавиш',
+	// format
+	'Heading 1' : 'Заголовок 1',
+	'Heading 2' : 'Заголовок 2',
+	'Heading 3' : 'Заголовок 3',
+	'Heading 4' : 'Заголовок 4',
+	'Heading 5' : 'Заголовок 5',
+	'Heading 6' : 'Заголовок 6',
+	'Paragraph' : 'Параграф',
+	'Address' : 'Адрес',
+	'Preformatted' : '',
+	// font size
+	'Small (8pt)'   : 'Мелкий (8pt)',
+	'Small (10px)'  : 'Маленький (10px)',
+	'Small (12pt)'  : 'Небольшой (12pt)',
+	'Normal (14pt)' : 'Обычный (14pt)',
+	'Large (18pt)'  : 'Большой (18pt)',
+	'Large (24pt)'  : 'Крупный (24pt)',
+	'Large (36pt)'  : 'Огромный (36pt)',
+	// bookmark
+	'Bookmark name' : 'Имя закладки',
+	// link
+	'Link URL' : 'Адрес ссылки (URL)',
+	'Target' : 'Цель',
+	'Select bookmark' : 'Выбрать закладку',
+	'Open link in popup window' : 'Открыть ссылку во всплывающем окне',
+	'URL' : '',
+	'Window name' : 'Название окна',
+	'Window size' : 'Размер окна',
+	'Window position' : 'Позиция окна',
+	'Location bar' : 'Панель локации',
+	'Menu bar' : 'Панель меню',
+	'Toolbar' : 'Панель инструментов',
+	'Scrollbars' : 'Полосы прокрутки',
+	'Status bar' : 'Строка состояния',
+	'Resizable' : 'Изменение размера',
+	'Depedent' : 'Зависимый (Netscape)',
+	'Add return false' : 'Добавить (return false)',
+	'Target MIME type' : 'MIME type цели',
+	'Relationship page to target (rel)' : 'Отношение страницы к цели (rel)',
+	'Relationship target to page (rev)' : 'Отношение цели к странице (rev)',
+	'Tab index' : '',
+	'Access key' : 'Клавиша доступа',
+	// image
+	'Size' : 'Размер',
+	'Preview' : 'Предварительный просмотр',
+	'Margins' : 'Отступы',
+	'Alt text' : 'Описание (Alt)',
+	'Image URL' : 'URL',
+	// table
+	'Spacing'       : 'Промежуток (spacing)',
+	'Padding'       : 'Отступ (padding)',
+	'Rows'          : 'Строки',
+	'Columns'       : 'Колонки',
+	'Groups'        : 'Группы',
+	'Cells'         : 'Ячейки',
+	'Caption'       : 'Заголовок таблицы',
+	'Inner borders' : 'Внутренний бордюр',
+	// table cell
+	'Table cell type' : 'Тип ячейки',
+	'Data' : 'Данные',
+	'Header' : 'Заголовок',
+	'Justify' : 'По краям',
+	'Paddings' : 'Отступы',
+	'Apply to' : 'Применить к',
+	'Current cell' : 'Выбранная ячейка',
+	'All cells in row' : 'Все ячейки в ряду',
+	'All cells in column' : 'Все ячейки в столбце',
+	'All cells in table' : 'Все ячейки таблицы',
+	// about
+	'About elRTE' : 'О редакторе elRTE',
+	'Version' : 'Версия',
+	'Licence' : 'Лицензия',
+	'elRTE is an open-source JavaScript based WYSIWYG HTML-editor.' : 'elRTE - это свободный WYSIWYG редактор для сайтов и систем управления контентом (CMS), написанный на JavaScript.',
+	'Main goal of the editor - simplify work with text and formating (HTML) on sites, blogs, forums and other online services.' : 'Основная цель редактора - максимально упростить работу с текстом и разметкой (HTML) на сайтах, блогах, форумах и прочих online сервисах.',
+	'You can use it in any commercial or non-commercial projects.' : 'Вы можете использовать его в любых коммерческих и некоммерческих проектах.',
+	'Authors' : 'Авторы',
+	'Chief developer' : 'Ведущий разработчик',
+	'Developer, tech support' : 'Разработчик, техническая поддержка',
+	'Developer' : 'Разработчик',
+	'Interface designer' : 'Дизайнер интерфейса',
+	'Spanish localization' : 'Испанская локализация',
+	'Czech localization' : 'Чешская локализация',
+	'Japanese localization' : 'Японская локализация',
+	'Latvian localization' : 'Латышская локализация',
+	'German localization' : 'Немецкая локализация',
+	'Ukranian localization' : 'Украинская локализация',
+	'Persian (farsi) localization' : 'Персидская (фарси) локализация',
+	'Arabic localization' : 'Арабская локализация',
+	'RTL support' : 'Поддержка RTL',
+	'French localization' : 'Французская локализация',
+	'Dutch localization' : 'Голландская локализация',
+	'Hungarian localization' : 'Венгерская локализация',
+	'Polish localization' : 'Польская локализация',
+	'Italian localization' : 'Итальянская локализация',
+	'Traditional Chinese localization' : 'Китайская (традиционная) локализация',
+	'For more information about this software visit the' : 'Подробная информация и форум тех. поддержки',
+	'elRTE website' : 'на сайте elRTE'
+
+
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ua.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ua.js
new file mode 100644
index 0000000..bd6bcc8
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.ua.js
@@ -0,0 +1,201 @@
+/*
+ * Ukranian translation
+ * @author Artem Vasilyev
+ * @version 2010-09-18
+ */
+(function($) {
+elRTE.prototype.i18Messages.ua = {
+	'Editor' : 'Редактор',
+	'Source' : 'Джерело',
+// Назви панелей
+	'Copy / Pase' : 'Копіювання / Вставка',
+	'Undo / Redo' : 'Скасувати / Повтор дії',
+	'Text styles' : 'Стилі тексту',
+	'Colors': 'Кольори',
+	'Alignment': 'Вирівнювання',
+	'Indent / Outdent': 'Відступи',
+	'Text format': 'Форматування',
+	'Lists': 'Списки',
+	'Misc elements': 'Різні елементи',
+	'Links': 'Посилання',
+	'Images': 'Малюнки',
+	'Media': 'Media файли',
+	'Tables': 'Таблиці',
+	'File manager (elFinder)' : 'Файловый менеджер (elFinder)',
+// Назви кнопок
+	'About this software'     : 'О программе',
+	'Save': 'Зберегти',
+	'Copy': 'Копіювати',
+	'Cut': 'Вирізати',
+	'Paste': 'Вставити',
+	'Paste only text': 'Вставити тільки текст',
+	'Paste formatted text': 'Вставити форматування тексту',
+	'Clean format': 'Видалити форматування',
+	'Undo last action': 'Скасувати дію',
+	'Redo previous action': 'Повторити дію',
+	'Bold': 'Товстий',
+	'Italic': 'Курсив',
+	'Underline': 'Підкреслений',
+	'Strikethrough': 'Перекреслений',
+	'Superscript': 'Верхній регістр',
+	'Subscript': 'Нижній регістр',
+	'Align left': 'Вирівняти ліворуч',
+	'Ailgn right': 'Вирівняти праворуч',
+	'Align center': 'Вирівняти по центру',
+	'Align full': 'Вирівняти по краях',
+	'Font color': 'Колір тексту',
+	'Background color': 'Колір залікві',
+	'Indent': 'Збільшити відступ',
+	'Outdent': 'Зменшити відступ',
+	'Format': 'Форматування',
+	'Font size': 'Розмір шрифту',
+	'Font': 'Шрифт',
+	'Ordered list': 'Нумерований список',
+	'Unordered list': 'Ненумерований список',
+	'Horizontal rule': 'Горизонтальна лінія',
+	'Blockquote': 'Цитата',
+	'Block element (DIV)'  : 'Блочный элемент (DIV)',
+	'Link': 'Посилання',
+	'Delete link': 'Видалити посилання',
+	'Bookmark': 'Закладка',
+	'Image': 'Зображення',
+	'Table': 'Таблиця',
+	'Delete table': 'Видалити таблицю',
+	'Insert row before': 'Вставити ряд до',
+	'Insert row after': 'Вставити ряд після',
+	'Delete row': 'Видалити ряд',
+	'Insert column before': 'Вставити колонку до',
+	'Insert column after': 'Вставити колонку після',
+	'Delete column': 'Видалити колонку',
+	'Merge table cells': 'склеїти осередку',
+	'Split table cell': 'Розділити клітинку',
+	'Toggle display document structure': 'Показати структуру документа / невидимі елементи',
+	'Table cell properties': 'Властивість клітинку',
+	'Table properties': 'Властивість таблиці',
+	'Toggle full screen mode' : 'Во весь экран',
+	'Open file manager'       : 'Открыть файловый менеджер',
+	'Non breakable space'   : 'Неразрывный пробел',
+	'Stop element floating' : 'Отключить обтекание элементов текстом',
+//Dialogs
+	'Warning': 'Увага',
+	'Properies': 'Властивості',
+	'Popup': 'Нове вікно',
+	'Advanced': 'Більше',
+	'Events': 'Події',
+	'Width': 'Ширина',
+	'Height': 'Висота',
+	'Left'   : 'Слева',
+	'Center' : 'По центру',
+	'Right'  : 'Справа',
+	'Border': 'Бордюр',
+	'Background': 'Фон',
+	'Css class': 'Css клас',
+	'Css style': 'Css style',
+	'No': 'Ні',
+	'Title': 'Заголовок',
+	'Script direction': 'Направлення письма',
+	'Language': 'Мова',
+	'Charset': 'Кодування',
+	'Not set': 'Не встановлено',
+	'Left to right': 'Зліва направо',
+	'Right to left': 'Справа наліво',
+	'In this window': 'У цьому вікні',
+	'In new window (_blank)': 'У новому вікні (_blank)',
+	'In new parent window (_parent)': 'У батьківському вікні (_parent)',
+	'In top frame (_top)': 'У верхньому фреймі (_top)',
+	'URL':'',
+	'Open in': 'Відкрити',
+// Copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead. ' : 'Дія заборонено у вашому браузері з міркувань безпеки. Використовуйте клавіші ',
+// Format
+	'Heading 1' : 'Заголовок 1',
+	'Heading 2' : 'Заголовок 2',
+	'Heading 3' : 'Заголовок 3',
+	'Heading 4' : 'Заголовок 4',
+	'Heading 5' : 'Заголовок 5',
+	'Heading 6' : 'Заголовок 6',
+	'Paragraph' : 'Параграф',
+	'Address' : 'Адрес',
+	'Preformatted':'',
+// Font size
+	'Small (8pt)': 'Дрібний (8pt)',
+	'Small (10px)': 'Маленький (10px)',
+	'Small (12pt)': 'Невеликий (12pt)',
+	'Normal (14pt)': 'Звичайний (14pt)',
+	'Large (18pt)': 'Великий (18pt)',
+	'Large (24pt)': 'Крупний (24pt)',
+	'Large (36pt)': 'Величезний (36pt)',
+// Bookmark
+	'Bookmark name': 'Ім&rsquo;я закладки',
+// Link
+	'Link URL': 'Адреса ссиклі (URL)',
+	'Target': 'Мета',
+	'Select bookmark' : 'Выбрать закладку',
+	'Open link in popup window': 'Відкрити посилання у спливаючому вікні',
+	'URL':'',
+	'Window name': 'Назва вікна',
+	'Window size': 'Розмір вікна',
+	'Window position': 'Позиція вікна',
+	'Open link in popup window': 'Відкрити посилання у спливаючому вікні',
+	'Window name': 'Назва вікна',
+	'Window size': 'Розмір вікна',
+	'Window position': 'Позиція вікна',
+	'Location bar': 'Панель локації',
+	'Menu bar': 'Панель меню',
+	'Toolbar': 'Панель інструментів',
+	'Scrollbars': 'Смуги прокрутки',
+	'Status bar': 'Рядок стану',
+	'Resizable': 'Зміна розміру',
+	'Depedent': 'Залежний (Netscape)',
+	'Add return false': 'Додати (return false)',
+	'Target MIME type': 'MIME type цілі',
+	'Relationship page to target (rel)': 'Ставлення сторінки до мети (rel) ',
+	'Relationship target to page (rev)': 'Відношення мети до сторінки (rev)',
+	'Tab index':'',
+	'Access key': 'Клавіша доступу',
+// Image
+	'Size': 'Розмір',
+	'Preview': 'Попередній перегляд',
+	'Margins': 'Відступи',
+	'Alt text': 'Опис (Alt)',
+	'Image URL': 'URL',
+// Table
+	'Spacing'       : 'Проміжок (spacing)',
+	'Padding'       : 'Відступ (padding)',
+	'Rows'          : 'Рядок ',
+	'Columns'       : 'Колонки',
+	'Groups'        : 'Группы',
+	'Cells'         : 'Ячейки',
+	'Caption'       : 'Заголовок таблиці',
+	'Inner borders' : 'Внутрішній бордюр' ,
+	// table cell
+	'Table cell type' : 'Тип ячейки',
+	'Data' : 'Данные',
+	'Header' : 'Заголовок',
+	'Justify' : 'По краям',
+	'Paddings' : 'Отступы',
+	'Apply to' : 'Применить к',
+	'Current cell' : 'Выбранная ячейка',
+	'All cells in row' : 'Все ячейки в ряду',
+	'All cells in column' : 'Все ячейки в столбце',
+	'All cells in table' : 'Все ячейки таблицы',
+	// about
+	'About elRTE' : 'О редакторе elRTE',
+	'Version' : 'Версия',
+	'Licence' : 'Лицензия',
+	'elRTE is an open-source JavaScript based WYSIWYG HTML-editor.' : 'elRTE - это свободный WYSIWYG редактор для сайтов и систем управления контентом (CMS), написанный на JavaScript.',
+	'Main goal of the editor - simplify work with text and formating (HTML) on sites, blogs, forums and other online services.' : 'Основная цель редактора - максимально упростить работу с текстом и разметкой (HTML) на сайтах, блогах, форумах и прочих online сервисах.',
+	'You can use it in any commercial or non-commercial projects.' : 'Вы можете использовать его в любых коммерческих и некоммерческих проектах.',
+	'Authors' : 'Авторы',
+	'Chief developer' : 'Ведущий разработчик',
+	'Developer, tech support' : 'Разработчик, техническая поддержка',
+	'Interface designer' : 'Дизайнер интерфейса',
+	'Spanish localization' : 'Испанская локализация',
+	'Japanese localization' : 'Японская локализация',
+	'Latvian localization' : 'Латвийская локализация',
+	'German localization' : 'Немецкая локализация',
+	'Ukranian localization' : 'Украинская локализация',
+	'For more information about this software visit the' : 'Подробная информация и форум тех. поддержки',
+	'elRTE website' : 'на сайте elRTE'
+};
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.zh_TW.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.zh_TW.js
new file mode 100644
index 0000000..1a4765d
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/i18n/elrte.zh_TW.js
@@ -0,0 +1,167 @@
+/**
+ * Traditional Chinese translation
+ * @author Tad <tad0616@gmail.com>
+ * @version 2010-09-18
+ */
+(function($) {
+elRTE.prototype.i18Messages.zh_TW = {
+	'Editor' : '所見即所得',
+	'Source' : '原始碼',
+	// Panel Name
+	'Copy/Pase'      : '複製/貼上',
+	'Undo/Redo'      : '復原/重做',
+	'Text styles'    : '文字樣式',
+	'Colors'         : '顏色',
+	'Alignment'      : '對齊',
+	'Indent/Outdent' : '縮排/凸排',
+	'Text format'    : '文字格式',
+	'Lists'          : '清單',
+	'Misc elements'  : '其他元件',
+	'Links'          : '連結',
+	'Images'         : '圖檔',
+	'Media'          : '多媒體',
+	'Tables'         : '表格',
+	'File manager (elFinder)' : '檔案管理',
+	// button names
+	'Save'                    : '儲存',
+	'Copy'                    : '複製',
+	'Cut'                     : '剪下',
+	'Paste'                   : '貼上',
+	'Paste only text'         : '貼上純文字',
+	'Paste formatted text'    : '貼上已格式化文字',
+	'Clean format'            : '清除格式',
+	'Undo last action'        : '復原最後一個動作',
+	'Redo previous action'    : '重做上一個動作',
+	'Bold'                    : '粗體',
+	'Italic'                  : '斜體',
+	'Underline'               : '底線',
+	'Strikethrough'           : '刪除線',
+	'Superscript'             : '上標',
+	'Subscript'               : '下標',
+	'Align left'              : '靠左',
+	'Ailgn right'             : '靠右',
+	'Align center'            : '置中',
+	'Align full'              : '左右對齊',
+	'Font color'              : '文字顏色',
+	'Background color'        : '背景顏色',
+	'Indent'                  : '縮排',
+	'Outdent'                 : '凸排',
+	'Format'                  : '格式',
+	'Font size'               : '字型大小',
+	'Font'                    : '字型',
+	'Ordered list'            : '編號',
+	'Unordered list'          : '項目符號',
+	'Horizontal rule'         : '水平線',
+	'Blockquote'              : '引用',
+	'Block element (DIV)'     : '區域元件 (DIV)',
+	'Link'                    : '連結',
+	'Delete link'             : '移除連結',
+	'Bookmark'                : '書籤',
+	'Image'                   : '插圖',
+	'Table'                   : '表格',
+	'Delete table'            : '刪除表格',
+	'Insert row before'       : '上方新增一列',
+	'Insert row after'        : '下方新增一列',
+	'Delete row'              : '刪除列',
+	'Insert column before'    : '左邊新增一欄',
+	'Insert column after'     : '右邊新增一欄',
+	'Delete column'           : '刪除欄',
+	'Merge table cells'       : '合併儲存格',
+	'Split table cell'        : '分割儲存格',
+	'Toggle display document structure' : '切換顯示文件結構',
+	'Table cell properties'   : '表格儲存格屬性',
+	'Table properties'        : '表格屬性',
+	'Toggle full screen mode' : '切換為全螢幕',
+	'Open file manager'       : '開啟檔案管理',
+	'Non breakable space'     : '不斷行空白',
+	'Stop element floating'   : '停止元件浮動屬性',
+	// dialogs
+	'Warning' : '警告',
+	'Properies' : '屬性',
+	'Popup' : '跳出框',
+	'Advanced' : '進階',
+	'Events' : '事件',
+	'Width' : '寬度',
+	'Height' : '高度',
+	'Left'   : '靠左',
+	'Center' : '置中',
+	'Right'  : '靠右',
+	'Border' : '邊框',
+	'Background' : '背景',
+	'Css class' : 'CSS類別',
+	'Css style' : 'CSS樣式',
+	'No' : '不設置',
+	'Title' : '標題',
+	'Script direction' : '語言方向',
+	'Language' : '語言',
+	'Charset' : '字元編碼',
+	'Not set' : '不設定',
+	'Left to right' : '左至右',
+	'Right to left' : '右到左',
+	'In this window' : '在此視窗',
+	'In new window (_blank)' : '在新視窗 (_blank)',
+	'In new parent window (_parent)' : '在父視窗 (_parent)',
+	'In top frame (_top)' : '跳出框架 (_top)',
+	'URL' : '網址',
+	'Open in' : '開啟至',
+	// copy
+	'This operation is disabled in your browser on security reason. Use shortcut instead.' : '基於安全理由，此動作無法在瀏覽器中進行，請直接按 Ctrl+V 試試。',
+	// format
+	'Heading 1' : '標題 1',
+	'Heading 2' : '標題 2',
+	'Heading 3' : '標題 3',
+	'Heading 4' : '標題 4',
+	'Heading 5' : '標題 5',
+	'Heading 6' : '標題 6',
+	'Paragraph' : '段落',
+	'Address' : '位址',
+	'Preformatted' : '固定格式',
+	// font size
+	'Small (8pt)'   : '極小 (8pt)',
+	'Small (10px)'  : '更小 (10px)',
+	'Small (12pt)'  : '小 (12pt)',
+	'Normal (14pt)' : '中 (14pt)',
+	'Large (18pt)'  : '大 (18pt)',
+	'Large (24pt)'  : '更大 (24pt)',
+	'Large (36pt)'  : '極大 (36pt)',
+	// bookmark
+	'Bookmark name' : '書籤名稱',
+	// link
+	'Link URL' : '連結位址',
+	'Target' : '目標',
+	'Open link in popup window' : '在跳出視窗中開啟',
+	'Window name' : '視窗名稱',
+	'Window size' : '視窗尺寸',
+	'Window position' : '視窗位置',
+	'Location bar' : '位址列',
+	'Menu bar' : '選單列',
+	'Toolbar' : '工具列',
+	'Scrollbars' : '捲軸',
+	'Status bar' : '狀態列',
+	'Resizable' : '可否調整尺寸',
+	'Depedent' : '相關 (Netscape)',
+	'Add return false' : '加入傳回false (return false)',
+	'Target MIME type' : '目標物的MIME類型',
+	'Relationship page to target (rel)' : '定義連結的起點文件與目標文件之間的關係 (rel)',
+	'Relationship target to page (rev)' : '定義連結的起點文件與目標文件之間的反向關係 (rev)',
+	'Tab index' : '定位索引',
+	'Access key' : '存取鍵',
+	// image
+	'Size' : '尺寸',
+	'Preview' : '預覽',
+	'Margins' : '邊界',
+	'Alt text' : '提示文字',
+	'Image URL' : '圖檔網址',
+	// table
+	'Spacing'       : '儲存格間距 (Spacing)',
+	'Padding'       : '儲存格內距 (Padding)',
+	'Rows'          : '列',
+	'Columns'       : '欄',
+	'Groups'        : '儲存格群組',
+	'Cells'         : '儲存格',
+	'Caption'       : '表格標題',
+	'Inner borders' : '框線'
+
+
+}
+})(jQuery);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/jquery-1.4.2.min.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/jquery-1.4.2.min.js
new file mode 100644
index 0000000..7c24308
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/jquery-1.4.2.min.js
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/jquery-ui-1.8.5.custom.min.js b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/jquery-ui-1.8.5.custom.min.js
new file mode 100644
index 0000000..ce5691a
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/jquery-ui-1.8.5.custom.min.js
@@ -0,0 +1,284 @@
+/*!
+ * jQuery UI 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.5",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,
+NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,
+"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");
+if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"));if(!isNaN(b)&&b!=0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind("mousedown.ui-disableSelection selectstart.ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f,
+"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c.style(this,h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c.style(this,
+h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}});
+c(function(){var a=document.createElement("div"),b=document.body;c.extend(a.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.appendChild(a).offsetHeight===100;b.removeChild(a).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,
+d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);
+;/*!
+ * jQuery UI Widget 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,
+a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)===
+"_")return h;e?this.each(function(){var g=b.data(this,a);if(!g)throw"cannot call methods on "+a+" prior to initialization; attempted to call method '"+d+"'";if(!b.isFunction(g[d]))throw"no such method '"+d+"' for "+a+" widget instance";var i=g[d].apply(g,f);if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",
+widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f,h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",
+false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+;/*!
+ * jQuery UI Mouse 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */
+(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&&
+this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();
+return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&
+this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-
+a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+;/*
+ * jQuery UI Position 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Position
+ */
+(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.scrollTo&&d.document){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j=
+{top:b.of.pageY,left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/
+2;if(b.at[1]==="bottom")j.top+=k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+parseInt(c.curCSS(this,"marginRight",true))||0,w=m+q+parseInt(c.curCSS(this,"marginBottom",true))||0,i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]===
+"center")i.top-=m/2;i.left=parseInt(i.left);i.top=parseInt(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();
+b.left=d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];
+b.left+=a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=
+c(b),g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);
+;/*
+ * jQuery UI Draggable 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Draggables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper==
+"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b=
+this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-
+this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();
+d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||
+this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode)return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,
+b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==
+a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||
+0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],
+this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-
+(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment==
+"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&
+a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),
+10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],
+this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():
+f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])e=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+
+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;e=this.originalPageX+
+Math.round((e-this.originalPageX)/b.grid[0])*b.grid[0];e=this.containment?!(e-this.offset.click.left<this.containment[0]||e-this.offset.click.left>this.containment[2])?e:!(e-this.offset.click.left<this.containment[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-
+this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=
+this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b,c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.5"});d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var g=d.data(this,"sortable");
+if(g&&!g.options.disabled){c.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;
+c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=
+1;this.instance.currentItem=d(f).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;
+this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top;c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=
+this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","iframeFix",{start:function(){var a=
+d(this).data("draggable").options;d(a.iframeFix===true?"iframe":a.iframeFix).each(function(){d('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})},stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;
+if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!=
+"HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop-c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-
+b.overflowOffset.left<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()-
+c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,a)}});d.ui.plugin.add("draggable","snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,
+width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,g=b.offset.left,n=g+c.helperProportions.width,m=b.offset.top,o=m+c.helperProportions.height,h=c.snapElements.length-1;h>=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e<g&&g<k+e&&j-e<m&&m<l+e||i-e<g&&g<k+e&&j-e<o&&o<l+e||i-e<n&&n<k+e&&j-e<m&&m<l+e||i-e<n&&n<k+e&&j-e<o&&
+o<l+e){if(f.snapMode!="inner"){var p=Math.abs(j-o)<=e,q=Math.abs(l-m)<=e,r=Math.abs(i-n)<=e,s=Math.abs(k-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j-c.helperProportions.height,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:l,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k}).left-c.margins.left}var t=
+p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(j-m)<=e;q=Math.abs(l-o)<=e;r=Math.abs(i-g)<=e;s=Math.abs(k-n)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:l-c.helperProportions.height,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[h].snapping&&
+(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=p||q||r||s||t}else{c.snapElements[h].snapping&&c.options.snap.release&&c.options.snap.release.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"),
+10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});d.ui.plugin.add("draggable","zIndex",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery);
+;/*
+ * jQuery UI Droppable 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Droppables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.draggable.js
+ */
+(function(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this);
+a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&
+this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
+this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=
+d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
+a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.5"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height;
+switch(c){case "fit":return i<=e&&g<=k&&j<=f&&h<=l;case "intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case "pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case "touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>=
+i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!=
+"none";if(c[f].visible){c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight};e=="mousedown"&&c[f]._activate.call(c[f],b)}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||
+a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance);if(c=!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=
+d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})}}})(jQuery);
+;/*
+ * jQuery UI Resizable 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,
+_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),
+top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=
+this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",
+nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==
+String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection();
+this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};
+if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),
+d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=
+this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:
+this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",
+b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;
+f={width:c.size.width-(f?0:c.sizeDiff.width),height:c.size.height-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",
+b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=
+a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=l(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=l(b.width)&&a.minWidth&&a.minWidth>b.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,
+k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),
+c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)||0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=
+this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+
+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,
+arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,
+{version:"1.8.5"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,
+function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=
+(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=
+false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-
+a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",
+b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top",
+"Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,
+f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=
+a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+
+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&
+e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",
+height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=
+d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery);
+;/*
+ * jQuery UI Selectable 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
+selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
+c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting",
+c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d=
+this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");
+a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&
+!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=
+e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.5"})})(jQuery);
+;/*
+ * jQuery UI Dialog 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *  jquery.ui.button.js
+ *	jquery.ui.draggable.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.position.js
+ *	jquery.ui.resizable.js
+ */
+(function(c,j){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",of:window,collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");
+if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||"&#160;",f=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog",
+"aria-labelledby":f}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var e=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);
+return false}).appendTo(e);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",f).html(d).prependTo(e);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;e.find("*").add(e).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&
+g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");
+b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,f=d.options;if(f.modal&&!a||!f.stack&&!f.modal)return d._trigger("focus",b);if(f.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=
+f.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);
+a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(f){if(f.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),e=g.filter(":first");g=g.filter(":last");if(f.target===g[0]&&!f.shiftKey){e.focus(1);return false}else if(f.target===e[0]&&f.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,
+f=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(f);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(e,h){h=c.isFunction(h)?{click:h,text:e}:h;e=c("<button></button>",h).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&e.button()});f.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(e){return{position:e.position,
+offset:e.offset}}var b=this,d=b.options,f=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",e,a(h))},drag:function(e,h){b._trigger("drag",e,a(h))},stop:function(e,h){d.position=[h.position.left-f.scrollLeft(),h.position.top-f.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);
+b._trigger("dragStop",e,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}a=a===j?this.options.resizable:a;var d=this,f=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:d._minHeight(),
+handles:a,start:function(e,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",e,b(h))},resize:function(e,h){d._trigger("resize",e,b(h))},stop:function(e,h){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();d._trigger("resizeStop",e,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,
+a.height)},_position:function(a){var b=[],d=[0,0],f;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,e){if(+b[g]===b[g]){d[g]=b[g];b[g]=e}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a);
+f||this.uiDialog.hide()},_setOption:function(a,b){var d=this,f=d.uiDialog,g=f.is(":data(resizable)"),e=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);e=true;break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":f.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case "draggable":b?
+d._makeDraggable():f.draggable("destroy");break;case "height":e=true;break;case "maxHeight":g&&f.resizable("option","maxHeight",b);e=true;break;case "maxWidth":g&&f.resizable("option","maxWidth",b);e=true;break;case "minHeight":g&&f.resizable("option","minHeight",b);e=true;break;case "minWidth":g&&f.resizable("option","minWidth",b);e=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&f.resizable("destroy");g&&typeof b==="string"&&f.resizable("option","handles",b);!g&&b!==false&&
+d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||"&#160;"));break;case "width":e=true;break}c.Widget.prototype._setOption.apply(d,arguments);e&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:c.support.minHeight?"auto":Math.max(a.minHeight-
+b,0)}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.5",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),
+function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=
+(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,
+b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<
+b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,function(){a=a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
+;/*
+ * jQuery UI Tabs 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(a,e){if(a=="selected")this.options.collapsible&&
+e==this.options.selected||this.select(e);else{this.options[a]=e;this._tabify()}},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[a].concat(d.makeArray(arguments)))},_ui:function(a,e){return{tab:a,panel:e,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a=
+d(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(a){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var b=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]||
+(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))b.panels=b.panels.add(b._sanitizeSelector(i));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=b._tabId(f);f.href="#"+i;f=d("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(b.panels[g-1]||b.list);f.data("destroy.tabs",true)}b.panels=b.panels.add(f)}else c.disabled.push(g)});if(a){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
+this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(b._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected=
+this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return b.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
+if(c.selected>=0&&this.anchors.length){this.panels.eq(c.selected).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");b.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[c.selected],b.panels[c.selected]))});this.load(c.selected)}d(window).bind("unload",function(){b.lis.add(b.anchors).unbind(".tabs");b.lis=b.anchors=b.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[c.collapsible?"addClass":
+"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);a=0;for(var j;j=this.lis[a];a++)d(j)[d.inArray(a,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs",
+function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);b._trigger("show",
+null,b._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");b._trigger("show",null,b._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){b.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);b.element.dequeue("tabs")})}:function(g,f){b.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");b.element.dequeue("tabs")};this.anchors.bind(c.event+".tabs",
+function(){var g=this,f=d(g).closest("li"),i=b.panels.filter(":not(.ui-tabs-hide)"),l=d(b._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||b.panels.filter(":animated").length||b._trigger("select",null,b._ui(this,l[0]))===false){this.blur();return false}c.selected=b.anchors.index(this);b.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=-1;c.cookie&&b._cookie(c.selected,c.cookie);b.element.queue("tabs",
+function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&b._cookie(c.selected,c.cookie);b.element.queue("tabs",function(){r(g,l)});b.load(b.anchors.index(this));this.blur();return false}c.cookie&&b._cookie(c.selected,c.cookie);if(l.length){i.length&&b.element.queue("tabs",function(){s(g,i)});b.element.queue("tabs",function(){r(g,l)});b.load(b.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",
+function(){return false})},_getIndex:function(a){if(typeof a=="string")a=this.anchors.index(this.anchors.filter("[href$="+a+"]"));return a},destroy:function(){var a=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=
+e;var b=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){b.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(a,e,b){if(b===p)b=this.anchors.length;
+var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,a).replace(/#\{label\}/g,e));a=!a.indexOf("#")?a.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=d("#"+a);j.length||(j=d(h.panelTemplate).attr("id",a).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(b>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[b]);
+j.insertBefore(this.panels[b])}h.disabled=d.map(h.disabled,function(k){return k>=b?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[b],this.panels[b]));return this},remove:function(a){a=this._getIndex(a);var e=this.options,b=this.lis.eq(a).remove(),c=this.panels.eq(a).remove();
+if(b.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(a+(a+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=a}),function(h){return h>=a?--h:h});this._tabify();this._trigger("remove",null,this._ui(b.find("a")[0],c[0]));return this},enable:function(a){a=this._getIndex(a);var e=this.options;if(d.inArray(a,e.disabled)!=-1){this.lis.eq(a).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(b){return b!=a});this._trigger("enable",null,
+this._ui(this.anchors[a],this.panels[a]));return this}},disable:function(a){a=this._getIndex(a);var e=this.options;if(a!=e.selected){this.lis.eq(a).addClass("ui-state-disabled");e.disabled.push(a);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))}return this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;this.anchors.eq(a).trigger(this.options.event+".tabs");return this},
+load:function(a){a=this._getIndex(a);var e=this,b=this.options,c=this.anchors.eq(a)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(b.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(b.spinner)}this.xhr=d.ajax(d.extend({},b.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(c.hash)).html(k);e._cleanup();b.cache&&d.data(c,"cache.tabs",
+true);e._trigger("load",null,e._ui(e.anchors[a],e.panels[a]));try{b.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[a],e.panels[a]));try{b.ajaxOptions.error(k,n,a,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(a,
+e){this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.5"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(a,e){var b=this,c=this.options,h=b._rotate||(b._rotate=function(j){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var k=c.selected;b.select(++k<b.anchors.length?k:0)},a);j&&j.stopPropagation()});e=b._unrotate||(b._unrotate=!e?function(j){j.clientX&&b.rotate(null)}:
+function(){t=c.selected;h()});if(a){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(b.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
+;
\ No newline at end of file
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad3d6346e00f246102f72f2e026ed0491988b394
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..86c2baa655eac8539db34f8d9adb69ec1226201c
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..4443fdc1a156babad4336f004eaf5ca5dfa0f9ab
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_222222_256x240.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_2e83ff_256x240.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..84defe6e8ab878a83d7ed145c4734e5e1117cf0f
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_454545_256x240.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_888888_256x240.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_888888_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d02426c114be4b57aabc0a80b8a63d9e56b9eb6
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_cd0a0a_256x240.png b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ab019b73ec11a485fa09378f3a0e155194f6a5d
GIT binary patch
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/jquery-ui-1.8.5.custom.css b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/jquery-ui-1.8.5.custom.css
new file mode 100644
index 0000000..2d3c34e
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/elrte-1.1/js/ui-themes/smoothness/jquery-ui-1.8.5.custom.css
@@ -0,0 +1,362 @@
+/*
+ * jQuery UI CSS Framework @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: 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: Verdana,Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% 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: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.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_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_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-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-right {  -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Dialog @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative;  }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; }
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Tabs @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
-- 
1.7.0.4

