Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/jsxc.nextcloud.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorsualko <github@spam.herberth.eu>2015-02-03 15:40:13 +0300
committersualko <github@spam.herberth.eu>2015-02-03 15:40:13 +0300
commit887d86298b87ca0b586c024f141f846ca1dbf90d (patch)
tree84f6aa9fc209d2118fb241086348e5614bf1bfed /build
parenta3a94691004a135a9cd2da91fd570915b03f6454 (diff)
build v1.1.0-beta
Diffstat (limited to 'build')
-rw-r--r--build/appinfo/app.php10
-rw-r--r--build/appinfo/info.xml6
-rw-r--r--build/appinfo/routes.php22
-rw-r--r--build/appinfo/version2
-rw-r--r--build/css/jquery.mCustomScrollbar.css12
-rw-r--r--build/css/jsxc.oc.css1380
-rw-r--r--build/img/ojsxc.pngbin0 -> 17386 bytes
-rw-r--r--build/js/admin.js38
-rw-r--r--build/js/eof.js6
-rw-r--r--build/js/jsxc/css/jsxc.css1026
-rw-r--r--build/js/jsxc/css/jsxc.webrtc.css240
-rw-r--r--build/js/jsxc/jsxc.css1243
-rw-r--r--build/js/jsxc/jsxc.js551
-rw-r--r--build/js/jsxc/jsxc.lib.js540
-rw-r--r--build/js/jsxc/jsxc.lib.webrtc.js11
-rw-r--r--build/js/jsxc/jsxc.min.js20
-rw-r--r--build/js/jsxc/jsxc.min.js.map2
-rw-r--r--build/js/jsxc/jsxc.webrtc.css379
-rw-r--r--build/js/jsxc/lib/jsxc.dep.js35
-rw-r--r--build/js/jsxc/lib/jsxc.dep.min.js8
-rw-r--r--build/js/jsxc/lib/jsxc.dep.min.js.map2
-rw-r--r--build/js/jsxc/lib/otr/build/otr.js21
-rw-r--r--build/js/jsxc/lib/otr/build/otr.min.js8
-rw-r--r--build/js/jsxc/lib/strophe.caps.js12
-rw-r--r--build/js/ojsxc.js11
25 files changed, 3612 insertions, 1973 deletions
diff --git a/build/appinfo/app.php b/build/appinfo/app.php
index 272120d..394b85f 100644
--- a/build/appinfo/app.php
+++ b/build/appinfo/app.php
@@ -7,10 +7,10 @@
* Released under the MIT license
*
* @author Klaus Herberth
-*/
+ */
OCP\App::registerAdmin ( 'ojsxc', 'settings' );
-if(DEBUG === true) {
+if(defined('DEBUG') && DEBUG === true) {
// ############# Javascript #############
OCP\Util::addScript ( 'ojsxc', 'jsxc/lib/jquery.colorbox-min' );
OCP\Util::addScript ( 'ojsxc', 'jsxc/lib/jquery.slimscroll' );
@@ -34,7 +34,7 @@ if(DEBUG === true) {
OCP\Util::addScript ( 'ojsxc', 'jsxc/lib/otr/build/otr' );
OCP\Util::addScript ( 'ojsxc', 'jsxc/jsxc.lib' );
OCP\Util::addScript ( 'ojsxc', 'jsxc/jsxc.lib.webrtc' );
- // OCP\Util::addScript ( 'ojsxc', 'lib/jsxc.lib.muc' );
+ //OCP\Util::addScript ( 'ojsxc', 'jsxc/jsxc.lib.muc' );
} else {
OCP\Util::addScript ( 'ojsxc', 'jsxc/lib/jquery.colorbox-min' );
OCP\Util::addScript ( 'ojsxc', 'jsxc/lib/jquery.slimscroll' );
@@ -48,10 +48,8 @@ OCP\Util::addScript ( 'ojsxc', 'ojsxc' );
// ############# CSS #############
OCP\Util::addStyle ( 'ojsxc', 'jquery.mCustomScrollbar' );
OCP\Util::addStyle ( 'ojsxc', 'jquery.colorbox' );
-OCP\Util::addStyle ( 'ojsxc', '../js/jsxc/jsxc' );
-OCP\Util::addStyle ( 'ojsxc', '../js/jsxc/jsxc.webrtc' );
OCP\Util::addStyle ( 'ojsxc', 'jsxc.oc' );
-OCP\Util::addStyle ( 'ojsxc', 'muc' );
+//OCP\Util::addStyle ( 'ojsxc', 'muc' );
$version = OCP\Util::getVersion();
diff --git a/build/appinfo/info.xml b/build/appinfo/info.xml
index d8c6003..e8346c5 100644
--- a/build/appinfo/info.xml
+++ b/build/appinfo/info.xml
@@ -3,8 +3,12 @@
<id>ojsxc</id>
<name>JavaScript XMPP Chat</name>
<description>XMPP Chat with OTR</description>
- <version>1.0.0</version>
+ <version>1.1.0-beta</version>
<licence>MIT</licence>
<author>Klaus Herberth</author>
<require>5</require>
+ <website>https://www.jsxc.org</website>
+ <bugs>http://github.com/sualko/jsxc/issues</bugs>
+ <repository type="git">http://github.com/sualko/jsxc.owncloud.git</repository>
+ <ocsid>162257</ocsid>
</info>
diff --git a/build/appinfo/routes.php b/build/appinfo/routes.php
new file mode 100644
index 0000000..7d4c523
--- /dev/null
+++ b/build/appinfo/routes.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * ownCloud - JavaScript XMPP Chat
+ *
+ * Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
+ * Released under the MIT license
+ *
+ * @author Klaus Herberth
+ */
+$this->create('ojsxc_ajax_getsettings', 'ajax/getsettings.php')
+ ->actionInclude('ojsxc/ajax/getsettings.php');
+
+$this->create('ojsxc_ajax_getturncredentials', 'ajax/getturncredentials.php')
+ ->actionInclude('ojsxc/ajax/getturncredentials.php');
+
+$this->create('ojsxc_ajax_setsettings', 'ajax/setsettings.php')
+ ->actionInclude('ojsxc/ajax/setsettings.php');
+
+$this->create('ojsxc_ajax_setUserSettings', 'ajax/setUserSettings.php')
+ ->actionInclude('ojsxc/ajax/setUserSettings.php');
+
+?> \ No newline at end of file
diff --git a/build/appinfo/version b/build/appinfo/version
index afaf360..2ff3577 100644
--- a/build/appinfo/version
+++ b/build/appinfo/version
@@ -1 +1 @@
-1.0.0 \ No newline at end of file
+1.1.0-beta \ No newline at end of file
diff --git a/build/css/jquery.mCustomScrollbar.css b/build/css/jquery.mCustomScrollbar.css
index 67d7ab8..5500776 100644
--- a/build/css/jquery.mCustomScrollbar.css
+++ b/build/css/jquery.mCustomScrollbar.css
@@ -24,8 +24,6 @@
.mCSB_scrollTools .mCSB_draggerContainer {
height: 100%;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
box-sizing: border-box;
}
@@ -37,8 +35,6 @@
width: 2px;
height: 100%;
margin: 0 auto;
- -webkit-border-radius: 10px;
- -moz-border-radius: 10px;
border-radius: 10px;
}
@@ -52,8 +48,6 @@
width: 4px;
height: 100%;
margin: 0 auto;
- -webkit-border-radius: 10px;
- -moz-border-radius: 10px;
border-radius: 10px;
text-align: center;
}
@@ -100,8 +94,6 @@
.mCSB_horizontal .mCSB_scrollTools .mCSB_draggerContainer {
height: 100%;
width: auto;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
box-sizing: border-box;
overflow: hidden;
}
@@ -116,8 +108,6 @@
width: 100%;
height: 2px;
margin: 7px 0;
- -webkit-border-radius: 10px;
- -moz-border-radius: 10px;
border-radius: 10px;
}
@@ -130,8 +120,6 @@
width: 100%;
height: 4px;
margin: 6px auto;
- -webkit-border-radius: 10px;
- -moz-border-radius: 10px;
border-radius: 10px;
}
diff --git a/build/css/jsxc.oc.css b/build/css/jsxc.oc.css
index 0cab147..7b28674 100644
--- a/build/css/jsxc.oc.css
+++ b/build/css/jsxc.oc.css
@@ -1,93 +1,1339 @@
/*!
- * ojsxc v1.0.0 - 2014-11-06
+ * ojsxc v1.1.0-beta - 2015-02-03
*
- * Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
+ * Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
*
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0
+ * @version 1.1.0-beta
* @license MIT
*/
-div#jsxc_roster {
- top: 45px;
- background-color: #383C43;
-}
+#jsxc_buddylist li:hover .jsxc_avatar, .jsxc_avatar {
+ width: 25px;
+ height: 25px;
+ line-height: 25px;
+ margin-top: 2px;
+ margin-right: 4px;
+ background-color: #999999;
+ border-radius: 2px;
+ float: left;
+ text-align: center;
+ font-weight: bold;
+ font-size: 30px;
+ color: #b3b3b3;
+ overflow: hidden;
+ position: relative;
+ font-family: Arial, sans-serif;
+ background-size: cover;
+ background-position: center center; }
-div#jsxc_windowList, div#jsxc_windowListSB {
- z-index: 80;
-}
+div.jsxc_transfer, div.jsxc_transfer.jsxc_disabled:hover {
+ background-image: url("../js/jsxc/img/padlock_open_grey.svg");
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: 12px 12px; }
-ul#jsxc_buddylist.jsxc_hideOffline .jsxc_offline {
- display: none;
-}
+#jsxc_buddylist li:hover .jsxc_avatar, .jsxc_avatar {
+ width: 25px;
+ height: 25px;
+ line-height: 25px;
+ margin-top: 2px;
+ margin-right: 4px;
+ background-color: #999999;
+ border-radius: 2px;
+ float: left;
+ text-align: center;
+ font-weight: bold;
+ font-size: 30px;
+ color: #b3b3b3;
+ overflow: hidden;
+ position: relative;
+ font-family: Arial, sans-serif;
+ background-size: cover;
+ background-position: center center; }
-#jsxc {
- padding: 20px;
-}
+div.jsxc_transfer, div.jsxc_transfer.jsxc_disabled:hover {
+ background-image: url("../js/jsxc/img/padlock_open_grey.svg");
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: 12px 12px; }
+
+#jsxc_buddylist {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ width: 204px; }
+ #jsxc_buddylist li {
+ padding: 0;
+ margin: 0;
+ height: 30px;
+ border-bottom: 1px solid gray;
+ cursor: pointer;
+ width: 200px;
+ position: relative;
+ color: gray;
+ font-family: Arial, sans-serif;
+ line-height: 30px;
+ padding-left: 3px;
+ z-index: 85;
+ overflow: hidden; }
+ #jsxc_buddylist li.jsxc_expand {
+ height: 54px; }
+ #jsxc_buddylist li.jsxc_expand .jsxc_avatar {
+ width: 48px;
+ height: 48px; }
+ #jsxc_buddylist li.jsxc_expand .jsxc_avatar img {
+ width: 48px;
+ height: 48px; }
+ #jsxc_buddylist li .jsxc_name:before {
+ content: ' ';
+ width: 0;
+ height: 0;
+ display: inline-block;
+ opacity: 0;
+ -webkit-transition: width 0.5s, opacity 0.5s;
+ transition: width 0.5s, opacity 0.5s; }
+ #jsxc_buddylist li.jsxc_unreadMsg .jsxc_name:before {
+ width: 12px;
+ height: 12px;
+ border-radius: 6px;
+ background-color: #ffa500;
+ margin-right: 3px;
+ opacity: 1;
+ -webkit-transition: width 0.5s, opacity 0.5s;
+ transition: width 0.5s, opacity 0.5s; }
+ #jsxc_buddylist .jsxc_name {
+ padding-right: 30px; }
+ #jsxc_buddylist .jsxc_oneway {
+ opacity: 0.7; }
+ #jsxc_buddylist .jsxc_right {
+ float: right;
+ margin-right: 6px; }
+ #jsxc_buddylist .jsxc_right div {
+ font-weight: bold;
+ text-align: center;
+ font-size: 13px;
+ line-height: 20px;
+ color: #fff; }
+ #jsxc_buddylist .jsxc_right div:hover {
+ opacity: 1; }
+ #jsxc_buddylist .jsxc_control {
+ position: absolute;
+ width: 30px;
+ height: 30px;
+ top: 0;
+ right: 0;
+ cursor: pointer; }
+ #jsxc_buddylist .jsxc_control:after {
+ content: '▾';
+ position: absolute;
+ left: 50%;
+ top: 15px;
+ width: 16px;
+ height: 16px;
+ line-height: 16px;
+ text-align: center;
+ margin-left: -8px;
+ margin-top: -8px;
+ border-radius: 8px;
+ color: #b3b3b3;
+ background-color: rgba(102, 102, 102, 0.5);
+ opacity: 0.6;
+ -webkit-transition: -webkit-transform 0.5s;
+ transition: transform 0.5s; }
+ #jsxc_buddylist .jsxc_control:hover:after {
+ color: #fff;
+ opacity: 1; }
+ #jsxc_buddylist .jsxc_options {
+ height: 20px;
+ float: left;
+ border-radius: 2px;
+ background-color: rgba(102, 102, 102, 0.5); }
+ #jsxc_buddylist .jsxc_options > div {
+ height: 20px;
+ width: 20px;
+ float: left;
+ margin-right: 0 1px;
+ background-repeat: no-repeat;
+ background-position: center center;
+ opacity: 0.6;
+ cursor: pointer; }
+ #jsxc_buddylist .jsxc_options > div:hover {
+ opacity: 1; }
+ #jsxc_buddylist .jsxc_chaticon {
+ background-image: url("../js/jsxc/img/speech_balloon_white.svg");
+ background-size: 15px 15px; }
+ #jsxc_buddylist .jsxc_videoicon {
+ background-image: url("../js/jsxc/img/camera_icon_white.svg");
+ background-size: 13px 13px; }
+ #jsxc_buddylist .jsxc_vcardicon {
+ font-size: 15px;
+ line-height: 20px;
+ text-align: center;
+ color: #fff;
+ font-weight: bold;
+ font-family: serif; }
+ #jsxc_buddylist li.jsxc_expand .jsxc_control:after {
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg); }
+ #jsxc_buddylist.jsxc_hideOffline .jsxc_offline {
+ display: none; }
+
+.jsxc_online {
+ border-left: 4px solid #00bfff !important; }
+
+.jsxc_chat {
+ border-left: 4px solid #00bfff !important; }
+
+.jsxc_away {
+ border-left: 4px solid #ffa500 !important; }
+
+.jsxc_xa {
+ border-left: 4px solid #ffa500 !important; }
+
+.jsxc_dnd {
+ border-left: 4px solid #f00 !important; }
+
+.jsxc_offline {
+ border-left: 4px solid #999999 !important; }
+
+.jsxc_hidden {
+ display: none; }
+
+.jsxc_invalid {
+ border: 2px solid #f00 !important; }
+
+.jsxc_emoticon {
+ width: 19px;
+ height: 19px;
+ background-size: 19px 19px !important;
+ border: 0; }
+
+.jsxc_angel {
+ background: url("../js/jsxc/img/emotions/angel.png"); }
+
+.jsxc_angry {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_smile {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_grin {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_sad {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_wink {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_tonguesmile {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_surprised {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_kiss {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_sunglassess {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_crysad {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_doubt {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_zip {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_thumbsup {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_thumbsdown {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_beer {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_devil {
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB10RVh0Q29tbWVudABDcmVhdGVkIHdpdGggVGhlIEdJTVDvZCVuAAAAGHRFWHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuMjBZn3ZRAAAGaElEQVRIS81WCUxURxgeVgGBVcQua6krcohyCK4uqxQxWLQuIGjVmlaweCC0lnjgGSOpsQGsSUNFjPFoqpZiCIliSIzWI1YlpqTrNmQjodlsakiIm02oCbU1Xnydb3bX2rh49Eg6yZd/3n998/8zb94T4n8yVvyH65gucw/3lz9liin+N2mYMAh5jNRXSpyKGCJuJg4TfSkS+qHiJnVeG338jYCx0ZGXpaHMn7HEatuH3DxTjzTOk9B4nYxStmWGicfV0+LQsaEIPft3wdW0H+6mBrgO7IJ9UzHqM+KQrRWP6SvBGN8YpdePPH66rQoTEw1H/RGv+rnnOEj+RX0ZFr+beTs4eOiPplDx8GShGb0tX+LOjXb0S9y9cU2Bc+LOD1eVdLUcQWthOmTMA0lwJjV13LnlK2b/2tr2CXpd3yDdnNDijzjjVGsV3H0nBr631g18XJGPj3QCXdtXwXXhNNwXWtEncefCKfRfOq0kn93fnlQ2Jb3z7u0rsTZSoKAgHVfa90AWNOByn4BWO6z2GWKNJiBg9hzjT72ur3H02DpsGS1gKy9Ab/MhVYm75TD6vHA3H1TP1NPe03xYSR+od3yYj91jBKqq3sNtSbqvYc2ARqOZOsgZELPmFUx7UGEYitbEYDgadqHnYA1ch2vhPlSj4DpYjV6po55wHqiBw4tbB2uf6HsPfAr75CBUvS6wpiIPERHaw4ORUm9MDREPm2IFzuaMR1dNJZw169C7ewNcu9cr2fNZJRw165+ge/dG2Gs84Nxnc9ZWossyHvZkAXkwIXNnPY+4rWGsQGu8wJW3YtC9uRjOLUWwVixGz9Yi3Nq6DI4ty9C1eRnsmz9Qp5nStmmZQudToN6aEwNbkieffEV42v2OmAz5ylxMkKQT5P6mBcFZNhe3yi0omJGEzuU5cJTlonu1BfZSC2yluUoSnavz1HN7yRysTZ+g5taVFlyeFIz2iQIdiQIzPa9ajD/mSu4HHbnK7hQB59xYOJeYkJidhoxxOlyZlwb7oqmwLTLButAE2ztT1DNxPj8NRl0YMvXDlf56TizOjJdbJsFidkapdvMCemacYkuuS+JOL3GX3B/7jEgEDg1gEEI1AhsTRqFjVjSuZ4+FbZZBYWNGLPT6Ecpn5qhgdGaNVl0jMXO2SfDcSDtvuL8Onbz66GyVbeGBICkXwGdpU0kJc1gALqeGoH1yCGyThykkmGIhNBplXzjSE8fO+Yhb4jzE4fKqfYaYdy9JGKQqleDesAOWEQLxwR4Uj/JUwPbRzm2R+/fEzu1instPVdwsSRtjBGKDRN8zxLzwSUpCgsHsgG9/jswSqDZKvCHAClgN7STn/jXOFdgmF8k9pZ6SbT4pfZ9LzK+Mj5QLYKUkJUjyabSHgKRMeN57+knMttZJHV9FzmljV+jnazMr9ttqbjyT+FrMVpGU0peIyTinjlX5XhUfOf3pQ3CxlCRmxUfGDXK4eNTrDJ4WF+s0WGFO9iA96c+597l0WjII2p6el5hTUJyeAkrGlqQnwzImQhFv1A/+OsXwe8oqFuiC0N/fj39jLLXkqA7xez7YBcID18aWfC4rr6ur+8e8nZ2dKH3N027mft5dbTSGiAfcn4IoLRwOx98mv3fvHhZkTVdnwuz5MTA+j5i22hVylXwN8ozJcDqdr0x+9+5dlBa9j69k9yrkDwFzvoiU9kCJszwMLVN1yEswoLGxEY8ePXqpBXR0dKDgzXQVWz0+jKRnvTlfhluEMKA0MgAX356IneY4lay+vl61//79+08WwQW53W40NTVh6YJCVEwywDo/DdtSRvtImeuVBiuv5Y9bU1ac+tQ1L8rChulJKMmcgtL8OSifn4vimdNQbk7CoXkZsJfl4+ziTGRGRXBP2V7mePkRGBio0Wq1QRERESOioqIs2rCwjswRmoE90+NwvSgbXeuXoHtHKbp2rEbX1hJYywvRkGvGnHH6gfDhwzsYw1jmYK4XMoeGhgampqYWmkymarPZfEzitMR5ie+k/obBYOgJDw//xRAS+Lv8qDwkOFc6aaMPfb0xjD3GXMzJ3IMuIFj+SCcmJmZL500yaK9Eo5f8nJSXvEmvSnlNot0LzqkjIX3oS1LG7mUu5mTuF1Yuf0OFdBwiKxmm0+nC9Xp9pGyfLMoQFx0dPSE+Pj5JItmLJOpoow99GcNY5mAuf+MPwwdFvzZwYz0AAAAASUVORK5CYII="); }
+
+.jsxc_kissing {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_rose {
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAACXZwQWcAAAAeAAAAHgD4T+E9AAAFwElEQVRIx+WXWWxcVxmAv3PmLjOe8SzeYrt24nhLTR2laZ2ShlJC1BKWRl2itkRCRGVJk6I+IIRAVGpVJB4KSmWKkAhUqAgVpEptRVogoo0qta4al5DYtCSNHROHGTuOM97uzHju3O3wMFMRQZzYkd/4X46O7q//O/+uC/9vIlagGwM+HYe7b4vFtsYTichcLudkLGt8HqxLsB/wVxOsN2naoXpd3/jNzZv77ti9m/U7dhBSCk8p5sfHef7pp1WmUEi/PDb2Qh6eWi2w+WBLy8Xn+vsTUimK6TQlx8FsayO8sIBMpVDhMLZl8eX9+//5Xj7fsRxwaBk6/keWVdqs1M5kQwO+phE3TfyzZ9FiMeYWFylaFn966SV+dfr0o8Cp5YC15SgF8MKJoaFneru6dA8oKkWjUkxmMigApTg5OloC/rgce8sGAyJu26ImnWYciANZoABlMFAdBDrQCpxZTfCOPk3TZCZDAMgKuHSZwrZ4XP4avpuHb1TeJoH5pQzKqz2qJxp9585k8sMUPNbjeSxmMkSFQI9EqIlEaIxEqA2HIZvFKBb5nGl+RcK399XWTn+nvj7bUg59dKUei8LionZA129qgZvIZikJQT6TwaLcDgHgCMG0UoSAbt83nxDiYEM+L37hOCftssdXdO5a7RS9Hc5+HRq3AKaUKMqtcAaYrSgVgbBSFJWiFvglzL9Zznf+enNcGISf3Qs/Glu3jvWxGHWVD2v4z5iqAlxAT6exLIv34fDVoMsBE8BPn4dv9ff0NEeamjBlOXLJCuxjcYA51+X3luVZ8Oy17F5rgFTrbRxe93jnxoadW8TF8CVyc2laEh0cCz5gdHGG9rW9HC+e4NQai3M3Jrm0vU1kJjKb3Lngd4B3veBN5gZ+mH5l9tDw+EhT6q7eePClW/lL1TDyC9sZsuc5tjiI3XcrJ6en1etvHB9Pn53I1/cleueGC68DE0sZvlZxCSBFuY6iSL4W6Q491HhLzZZPPNxuzvw9h2OXuDCc9afeXHhO2XwPMIBdwGuUZ8yqyqdS+3Cr76EgovQDnasNWEoiyUewzU2cvF4Dyx2ZS8l/p+oerZndeivdoVqa/BkKxUH2AidWCr4t1MABs5MbvRlmnRFeRvEi4Oqe6fvVflOpXLghmeDnrY9X74v0SlH0C5RmPdwJKA7St1LwZ1N75ZHuXa1GndaIDEmyF2a+eOrF8ScX3nF+gCWtVEusLsdMvUzyk60Hu/c2NjXiLHho8RBjI+OMHElPAX++kvGl2kmP3ay/uueJB5o7oz00VDeS0uqoDTXQu31DMro59MDk+amqrpvbtfTA9Podz96yZ+vGbULPRVi7thU3A5fOzZL5w+yjwLsryfENzZvqN2benQY1Tduadtp72qjeUM1irkhLb7u4o/czoaIoMPnQ1O77tj0oFi7kaO/sxnN88gWPfNr2gTeWCudSHs/PDOcGRo+ef2306Pm3z2fP3V5VVRXpqO2mOdXC5MUJXv3NYT/ZkJAP37tHpJwGutZ3U2PWkUsXWJi3OPrKWye8uaB/uVW5lDQJk8equyK7EjXx5IUPp9/3ZtWTXfe3Dvz4+wdrP0qfplSySU/8i5EzI2po4IPTuTP2V4G/rQhsGIYMh8OaYRhhwzAiUsqIpmlhKaUppdQNwwgJIeSUPfHUI8/s2XnowG//kYyljuEzqQL1XhAEQ47jFBzHsW3b9hzHCa6a41gspnd0dHzeMIxPCiFaKC+hKsAQQoQoL/WPF7uo89Yk/zpwXEVrInXNyeYeYINS6k7Ky2oRmFdKZRzHGRwbGzuSz+fdK4KDIFCu61q6rs8JIWKX1UAA6JW7rERKJBKJ7MUjlt0YuaFIeUv6ldMGchXwnOu6VhAE6nLWFUMdCoUwDCNkmqau67oppTQ0TTOllIaUUquEWgAopZTjOH4QBF4QBI7neaUgCBzXdUulUsl1HMf3/f/9s/k3XaBaVHBIGvoAAAAmelRYdENvbW1lbnQAAHjacy5KTSxJTVEozyzJUAjJSFVw9/QNAABS5wcjkMtlcAAAAABJRU5ErkJggg=="); }
+
+.jsxc_music {
+ background: url("../js/jsxc/img/emotions/music.png"); }
+
+.jsxc_love {
+ background: url("data:image/png;base64,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"); }
+
+.jsxc_tired {
+ background: url("../js/jsxc/img/emotions/tired.png"); }
+
+#jsxc_roster {
+ position: fixed;
+ top: 0px;
+ bottom: 0;
+ right: 0;
+ width: 200px;
+ overflow: visible;
+ border-left: 4px solid #999999;
+ z-index: 80;
+ margin-left: 10px;
+ box-shadow: 0px 0px 7px #000;
+ background-color: #333333; }
+ #jsxc_roster a {
+ cursor: pointer; }
+ #jsxc_roster .slimScrollDiv {
+ left: -4px;
+ margin-bottom: 30px;
+ z-index: 40; }
+ #jsxc_roster .jsxc_wait {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ width: 160px;
+ padding: 20px;
+ background-color: #fff;
+ z-index: 60; }
+ #jsxc_roster .jsxc_wait img {
+ padding: 5px; }
+ #jsxc_roster .jsxc_wait h3 {
+ margin-bottom: 5px;
+ font-size: 1.13em;
+ font-weight: bold; }
+ #jsxc_roster input {
+ position: absolute;
+ top: 50%;
+ left: 31px;
+ width: 157px;
+ height: 18px;
+ margin-top: -11px;
+ padding: 2px;
+ border: 0;
+ background-image: none;
+ background-color: #fff;
+ border-radius: 3px;
+ box-shadow: inner 0 0 5px #666666;
+ outline: none; }
+ #jsxc_roster p {
+ color: gray;
+ padding: 10px; }
+ #jsxc_roster p a {
+ color: #b3b3b3;
+ text-decoration: underline; }
+ #jsxc_roster .jsxc_avatar {
+ position: relative;
+ cursor: pointer; }
+ #jsxc_roster .jsxc_avatar img {
+ cursor: pointer; }
+ #jsxc_roster .jsxc_expand input {
+ left: 51px;
+ width: 137px; }
+ #jsxc_roster.jsxc_noConnection .slimScrollDiv {
+ display: none; }
+ #jsxc_roster.jsxc_noConnection > .jsxc_bottom {
+ display: none; }
+
+#jsxc_toggleRoster {
+ width: 14px;
+ height: 100%;
+ position: absolute;
+ left: -14px !important;
+ top: 0;
+ z-index: 110;
+ background-color: transparent;
+ cursor: pointer; }
+ #jsxc_toggleRoster:hover {
+ background-color: rgba(153, 153, 153, 0.5); }
+
+#jsxc_roster > .jsxc_bottom {
+ position: absolute;
+ left: -4px;
+ bottom: 0;
+ height: 30px;
+ width: 200px;
+ border-left: 4px solid #999999;
+ border-top: 1px solid gray;
+ padding-left: 0;
+ background-color: #1a1a1a;
+ color: gray;
+ cursor: pointer;
+ line-height: 30px;
+ z-index: 50; }
+ #jsxc_roster > .jsxc_bottom ul {
+ width: 190px;
+ position: absolute;
+ bottom: 30px;
+ left: 0;
+ display: none;
+ border-top: 1px solid gray;
+ padding-left: 10px;
+ background-color: #1a1a1a;
+ margin: 0; }
+ #jsxc_roster > .jsxc_bottom ul li:last-child {
+ border-bottom: 1px solid gray; }
+ #jsxc_roster > .jsxc_bottom li {
+ height: 30px;
+ background-color: #1a1a1a;
+ color: gray;
+ cursor: pointer;
+ width: 180px;
+ padding-left: 10px;
+ line-height: 30px;
+ text-align: left;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap; }
+ #jsxc_roster > .jsxc_bottom li.jsxc_disabled {
+ color: #333333;
+ cursor: default; }
+ #jsxc_roster > .jsxc_bottom li:hover:not(.jsxc_disabled) {
+ color: #fff;
+ background-color: #3f8fba; }
+#jsxc_roster > .jsxc_bottom > div > span {
+ cursor: pointer; }
+#jsxc_roster > .jsxc_bottom > div:hover {
+ color: #fff; }
+
+.jsxc_right {
+ text-align: right; }
+
+.jsxc_center {
+ text-align: center; }
+
+.jsxc_sep {
+ border-top: 1px solid #000; }
+
+.jsxc_name {
+ overflow: hidden;
+ height: 30px;
+ cursor: pointer;
+ text-overflow: ellipsis;
+ white-space: nowrap; }
+ .jsxc_name:hover {
+ color: #fff; }
+
+.jsxc_maxWidth {
+ max-width: 500px; }
+
+#jsxc_dialog {
+ padding: 10px;
+ min-width: 300px; }
+ #jsxc_dialog ul {
+ list-style: none;
+ margin: 0;
+ padding: 0; }
+ #jsxc_dialog li {
+ margin: 0;
+ padding: 0; }
+ #jsxc_dialog p {
+ margin-bottom: 1em; }
+ #jsxc_dialog p input {
+ margin-bottom: 5px;
+ width: 60%;
+ outline: none; }
+ #jsxc_dialog p input[type="submit"] {
+ width: auto; }
+ #jsxc_dialog p label {
+ display: block;
+ width: 30%;
+ float: left;
+ padding: 6px 0; }
+ #jsxc_dialog h3 {
+ font-size: 120%;
+ font-weight: bold;
+ margin-bottom: 10px;
+ margin-top: 20px; }
+ #jsxc_dialog .jsxc_right {
+ margin-top: 20px; }
+ #jsxc_dialog fieldset {
+ border: 2px solid #cccccc; }
+ #jsxc_dialog legend {
+ padding: 0 10px;
+ font-weight: bold; }
+ #jsxc_dialog input {
+ outline: none; }
+ #jsxc_dialog input:invalid {
+ border: 1px solid #f00; }
+ #jsxc_dialog .jsxc_fieldset {
+ width: 280px;
+ padding: 10px;
+ border-radius: 3px; }
+ #jsxc_dialog .jsxc_fieldset label {
+ display: inline-block;
+ width: 100px; }
+ #jsxc_dialog .jsxc_fieldset input[type="Number"] {
+ display: inline-block;
+ width: 50px; }
+ #jsxc_dialog input[readonly] {
+ background-color: #e6e6e6; }
+
+.jsxc_avatar img {
+ display: block;
+ width: 25px;
+ height: 25px;
+ position: absolute;
+ top: 0;
+ left: 0; }
+
+ul.jsxc_vCard {
+ min-width: 400px; }
+ ul.jsxc_vCard ul {
+ margin-left: 20px; }
+ ul.jsxc_vCard li {
+ cursor: default !important; }
+
+.jsxc_spot {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ background-color: #fff;
+ border-radius: 5px;
+ text-indent: -99999em;
+ margin-top: 3px;
+ margin-right: 5px;
+ border: 1px solid #000 !important;
+ line-height: 100%;
+ cursor: pointer; }
+ .jsxc_spot.jsxc_online {
+ background-color: #00bfff; }
+ .jsxc_spot.jsxc_chat {
+ background-color: #00bfff; }
+ .jsxc_spot.jsxc_away {
+ background-color: #ffa500; }
+ .jsxc_spot.jsxc_xa {
+ background-color: #ffa500; }
+ .jsxc_spot.jsxc_dnd {
+ background-color: #f00; }
+ .jsxc_spot.jsxc_offline {
+ background-color: #999999; }
+
+#jsxc_menu {
+ height: 30px;
+ width: 30px;
+ cursor: pointer;
+ float: right;
+ text-align: center; }
+ #jsxc_menu:hover > span {
+ opacity: 1; }
+
+#jsxc_avatar {
+ height: 30px;
+ width: 30px;
+ float: left;
+ margin: 0 2px; }
+
+#jsxc_notice {
+ height: 30px;
+ width: 30px;
+ float: right;
+ text-align: center;
+ line-height: 30px; }
+ #jsxc_notice span {
+ background-color: #ffa500;
+ border-radius: 11px;
+ color: #000;
+ font-size: 80%;
+ padding: 2px;
+ position: relative;
+ -webkit-animation: bounce 2s 1s infinite;
+ animation: bounce 2s 1s infinite; }
+
+#jsxc_menu > span {
+ opacity: 0.5;
+ display: block;
+ width: 25px;
+ height: 30px;
+ background-image: url("../js/jsxc/img/gear_white.svg");
+ background-size: 18px 18px;
+ background-repeat: no-repeat;
+ background-position: center center; }
+
+@-webkit-keyframes bounce {
+
+ 0% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
+
+ 12% {
+ bottom: 5px;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out; }
+
+ 25% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
+
+ 37% {
+ bottom: 5px;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out; }
+
+ 50% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
-#jsxc h1 {
- margin: 15px 0px 5px 0px;
- font-size: 1.5em;
-}
+ 100% {
+ bottom: 0; } }
-#jsxc a {
- color: blue;
- text-decoration: underline;
-}
+@keyframes bounce {
+ 0% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
-#jsxc a:hover {
- text-decoration: none;
-}
+ 12% {
+ bottom: 5px;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out; }
+
+ 25% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
+
+ 37% {
+ bottom: 5px;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out; }
+
+ 50% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
+
+ 100% {
+ bottom: 0; } }
+
+#jsxc_presence {
+ cursor: pointer;
+ padding-left: 2px;
+ overflow: hidden; }
+
+#jsxc_windowList {
+ position: fixed;
+ bottom: 0;
+ right: 210px;
+ left: 0;
+ z-index: 50;
+ clip: rect(-10000px, 10000px, 30px, 30px); }
+ #jsxc_windowList > ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ height: 30px;
+ overflow: visible;
+ white-space: nowrap;
+ -webkit-transition: right 0.5s;
+ transition: right 0.5s; }
+ #jsxc_windowList > ul > li {
+ padding: 0;
+ margin: 0;
+ display: inline-block;
+ width: 250px;
+ height: 30px;
+ position: relative;
+ overflow: visible;
+ margin-right: 5px;
+ cursor: pointer;
+ white-space: normal; }
+ #jsxc_windowList > ul > li.jsxc_min {
+ width: 200px !important; }
+ #jsxc_windowList > ul > li.jsxc_unreadMsg .jsxc_name {
+ font-style: italic; }
+ #jsxc_windowList > ul > li.jsxc_unreadMsg .jsxc_cycle {
+ background-color: #ffa500; }
+
+#jsxc_windowListSB {
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ width: 30px;
+ height: 30px; }
+ #jsxc_windowListSB > div {
+ box-sizing: border-box;
+ width: 14px;
+ height: 100%;
+ background-color: #cccccc;
+ color: gray;
+ text-align: center;
+ line-height: 30px;
+ float: left;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none; }
+ #jsxc_windowListSB > div:hover {
+ background-color: #b3b3b3; }
+ #jsxc_windowListSB > .jsxc_disabled {
+ background-color: #e6e6e6 !important;
+ color: #cccccc;
+ cursor: default !important;
+ display: none; }
+
+.jsxc_bar {
+ background-color: #1a1a1a;
+ cursor: pointer;
+ height: 30px;
+ line-height: 26px;
+ padding: 2px;
+ color: gray;
+ width: 100%;
+ box-sizing: border-box;
+ overflow: hidden; }
+
+.jsxc_cycle {
+ position: absolute;
+ bottom: 9px;
+ right: 5px;
+ height: 12px;
+ width: 12px;
+ border-radius: 6px; }
+
+.jsxc_window {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ height: auto;
+ background-color: #999999;
+ z-index: 80;
+ cursor: default; }
+ .jsxc_window .jsxc_emoticons {
+ height: 30px;
+ width: 30px;
+ position: absolute;
+ top: 240px;
+ right: 0;
+ cursor: pointer; }
+ .jsxc_window .jsxc_emoticons:after {
+ content: ' ';
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALHQAACx0BpBPQ5gAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGtSURBVDiNrdS7a1RBFAbw3+7KKlYKamGI6D9gBGsfCFoogijia0k6LRURG0ufaAjE/Qds1CKFlTZaWUgIQgo7kfhCJVhYqEUUvBZzbhzu3l1Z8YOBmW++890zc8+Zhnqsxinsx1asDf4LXuAR7uJ7NbBRY3YSNzGC13iKz7G3DruwBR9xMYxr0cB1FJjFjn7C2JsN7Y0+ibkSgkm0BpiVaIW2wNXq5hH8CsGwmIrYwyWxSrqruSyzDbiM0zUGnchoNNYr8BwLWAnjkfbeLOhOcAX2ZPy2jH+Y8fuC6zRxAB/wJBP8yOZL2fxnBFb5x/gUXl7p/fVrcB5H9eIgLmB9hb+Pl/ANt2oCh8Ukvjb1qaF/RROL2PgfvEaw2MQ8dvqT6aj05/+GcWyKeUPqnvlyo5B6FKalQj03wOxsaLqx3h0eHVJhv5N6s4U2HoTgGSawPcZEcEVo2lJhz+FteBHOZR+XRzgjVX9RGQtSB5VXNJVnl6Or/nEYw6EYYxmfPw5dNWjhtuGfr24ce/loVZzANWw2+IF9g0u4N+DDy2jjGGbwXurbpZjP4HhoevAb11xtRVQWs+YAAAAASUVORK5CYII=");
+ background-position: center center;
+ background-repeat: no-repeat;
+ height: 30px;
+ width: 30px;
+ opacity: 0.3;
+ position: absolute;
+ top: 0;
+ left: 0; }
+ .jsxc_window .jsxc_emoticons ul {
+ display: none;
+ position: absolute;
+ bottom: 33px;
+ right: 3px;
+ width: 210px;
+ background-color: rgba(51, 51, 51, 0.8);
+ padding: 3px;
+ border-radius: 3px;
+ z-index: 200;
+ list-style-type: none; }
+ .jsxc_window .jsxc_emoticons ul:after {
+ content: '';
+ position: absolute;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-top: 6px solid rgba(51, 51, 51, 0.8);
+ display: block;
+ width: 0;
+ z-index: 1;
+ right: 6px;
+ bottom: -6px; }
+ .jsxc_window .jsxc_emoticons li {
+ float: right;
+ cursor: pointer; }
+ .jsxc_window .jsxc_emoticons div {
+ cursor: pointer;
+ border-radius: 3px;
+ background-size: 30px 30px;
+ width: 30px;
+ height: 30px; }
+ .jsxc_window .jsxc_emoticons div:hover {
+ background-color: rgba(255, 255, 255, 0.8); }
+ .jsxc_window .jsxc_emoticons:hover:after {
+ opacity: 0.5; }
+ .jsxc_window .jsxc_fade {
+ position: relative; }
+ .jsxc_window .jsxc_gradient {
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 15px;
+ z-index: 100;
+ background: -webkit-linear-gradient(top, #999999 0, rgba(0, 0, 0, 0) 100%);
+ background: linear-gradient(to bottom, #999999 0, rgba(0, 0, 0, 0) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$window_gradient', endColorstr='#00282323', GradientType=0); }
+ .jsxc_window .jsxc_avatar {
+ margin-top: 1px; }
+ .jsxc_window .jsxc_textarea {
+ width: 100%;
+ overflow: hidden;
+ padding: 3px; }
+ .jsxc_window .slimScrollDiv {
+ margin: 0 0 6px 0;
+ left: auto !important;
+ top: auto !important; }
+ .jsxc_window input.jsxc_textinput {
+ width: 100%;
+ height: 30px;
+ margin: 0;
+ padding: 3px;
+ padding-right: 40px;
+ outline: none;
+ border-radius: 0;
+ box-sizing: border-box;
+ text-align: right; }
+ .jsxc_window input::-webkit-input-placeholder {
+ color: #000;
+ opacity: 0.3; }
+ .jsxc_window input::-moz-placeholder {
+ color: #000;
+ opacity: 0.3; }
+ .jsxc_window input:-ms-input-placeholder {
+ color: #000;
+ opacity: 0.3; }
+ .jsxc_window input::placeholder {
+ color: #000;
+ opacity: 0.3; }
+ .jsxc_window .jsxc_tools {
+ height: 26px;
+ float: right; }
+ .jsxc_window .jsxc_tools > div {
+ width: 17px;
+ height: 26px;
+ display: block;
+ float: left;
+ color: gray;
+ font-family: Arial, sans-serif;
+ line-height: 26px;
+ cursor: pointer;
+ text-align: center; }
+ .jsxc_window .jsxc_close {
+ font-size: 20px; }
+ .jsxc_window .jsxc_close:hover {
+ color: #fff; }
+ .jsxc_window .ui-resizable-w {
+ left: 0; }
+ .jsxc_window .ui-resizable-nw {
+ top: 0;
+ left: 0;
+ width: 15px;
+ height: 15px;
+ z-index: 95 !important; }
+ .jsxc_window .ui-resizable-n {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 15px;
+ z-index: 100;
+ background: -webkit-linear-gradient(top, #999999 0, rgba(40, 35, 35, 0) 100%);
+ background: linear-gradient(to bottom, #999999 0, rgba(40, 35, 35, 0) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$window_gradient', endColorstr='#00282323', GradientType=0); }
+
+.jsxc_chatmessage {
+ margin: 3px;
+ padding: 4px;
+ padding-right: 10px;
+ max-width: 76%;
+ word-wrap: break-word;
+ background-color: #fff;
+ position: relative;
+ outline: none;
+ clear: both; }
+ .jsxc_chatmessage a {
+ color: #00f;
+ text-decoration: underline; }
+ .jsxc_chatmessage img {
+ width: 19px;
+ height: 19px;
+ background-size: 19px 19px; }
+
+.jsxc_timestamp {
+ font-size: 8px;
+ color: #999999;
+ line-height: 8px; }
+
+.jsxc_in {
+ float: left;
+ position: relative;
+ margin-left: 10px;
+ background: #f1f7fd;
+ border: solid 1px #a6b8c9;
+ border-radius: 3px; }
+ .jsxc_in:after {
+ content: '';
+ position: absolute;
+ border-style: solid;
+ border-width: 5px 6px 5px 0;
+ border-color: transparent #f1f7fd;
+ display: block;
+ width: 0;
+ z-index: 1;
+ left: -6px;
+ bottom: 10px; }
+ .jsxc_in .jsxc_timestamp {
+ float: left; }
+
+.jsxc_out {
+ float: right;
+ position: relative;
+ margin-right: 10px;
+ background: #e6ffd1;
+ border: solid 1px #b4d89f;
+ border-radius: 3px; }
+ .jsxc_out:after {
+ content: '';
+ position: absolute;
+ border-style: solid;
+ border-width: 5px 0 5px 6px;
+ border-color: transparent #e6ffd1;
+ display: block;
+ width: 0;
+ z-index: 1;
+ right: -6px;
+ bottom: 10px; }
+ .jsxc_out.jsxc_received:before {
+ content: '✓';
+ position: absolute;
+ bottom: 2px;
+ right: 2px;
+ font-size: 12px;
+ line-height: 12px;
+ color: #008000; }
+ .jsxc_out.jsxc_received .jsxc_timestamp {
+ margin-right: 4px; }
+ .jsxc_out .jsxc_timestamp {
+ float: right; }
+
+.jsxc_sys {
+ width: auto;
+ max-width: none;
+ padding-right: 4px;
+ box-sizing: border-box;
+ margin-right: 3px;
+ border-radius: 3px; }
+
+div.jsxc_settings {
+ background-image: url("../js/jsxc/img/gear_grey.svg");
+ background-size: 15px 15px;
+ background-repeat: no-repeat;
+ background-position: center center;
+ overflow: visible; }
+ div.jsxc_settings:hover, div.jsxc_settings .hover {
+ background-image: url("../js/jsxc/img/gear_white.svg"); }
+ div.jsxc_settings ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ position: absolute;
+ top: 30px;
+ left: 0;
+ box-shadow: 0 5px 5px -5px #000;
+ z-index: 110;
+ overflow: visible;
+ background-color: #1a1a1a;
+ display: none; }
+ div.jsxc_settings li {
+ width: 170px;
+ margin-left: 20px;
+ padding-left: 10px;
+ height: 30px;
+ line-height: 30px;
+ text-align: left;
+ cursor: pointer; }
+ div.jsxc_settings li:first-child {
+ border-top: 1px solid #cccccc; }
+ div.jsxc_settings li.jsxc_disabled {
+ color: #4d4d4d;
+ cursor: default; }
+ div.jsxc_settings li:hover:not(.jsxc_disabled) {
+ color: #fff;
+ background-color: #3f8fba; }
+
+div.jsxc_transfer:hover {
+ background-image: url("../js/jsxc/img/padlock_open_white.svg"); }
+div.jsxc_transfer.jsxc_fin {
+ background-image: url("../js/jsxc/img/padlock_close_grey.svg"); }
+div.jsxc_transfer.jsxc_enc {
+ background-image: url("../js/jsxc/img/padlock_close_orange.svg"); }
+ div.jsxc_transfer.jsxc_enc.jsxc_trust {
+ background-image: url("../js/jsxc/img/padlock_close_green.svg"); }
+
+#colorbox {
+ outline: none; }
+
+#cboxWrapper {
+ outline: none; }
+
+.jsxc_loading {
+ margin: 0 auto;
+ width: 32px;
+ height: 32px;
+ border: 0;
+ background-size: 32px 32px !important;
+ background: url("../js/jsxc/img/loading.gif"); }
+
+/* @TODO: check */
+#jsxc_loginForm input[type="submit"] {
+ height: 34px;
+ display: inline-block;
+ padding: 6px 12px;
+ margin-bottom: 0;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.428571429;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ cursor: pointer;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #4cae4c; }
+
+#jsxc_notice > span:empty {
+ display: none; }
+
+.jsxc_oneway .jsxc_avatar {
+ -webkit-filter: grayscale(100%);
+ filter: grayscale(100%); }
+
+.jsxc_min .jsxc_tools {
+ display: none; }
+
+.jsxc_tools > .jsxc_disabled {
+ opacity: 0.5;
+ cursor: default !important; }
+
+img.jsxc_vCard {
+ float: right;
+ max-width: 200px;
+ max-height: 200px;
+ border: 5px solid #fff;
+ border-radius: 2px; }
+
+.jsxc_remotevideo, .jsxc_noRemoteVideo {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 9000;
+ background-color: #999999; }
+
+.jsxc_webrtc {
+ width: 900px; }
+ .jsxc_webrtc .jsxc_status {
+ z-index: 9999;
+ border-radius: 20px;
+ display: none;
+ position: absolute;
+ top: 30px;
+ left: 50%;
+ background-color: rgba(0, 0, 0, 0.5);
+ color: #fff;
+ padding: 15px;
+ font-weight: bold;
+ text-align: center; }
+ .jsxc_webrtc .slimScrollDiv {
+ opacity: 1 !important; }
+ .jsxc_webrtc li .jsxc_name {
+ cursor: auto; }
+ .jsxc_webrtc li .jsxc_name:hover {
+ color: gray; }
+
+.jsxc_videoContainer {
+ width: 640px;
+ height: 480px;
+ position: relative;
+ background-color: #999999; }
+ .jsxc_videoContainer video {
+ display: none; }
+ .jsxc_videoContainer .jsxc_noRemoteVideo {
+ display: none; }
+
+.jsxc_noRemoteVideo p {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ text-align: center;
+ color: #fff;
+ width: 100%;
+ z-index: 100; }
+.jsxc_noRemoteVideo > div {
+ width: 200px;
+ height: 200px;
+ overflow: hidden;
+ position: absolute;
+ top: 50%;
+ margin-top: -100px;
+ left: 50%;
+ margin-left: -100px; }
+ .jsxc_noRemoteVideo > div > div {
+ background-color: #4d4d4d; }
+ .jsxc_noRemoteVideo > div > div:first-child {
+ width: 50%;
+ height: 50%;
+ border-radius: 50%;
+ position: absolute;
+ left: 50%;
+ margin-left: -25%;
+ top: 10%; }
+ .jsxc_noRemoteVideo > div > div:last-child {
+ position: absolute;
+ bottom: -50%;
+ width: 100%;
+ height: 100%;
+ border-radius: 50%; }
+
+.jsxc_localvideo {
+ width: 160px;
+ height: 120px;
+ position: absolute;
+ right: 10px;
+ bottom: 10px;
+ z-index: 9990;
+ background-color: #000;
+ cursor: pointer; }
+
+div:full-screen {
+ width: 100%;
+ height: 100%;
+ background-color: #000; }
+ div:full-screen.jsxc_localvideo {
+ border: 1px solid #fff; }
+div:-webkit-full-screen {
+ width: 100%;
+ height: 100%;
+ background-color: #000; }
+div:-moz-full-screen {
+ width: 100%;
+ height: 100%;
+ background-color: #000; }
+div:-ms-fullscreen {
+ width: 100%;
+ height: 100%;
+ background-color: #000; }
+div:fullscreen {
+ width: 100%;
+ height: 100%;
+ background-color: #000; }
+ div:-webkit-full-screen.jsxc_localvideo {
+ border: 1px solid #fff; }
+ div:-moz-full-screen.jsxc_localvideo {
+ border: 1px solid #fff; }
+ div:-ms-fullscreen.jsxc_localvideo {
+ border: 1px solid #fff; }
+ div:fullscreen.jsxc_localvideo {
+ border: 1px solid #fff; }
+div.jsxc_video {
+ background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMiIKICAgd2lkdGg9IjIwIgogICBoZWlnaHQ9IjIwIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExMCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGRlZnMKICAgICBpZD0iZGVmczgiIC8+CiAgPGcKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuMDM3ODg1OTQsMCwwLDAuMDM3ODg1OTQsLTAuNDEzNDA3OTMsLTIuNjMxMDcxNikiPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoMzkwNiIKICAgICAgIHN0eWxlPSJmaWxsOiM4MDgwODA7c3Ryb2tlOm5vbmUiCiAgICAgICBkPSJtIDM2MS42NTE0OCwzMTMuNTE3NjggMTc3LjE2MDc0LC0xMzEuNzg1MTYgMCwzMDIuMjI5OTkgTCAzNTguOTczMzgsMzUwLjE4NTE3IFogTSAxMC45MTE5MjIsMTgyLjQwNjM0IGwgMzc4LjM3MjY3OCwwIDAsMzAyLjY1NTgyIC0zNzguMzcyNjc4LDAgeiIgLz4KICA8L2c+Cjwvc3ZnPgo=");
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: 15px 15px; }
+ div.jsxc_video:not(.jsxc_disabled):hover {
+ background-image: url("../js/jsxc/img/camera_icon_white.svg"); }
+
+.jsxc_controlbar {
+ width: 640px; }
+ .jsxc_controlbar .jsxc_showchat {
+ float: right; }
+
+.jsxc_multi > div {
+ display: none; }
+
+.jsxc_snapshotbar {
+ width: 100%;
+ display: none; }
+ .jsxc_snapshotbar img {
+ height: 50px; }
+
+.jsxc_buttongroup {
+ display: inline; }
+ .jsxc_buttongroup button:first-child {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ margin-right: 0; }
+ .jsxc_buttongroup button:last-child {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ margin-left: 0; }
+
+.jsxc_chatarea {
+ position: relative;
+ float: right;
+ height: 480px;
+ width: 250px;
+ background-color: #999999; }
+ .jsxc_chatarea .jsxc_settings {
+ display: none !important; }
+ .jsxc_chatarea .jsxc_close {
+ display: none !important; }
+ .jsxc_chatarea .jsxc_video {
+ display: none !important; }
+ .jsxc_chatarea .jsxc_window {
+ bottom: 0;
+ box-shadow: none; }
+ .jsxc_chatarea > ul {
+ width: 250px;
+ height: 480px;
+ list-style: none;
+ padding: 0; }
+
+.bubblingG {
+ text-align: center;
+ width: 129px;
+ height: 80px;
+ position: absolute;
+ top: 40%;
+ left: 50%;
+ margin-left: -64px; }
+ .bubblingG span {
+ display: inline-block;
+ vertical-align: middle;
+ width: 16px;
+ height: 16px;
+ margin: 40px auto;
+ background: #000;
+ border-radius: 81px;
+ -webkit-animation: bubblingG 1.3s infinite alternate;
+ animation: bubblingG 1.3s infinite alternate; }
+
+#bubblingG_1 {
+ -webkit-animation-delay: 0s;
+ animation-delay: 0s; }
+
+#bubblingG_2 {
+ -webkit-animation-delay: 0.39s;
+ animation-delay: 0.39s; }
+
+#bubblingG_3 {
+ -webkit-animation-delay: 0.78s;
+ animation-delay: 0.78s; }
+
+@-webkit-keyframes bubblingG {
+
+ 0% {
+ width: 16px;
+ height: 16px;
+ background-color: #000;
+ -webkit-transform: translateY(0);
+ transform: translateY(0); }
+
+ 100% {
+ width: 39px;
+ height: 39px;
+ background-color: #fff;
+ -webkit-transform: translateY(-34px);
+ transform: translateY(-34px); } }
+
+@keyframes bubblingG {
+ 0% {
+ width: 16px;
+ height: 16px;
+ background-color: #000;
+ -webkit-transform: translateY(0);
+ transform: translateY(0); }
+
+ 100% {
+ width: 39px;
+ height: 39px;
+ background-color: #fff;
+ -webkit-transform: translateY(-34px);
+ transform: translateY(-34px); } }
+
+.jsxc_fullscreen.jsxc_localvideo {
+ border: 1px solid #fff; }
+
+.jsxc_videoSuitable .jsxc_name {
+ font-style: italic; }
+
+#jsxc_buddylist .jsxc_options .jsxc_video {
+ background-image: url("../js/jsxc/img/camera_icon_white.svg"); }
+ #jsxc_buddylist .jsxc_options .jsxc_video.jsxc_disabled {
+ opacity: 0.2; }
+
+#jsxc_roster {
+ top: 45px;
+ background-color: #383C43; }
+
+#jsxc_windowList, #jsxc_windowListSB {
+ z-index: 80; }
+
+#jsxc {
+ padding: 20px; }
+ #jsxc h1 {
+ margin: 15px 0px 5px 0px;
+ font-size: 1.5em; }
+ #jsxc a {
+ color: blue;
+ text-decoration: underline; }
+ #jsxc a:hover {
+ text-decoration: none; }
#jsxc_alt {
- text-align: right;
- margin: 15px;
- opacity: 0.5;
- font-style: italic;
- padding-top: 5px;
-}
-
-#jsxc_alt:hover {
- opacity: 0.8;
-}
-
-.jsxc_success,.jsxc_fail {
- border: 1px solid #fff;
- border-radius: 3px;
- padding: 3px;
- padding-left: 22px;
- /* text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); */
- background-position: 3px center;
- background-repeat: no-repeat;
- margin: 3px;
- width: -moz-fit-content;
- width: -webkit-fit-content;
-}
+ text-align: right;
+ margin: 15px;
+ opacity: 0.5;
+ font-style: italic;
+ padding-top: 5px; }
+ #jsxc_alt:hover {
+ opacity: 0.8; }
+
+.jsxc_success, .jsxc_fail {
+ border: 1px solid #fff;
+ border-radius: 3px;
+ padding: 3px;
+ padding-left: 22px;
+ background-position: 3px center;
+ background-repeat: no-repeat;
+ margin: 3px;
+ width: -moz-fit-content;
+ width: -webkit-fit-content; }
.jsxc_success {
- background-color: #A1F6BB;
- background-image: url('../img/pass-icon.png');
- color: #003300;
- border-color: #003300;
-}
+ background-color: #A1F6BB;
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAT5QTFRFAIAA////AH8A3+/fAFAAudy5OJw4D4cPAE8Acrlyc7lzAE4ADIYMAIgAAI0AAF0AAE0A/P38AHQAAIUAAIQAcbhxAJIAAGEA+fz5AHwAXK5cAHYAbrduC4ULAIEAAFgAAG8AAGwAAI4AAFEADYYNAH4AAI8AAGAAAHAAAF4AAFYAAHEAAGsAAFkAt9y3/f79AJAAPJo8AIMAWqlaAHMAsdGxUaRR2OfYCWAJAJEAG2sbA2wDBlQGCoUKAIwA1ejVzOTMAHIAw9zDAIoAAIYA2OjYAFUAxuDGNZo1AFcAJG4kAF8AuNy4D3QPAFMAAFwAt9G3AFIAnLycAIIAGHMYCYQJM3QzAJMAS5tLmcGZAHsAZphmAHoAWq1aRZVFVKZU+fv5EnUSOJ04b7dvlrmWDG8MCWEJBlcGAIkA////s2yFswAAAGp0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ALzk3OMAAADxSURBVHjaJM9VbgNBEATQHtidZUYzc5jRATvMzExz/wvEXvdXqaWS6gEfnCCLlcrepzDMwDlRrmHadb3cWoYMHyQF4G2XSutuDp4Jh4kMfrr8mwwCoxcXwOcwnm0XPeM2qOl4asXJHoFfbRbAWKrpMGPP/WAfPmbNzoNu6PBqo/5yWgRmtsJGDPF8hLpX+yEDdkoPFl4adxHaeG+e1BmIjnSB7PsI7R7XW3RQkbG6+oUQ2vo+zJcplkHQOhJ9fDtbzO9Qa1MTgCt4TKU3v+dlyQpBSabjoiVJVFXbkCIjnFZ1TDONNSXBjfiMiXLC/xdgAGiSKD8R0WLTAAAAAElFTkSuQmCC');
+ color: #003300;
+ border-color: #003300; }
.jsxc_fail {
- background-color: #FF9999;
- background-image: url('../img/fail-icon.png');
- color: #800000;
- border-color: #800000;
-}
+ background-color: #FF9999;
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVQTFRF0wAAvwAAxQAAyQAA+P+EuQAA1wAAzwAAqAAA5KpY4AAAsgAA2gAA/Ozs/zMz4gAArQAA3gAAowAA/+3t//Dw0QAA8t1y1lUs/zY24ohG7sxq4BgYsxEJzFct4BEJ5QAA46pYwykV0gAA1AAAvREJ4Roa4xcX5AAA0AAAzQAA2A0N/zAwzAAAwgAA3RcX8+57ywAA3RgY4xoa1QAA4RcX1gkJ////3JZElQAAADd0Uk5T////////////////////////////////////////////////////////////////////////ABBZnYsAAACeSURBVHjaTM/HAoIwEATQUYISNRGkN7H3XvL/n2Z24eC7zOzcFsYY9ZqynbIH7L0ddT6KBlUGQTAXYm6jVAbqNrFyIXLKp8J3QKQQkssJLRq4vBEPCQ1c1jg6JE2SlEuMR58VRZsXNNfevz0al2zkYskFyDC26ruoKd0zIg3f9yspKxsHHcLYxes4OqTnQo0Z8VY64m9pYZm9zU+AAQAXihCg6/HjBgAAAABJRU5ErkJggg==');
+ color: #800000;
+ border-color: #800000; }
.jsxc_log {
- width: 500px;
-}
+ width: 500px; }
#mainContainer, #odf-toolbar {
- right: 205px;
- left: 0px;
- width: auto !important;
- z-index: 70 !important;
-} \ No newline at end of file
+ right: 205px;
+ left: 0px;
+ width: auto !important;
+ z-index: 70 !important; }
diff --git a/build/img/ojsxc.png b/build/img/ojsxc.png
new file mode 100644
index 0000000..1a7c613
--- /dev/null
+++ b/build/img/ojsxc.png
Binary files differ
diff --git a/build/js/admin.js b/build/js/admin.js
index bac51bf..550c78e 100644
--- a/build/js/admin.js
+++ b/build/js/admin.js
@@ -1,13 +1,13 @@
/*!
- * ojsxc v1.0.0 - 2014-11-06
+ * ojsxc v1.1.0-beta - 2015-02-03
*
- * Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
+ * Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
*
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0
+ * @version 1.1.0-beta
* @license MIT
*/
@@ -15,34 +15,40 @@ $(document).ready(function() {
$('#ojsxc').submit(function(event) {
event.preventDefault();
- //clear area
+ // clear area
$('#ojsxc .msg').html(' ');
-
+
var post = $(this).serialize();
- var status = $('<div/>').html('<img src="' + jsxc.options.root +'/img/loading.gif" alt="wait" width="16px" height="16px" />');
-
+ var status = $('<div/>').html('<img src="' + jsxc.options.root + '/img/loading.gif" alt="wait" width="16px" height="16px" />');
+
var statusBosh = status.clone().html(status.html() + " Testing BOSH Server...");
$('#ojsxc .msg').append(statusBosh);
-
+
var rid = jsxc.storage.getItem('rid') || '123456';
var xmppDomain = $('#xmppDomain').val();
var fail = function() {
statusBosh.addClass('jsxc_fail').text('BOSH server NOT reachable. Please beware of the same-origin-policy (SOP). If your XMPP server doesn\'t reside on the same host as your OwnCloud (same port/protocol), use the Apache ProxyRequest or modify the content-security-policy (CSP) by defining "custom_csp_policy" in OwnCloud\'s config.php.');
};
-
- $.post($('#boshUrl').val(), "<body rid='"+rid+"' xmlns='http://jabber.org/protocol/httpbind' to='"+xmppDomain+"' xml:lang='en' wait='60' hold='1' content='text/xml; charset=utf-8' ver='1.6' xmpp:version='1.0' xmlns:xmpp='urn:xmpp:xbosh'/>").done(function(stanza) {
+
+ $.ajax({
+ type: 'POST',
+ url: $('#boshUrl').val(),
+ data: "<body rid='" + rid + "' xmlns='http://jabber.org/protocol/httpbind' to='" + xmppDomain + "' xml:lang='en' wait='60' hold='1' content='text/xml; charset=utf-8' ver='1.6' xmpp:version='1.0' xmlns:xmpp='urn:xmpp:xbosh'/>",
+ global: false
+ }).done(function(stanza) {
+
var body = $(stanza).find('body[xmlns="http://jabber.org/protocol/httpbind"]');
- var condition = (body)? body.attr('condition'): null;
-
- if(body.length > 0 && condition != 'internal-server-error'){
+ var condition = (body) ? body.attr('condition') : null;
+
+ if (body.length > 0 && condition != 'internal-server-error') {
statusBosh.addClass('jsxc_success').text('BOSH Server reachable.');
} else {
fail();
- if(condition == 'internal-server-error'){
- statusBosh.html(statusBosh.text() + ' <br /><br /><b>Error: </b>'+body.text());
+ if (condition == 'internal-server-error') {
+ statusBosh.html(statusBosh.text() + ' <br /><br /><b>Error: </b>' + body.text());
}
}
-
+
}).fail(fail);
var statusSet = status.clone().html(status.html() + " Saving...");
diff --git a/build/js/eof.js b/build/js/eof.js
index e71f8b4..3238116 100644
--- a/build/js/eof.js
+++ b/build/js/eof.js
@@ -1,13 +1,13 @@
/*!
- * ojsxc v1.0.0 - 2014-11-06
+ * ojsxc v1.1.0-beta - 2015-02-03
*
- * Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
+ * Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
*
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0
+ * @version 1.1.0-beta
* @license MIT
*/
diff --git a/build/js/jsxc/css/jsxc.css b/build/js/jsxc/css/jsxc.css
new file mode 100644
index 0000000..d907fd8
--- /dev/null
+++ b/build/js/jsxc/css/jsxc.css
@@ -0,0 +1,1026 @@
+#jsxc_buddylist li:hover .jsxc_avatar, .jsxc_avatar {
+ width: 25px;
+ height: 25px;
+ line-height: 25px;
+ margin-top: 2px;
+ margin-right: 4px;
+ background-color: #999999;
+ border-radius: 2px;
+ float: left;
+ text-align: center;
+ font-weight: bold;
+ font-size: 30px;
+ color: #b3b3b3;
+ overflow: hidden;
+ position: relative;
+ font-family: Arial, sans-serif;
+ background-size: cover;
+ background-position: center center; }
+
+div.jsxc_transfer, div.jsxc_transfer.jsxc_disabled:hover {
+ background-image: url("../../../img/padlock_open_grey.svg");
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: 12px 12px; }
+
+#jsxc_buddylist li:hover .jsxc_avatar, .jsxc_avatar {
+ width: 25px;
+ height: 25px;
+ line-height: 25px;
+ margin-top: 2px;
+ margin-right: 4px;
+ background-color: #999999;
+ border-radius: 2px;
+ float: left;
+ text-align: center;
+ font-weight: bold;
+ font-size: 30px;
+ color: #b3b3b3;
+ overflow: hidden;
+ position: relative;
+ font-family: Arial, sans-serif;
+ background-size: cover;
+ background-position: center center; }
+
+div.jsxc_transfer, div.jsxc_transfer.jsxc_disabled:hover {
+ background-image: url("../../../img/padlock_open_grey.svg");
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: 12px 12px; }
+
+#jsxc_buddylist {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ width: 204px; }
+ #jsxc_buddylist li {
+ padding: 0;
+ margin: 0;
+ height: 30px;
+ border-bottom: 1px solid gray;
+ cursor: pointer;
+ width: 200px;
+ position: relative;
+ color: gray;
+ font-family: Arial, sans-serif;
+ line-height: 30px;
+ padding-left: 3px;
+ z-index: 85;
+ overflow: hidden; }
+ #jsxc_buddylist li.jsxc_expand {
+ height: 54px; }
+ #jsxc_buddylist li.jsxc_expand .jsxc_avatar {
+ width: 48px;
+ height: 48px; }
+ #jsxc_buddylist li.jsxc_expand .jsxc_avatar img {
+ width: 48px;
+ height: 48px; }
+ #jsxc_buddylist li .jsxc_name:before {
+ content: ' ';
+ width: 0;
+ height: 0;
+ display: inline-block;
+ opacity: 0;
+ -webkit-transition: width 0.5s, opacity 0.5s;
+ transition: width 0.5s, opacity 0.5s; }
+ #jsxc_buddylist li.jsxc_unreadMsg .jsxc_name:before {
+ width: 12px;
+ height: 12px;
+ border-radius: 6px;
+ background-color: #ffa500;
+ margin-right: 3px;
+ opacity: 1;
+ -webkit-transition: width 0.5s, opacity 0.5s;
+ transition: width 0.5s, opacity 0.5s; }
+ #jsxc_buddylist .jsxc_name {
+ padding-right: 30px; }
+ #jsxc_buddylist .jsxc_oneway {
+ opacity: 0.7; }
+ #jsxc_buddylist .jsxc_right {
+ float: right;
+ margin-right: 6px; }
+ #jsxc_buddylist .jsxc_right div {
+ font-weight: bold;
+ text-align: center;
+ font-size: 13px;
+ line-height: 20px;
+ color: #fff; }
+ #jsxc_buddylist .jsxc_right div:hover {
+ opacity: 1; }
+ #jsxc_buddylist .jsxc_control {
+ position: absolute;
+ width: 30px;
+ height: 30px;
+ top: 0;
+ right: 0;
+ cursor: pointer; }
+ #jsxc_buddylist .jsxc_control:after {
+ content: '▾';
+ position: absolute;
+ left: 50%;
+ top: 15px;
+ width: 16px;
+ height: 16px;
+ line-height: 16px;
+ text-align: center;
+ margin-left: -8px;
+ margin-top: -8px;
+ border-radius: 8px;
+ color: #b3b3b3;
+ background-color: rgba(102, 102, 102, 0.5);
+ opacity: 0.6;
+ -webkit-transition: -webkit-transform 0.5s;
+ transition: transform 0.5s; }
+ #jsxc_buddylist .jsxc_control:hover:after {
+ color: #fff;
+ opacity: 1; }
+ #jsxc_buddylist .jsxc_options {
+ height: 20px;
+ float: left;
+ border-radius: 2px;
+ background-color: rgba(102, 102, 102, 0.5); }
+ #jsxc_buddylist .jsxc_options > div {
+ height: 20px;
+ width: 20px;
+ float: left;
+ margin-right: 0 1px;
+ background-repeat: no-repeat;
+ background-position: center center;
+ opacity: 0.6;
+ cursor: pointer; }
+ #jsxc_buddylist .jsxc_options > div:hover {
+ opacity: 1; }
+ #jsxc_buddylist .jsxc_chaticon {
+ background-image: url("../../../img/speech_balloon_white.svg");
+ background-size: 15px 15px; }
+ #jsxc_buddylist .jsxc_videoicon {
+ background-image: url("../../../img/camera_icon_white.svg");
+ background-size: 13px 13px; }
+ #jsxc_buddylist .jsxc_vcardicon {
+ font-size: 15px;
+ line-height: 20px;
+ text-align: center;
+ color: #fff;
+ font-weight: bold;
+ font-family: serif; }
+ #jsxc_buddylist li.jsxc_expand .jsxc_control:after {
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg); }
+ #jsxc_buddylist.jsxc_hideOffline .jsxc_offline {
+ display: none; }
+
+.jsxc_online {
+ border-left: 4px solid #00bfff !important; }
+
+.jsxc_chat {
+ border-left: 4px solid #00bfff !important; }
+
+.jsxc_away {
+ border-left: 4px solid #ffa500 !important; }
+
+.jsxc_xa {
+ border-left: 4px solid #ffa500 !important; }
+
+.jsxc_dnd {
+ border-left: 4px solid #f00 !important; }
+
+.jsxc_offline {
+ border-left: 4px solid #999999 !important; }
+
+.jsxc_hidden {
+ display: none; }
+
+.jsxc_invalid {
+ border: 2px solid #f00 !important; }
+
+.jsxc_emoticon {
+ width: 19px;
+ height: 19px;
+ background-size: 19px 19px !important;
+ border: 0; }
+
+.jsxc_angel {
+ background: url("../../../img/emotions/angel.png"); }
+
+.jsxc_angry {
+ background: url("../../../img/emotions/angry.png"); }
+
+.jsxc_smile {
+ background: url("../../../img/emotions/smile.png"); }
+
+.jsxc_grin {
+ background: url("../../../img//emotions/grin.png"); }
+
+.jsxc_sad {
+ background: url("../../../img/emotions/sad.png"); }
+
+.jsxc_wink {
+ background: url("../../../img/emotions/wink.png"); }
+
+.jsxc_tonguesmile {
+ background: url("../../../img/emotions/tonguesmile.png"); }
+
+.jsxc_surprised {
+ background: url("../../../img/emotions/surprised.png"); }
+
+.jsxc_kiss {
+ background: url("../../../img/emotions/kiss.png"); }
+
+.jsxc_sunglassess {
+ background: url("../../../img/emotions/sunglassess.png"); }
+
+.jsxc_crysad {
+ background: url("../../../img/emotions/crysad.png"); }
+
+.jsxc_doubt {
+ background: url("../../../img/emotions/doubt.png"); }
+
+.jsxc_zip {
+ background: url("../../../img/emotions/zip.png"); }
+
+.jsxc_thumbsup {
+ background: url("../../../img/emotions/thumbsup.png"); }
+
+.jsxc_thumbsdown {
+ background: url("../../../img/emotions/thumbsdown.png"); }
+
+.jsxc_beer {
+ background: url("../../../img/emotions/beer.png"); }
+
+.jsxc_devil {
+ background: url("../../../img/emotions/devil.png"); }
+
+.jsxc_kissing {
+ background: url("../../../img/emotions/kissing.png"); }
+
+.jsxc_rose {
+ background: url("../../../img/emotions/rose.png"); }
+
+.jsxc_music {
+ background: url("../../../img/emotions/music.png"); }
+
+.jsxc_love {
+ background: url("../../../img/emotions/love.png"); }
+
+.jsxc_tired {
+ background: url("../../../img/emotions/tired.png"); }
+
+#jsxc_roster {
+ position: fixed;
+ top: 0px;
+ bottom: 0;
+ right: 0;
+ width: 200px;
+ overflow: visible;
+ border-left: 4px solid #999999;
+ z-index: 80;
+ margin-left: 10px;
+ box-shadow: 0px 0px 7px #000;
+ background-color: #333333; }
+ #jsxc_roster a {
+ cursor: pointer; }
+ #jsxc_roster .slimScrollDiv {
+ left: -4px;
+ margin-bottom: 30px;
+ z-index: 40; }
+ #jsxc_roster .jsxc_wait {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ width: 160px;
+ padding: 20px;
+ background-color: #fff;
+ z-index: 60; }
+ #jsxc_roster .jsxc_wait img {
+ padding: 5px; }
+ #jsxc_roster .jsxc_wait h3 {
+ margin-bottom: 5px;
+ font-size: 1.13em;
+ font-weight: bold; }
+ #jsxc_roster input {
+ position: absolute;
+ top: 50%;
+ left: 31px;
+ width: 157px;
+ height: 18px;
+ margin-top: -11px;
+ padding: 2px;
+ border: 0;
+ background-image: none;
+ background-color: #fff;
+ border-radius: 3px;
+ box-shadow: inner 0 0 5px #666666;
+ outline: none; }
+ #jsxc_roster p {
+ color: gray;
+ padding: 10px; }
+ #jsxc_roster p a {
+ color: #b3b3b3;
+ text-decoration: underline; }
+ #jsxc_roster .jsxc_avatar {
+ position: relative;
+ cursor: pointer; }
+ #jsxc_roster .jsxc_avatar img {
+ cursor: pointer; }
+ #jsxc_roster .jsxc_expand input {
+ left: 51px;
+ width: 137px; }
+ #jsxc_roster.jsxc_noConnection .slimScrollDiv {
+ display: none; }
+ #jsxc_roster.jsxc_noConnection > .jsxc_bottom {
+ display: none; }
+
+#jsxc_toggleRoster {
+ width: 14px;
+ height: 100%;
+ position: absolute;
+ left: -14px !important;
+ top: 0;
+ z-index: 110;
+ background-color: transparent;
+ cursor: pointer; }
+ #jsxc_toggleRoster:hover {
+ background-color: rgba(153, 153, 153, 0.5); }
+
+#jsxc_roster > .jsxc_bottom {
+ position: absolute;
+ left: -4px;
+ bottom: 0;
+ height: 30px;
+ width: 200px;
+ border-left: 4px solid #999999;
+ border-top: 1px solid gray;
+ padding-left: 0;
+ background-color: #1a1a1a;
+ color: gray;
+ cursor: pointer;
+ line-height: 30px;
+ z-index: 50; }
+ #jsxc_roster > .jsxc_bottom ul {
+ width: 190px;
+ position: absolute;
+ bottom: 30px;
+ left: 0;
+ display: none;
+ border-top: 1px solid gray;
+ padding-left: 10px;
+ background-color: #1a1a1a;
+ margin: 0; }
+ #jsxc_roster > .jsxc_bottom ul li:last-child {
+ border-bottom: 1px solid gray; }
+ #jsxc_roster > .jsxc_bottom li {
+ height: 30px;
+ background-color: #1a1a1a;
+ color: gray;
+ cursor: pointer;
+ width: 180px;
+ padding-left: 10px;
+ line-height: 30px;
+ text-align: left;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap; }
+ #jsxc_roster > .jsxc_bottom li.jsxc_disabled {
+ color: #333333;
+ cursor: default; }
+ #jsxc_roster > .jsxc_bottom li:hover:not(.jsxc_disabled) {
+ color: #fff;
+ background-color: #3f8fba; }
+#jsxc_roster > .jsxc_bottom > div > span {
+ cursor: pointer; }
+#jsxc_roster > .jsxc_bottom > div:hover {
+ color: #fff; }
+
+.jsxc_right {
+ text-align: right; }
+
+.jsxc_center {
+ text-align: center; }
+
+.jsxc_sep {
+ border-top: 1px solid #000; }
+
+.jsxc_name {
+ overflow: hidden;
+ height: 30px;
+ cursor: pointer;
+ text-overflow: ellipsis;
+ white-space: nowrap; }
+ .jsxc_name:hover {
+ color: #fff; }
+
+.jsxc_maxWidth {
+ max-width: 500px; }
+
+#jsxc_dialog {
+ padding: 10px;
+ min-width: 300px; }
+ #jsxc_dialog ul {
+ list-style: none;
+ margin: 0;
+ padding: 0; }
+ #jsxc_dialog li {
+ margin: 0;
+ padding: 0; }
+ #jsxc_dialog p {
+ margin-bottom: 1em; }
+ #jsxc_dialog p input {
+ margin-bottom: 5px;
+ width: 60%;
+ outline: none; }
+ #jsxc_dialog p input[type="submit"] {
+ width: auto; }
+ #jsxc_dialog p label {
+ display: block;
+ width: 30%;
+ float: left;
+ padding: 6px 0; }
+ #jsxc_dialog h3 {
+ font-size: 120%;
+ font-weight: bold;
+ margin-bottom: 10px;
+ margin-top: 20px; }
+ #jsxc_dialog .jsxc_right {
+ margin-top: 20px; }
+ #jsxc_dialog fieldset {
+ border: 2px solid #cccccc; }
+ #jsxc_dialog legend {
+ padding: 0 10px;
+ font-weight: bold; }
+ #jsxc_dialog input {
+ outline: none; }
+ #jsxc_dialog input:invalid {
+ border: 1px solid #f00; }
+ #jsxc_dialog .jsxc_fieldset {
+ width: 280px;
+ padding: 10px;
+ border-radius: 3px; }
+ #jsxc_dialog .jsxc_fieldset label {
+ display: inline-block;
+ width: 100px; }
+ #jsxc_dialog .jsxc_fieldset input[type="Number"] {
+ display: inline-block;
+ width: 50px; }
+ #jsxc_dialog input[readonly] {
+ background-color: #e6e6e6; }
+
+.jsxc_avatar img {
+ display: block;
+ width: 25px;
+ height: 25px;
+ position: absolute;
+ top: 0;
+ left: 0; }
+
+ul.jsxc_vCard {
+ min-width: 400px; }
+ ul.jsxc_vCard ul {
+ margin-left: 20px; }
+ ul.jsxc_vCard li {
+ cursor: default !important; }
+
+.jsxc_spot {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ background-color: #fff;
+ border-radius: 5px;
+ text-indent: -99999em;
+ margin-top: 3px;
+ margin-right: 5px;
+ border: 1px solid #000 !important;
+ line-height: 100%;
+ cursor: pointer; }
+ .jsxc_spot.jsxc_online {
+ background-color: #00bfff; }
+ .jsxc_spot.jsxc_chat {
+ background-color: #00bfff; }
+ .jsxc_spot.jsxc_away {
+ background-color: #ffa500; }
+ .jsxc_spot.jsxc_xa {
+ background-color: #ffa500; }
+ .jsxc_spot.jsxc_dnd {
+ background-color: #f00; }
+ .jsxc_spot.jsxc_offline {
+ background-color: #999999; }
+
+#jsxc_menu {
+ height: 30px;
+ width: 30px;
+ cursor: pointer;
+ float: right;
+ text-align: center; }
+ #jsxc_menu:hover > span {
+ opacity: 1; }
+
+#jsxc_avatar {
+ height: 30px;
+ width: 30px;
+ float: left;
+ margin: 0 2px; }
+
+#jsxc_notice {
+ height: 30px;
+ width: 30px;
+ float: right;
+ text-align: center;
+ line-height: 30px; }
+ #jsxc_notice span {
+ background-color: #ffa500;
+ border-radius: 11px;
+ color: #000;
+ font-size: 80%;
+ padding: 2px;
+ position: relative;
+ -webkit-animation: bounce 2s 1s infinite;
+ animation: bounce 2s 1s infinite; }
+
+#jsxc_menu > span {
+ opacity: 0.5;
+ display: block;
+ width: 25px;
+ height: 30px;
+ background-image: url("../../../img/gear_white.svg");
+ background-size: 18px 18px;
+ background-repeat: no-repeat;
+ background-position: center center; }
+
+@-webkit-keyframes bounce {
+
+ 0% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
+
+ 12% {
+ bottom: 5px;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out; }
+
+ 25% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
+
+ 37% {
+ bottom: 5px;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out; }
+
+ 50% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
+
+ 100% {
+ bottom: 0; } }
+
+@keyframes bounce {
+ 0% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
+
+ 12% {
+ bottom: 5px;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out; }
+
+ 25% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
+
+ 37% {
+ bottom: 5px;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out; }
+
+ 50% {
+ bottom: 0;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in; }
+
+ 100% {
+ bottom: 0; } }
+
+#jsxc_presence {
+ cursor: pointer;
+ padding-left: 2px;
+ overflow: hidden; }
+
+#jsxc_windowList {
+ position: fixed;
+ bottom: 0;
+ right: 210px;
+ left: 0;
+ z-index: 50;
+ clip: rect(-10000px, 10000px, 30px, 30px); }
+ #jsxc_windowList > ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ height: 30px;
+ overflow: visible;
+ white-space: nowrap;
+ -webkit-transition: right 0.5s;
+ transition: right 0.5s; }
+ #jsxc_windowList > ul > li {
+ padding: 0;
+ margin: 0;
+ display: inline-block;
+ width: 250px;
+ height: 30px;
+ position: relative;
+ overflow: visible;
+ margin-right: 5px;
+ cursor: pointer;
+ white-space: normal; }
+ #jsxc_windowList > ul > li.jsxc_min {
+ width: 200px !important; }
+ #jsxc_windowList > ul > li.jsxc_unreadMsg .jsxc_name {
+ font-style: italic; }
+ #jsxc_windowList > ul > li.jsxc_unreadMsg .jsxc_cycle {
+ background-color: #ffa500; }
+
+#jsxc_windowListSB {
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ width: 30px;
+ height: 30px; }
+ #jsxc_windowListSB > div {
+ box-sizing: border-box;
+ width: 14px;
+ height: 100%;
+ background-color: #cccccc;
+ color: gray;
+ text-align: center;
+ line-height: 30px;
+ float: left;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none; }
+ #jsxc_windowListSB > div:hover {
+ background-color: #b3b3b3; }
+ #jsxc_windowListSB > .jsxc_disabled {
+ background-color: #e6e6e6 !important;
+ color: #cccccc;
+ cursor: default !important;
+ display: none; }
+
+.jsxc_bar {
+ background-color: #1a1a1a;
+ cursor: pointer;
+ height: 30px;
+ line-height: 26px;
+ padding: 2px;
+ color: gray;
+ width: 100%;
+ box-sizing: border-box;
+ overflow: hidden; }
+
+.jsxc_cycle {
+ position: absolute;
+ bottom: 9px;
+ right: 5px;
+ height: 12px;
+ width: 12px;
+ border-radius: 6px; }
+
+.jsxc_window {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ height: auto;
+ background-color: #999999;
+ z-index: 80;
+ cursor: default; }
+ .jsxc_window .jsxc_emoticons {
+ height: 30px;
+ width: 30px;
+ position: absolute;
+ top: 240px;
+ right: 0;
+ cursor: pointer; }
+ .jsxc_window .jsxc_emoticons:after {
+ content: ' ';
+ background-image: url("../../../img/smiley.png");
+ background-position: center center;
+ background-repeat: no-repeat;
+ height: 30px;
+ width: 30px;
+ opacity: 0.3;
+ position: absolute;
+ top: 0;
+ left: 0; }
+ .jsxc_window .jsxc_emoticons ul {
+ display: none;
+ position: absolute;
+ bottom: 33px;
+ right: 3px;
+ width: 210px;
+ background-color: rgba(51, 51, 51, 0.8);
+ padding: 3px;
+ border-radius: 3px;
+ z-index: 200;
+ list-style-type: none; }
+ .jsxc_window .jsxc_emoticons ul:after {
+ content: '';
+ position: absolute;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-top: 6px solid rgba(51, 51, 51, 0.8);
+ display: block;
+ width: 0;
+ z-index: 1;
+ right: 6px;
+ bottom: -6px; }
+ .jsxc_window .jsxc_emoticons li {
+ float: right;
+ cursor: pointer; }
+ .jsxc_window .jsxc_emoticons div {
+ cursor: pointer;
+ border-radius: 3px;
+ background-size: 30px 30px;
+ width: 30px;
+ height: 30px; }
+ .jsxc_window .jsxc_emoticons div:hover {
+ background-color: rgba(255, 255, 255, 0.8); }
+ .jsxc_window .jsxc_emoticons:hover:after {
+ opacity: 0.5; }
+ .jsxc_window .jsxc_fade {
+ position: relative; }
+ .jsxc_window .jsxc_gradient {
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 15px;
+ z-index: 100;
+ background: -webkit-linear-gradient(top, #999999 0, rgba(0, 0, 0, 0) 100%);
+ background: linear-gradient(to bottom, #999999 0, rgba(0, 0, 0, 0) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$window_gradient', endColorstr='#00282323', GradientType=0); }
+ .jsxc_window .jsxc_avatar {
+ margin-top: 1px; }
+ .jsxc_window .jsxc_textarea {
+ width: 100%;
+ overflow: hidden;
+ padding: 3px; }
+ .jsxc_window .slimScrollDiv {
+ margin: 0 0 6px 0;
+ left: auto !important;
+ top: auto !important; }
+ .jsxc_window input.jsxc_textinput {
+ width: 100%;
+ height: 30px;
+ margin: 0;
+ padding: 3px;
+ padding-right: 40px;
+ outline: none;
+ border-radius: 0;
+ box-sizing: border-box;
+ text-align: right; }
+ .jsxc_window input::-webkit-input-placeholder {
+ color: #000;
+ opacity: 0.3; }
+ .jsxc_window input::-moz-placeholder {
+ color: #000;
+ opacity: 0.3; }
+ .jsxc_window input:-ms-input-placeholder {
+ color: #000;
+ opacity: 0.3; }
+ .jsxc_window input::placeholder {
+ color: #000;
+ opacity: 0.3; }
+ .jsxc_window .jsxc_tools {
+ height: 26px;
+ float: right; }
+ .jsxc_window .jsxc_tools > div {
+ width: 17px;
+ height: 26px;
+ display: block;
+ float: left;
+ color: gray;
+ font-family: Arial, sans-serif;
+ line-height: 26px;
+ cursor: pointer;
+ text-align: center; }
+ .jsxc_window .jsxc_close {
+ font-size: 20px; }
+ .jsxc_window .jsxc_close:hover {
+ color: #fff; }
+ .jsxc_window .ui-resizable-w {
+ left: 0; }
+ .jsxc_window .ui-resizable-nw {
+ top: 0;
+ left: 0;
+ width: 15px;
+ height: 15px;
+ z-index: 95 !important; }
+ .jsxc_window .ui-resizable-n {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 15px;
+ z-index: 100;
+ background: -webkit-linear-gradient(top, #999999 0, rgba(40, 35, 35, 0) 100%);
+ background: linear-gradient(to bottom, #999999 0, rgba(40, 35, 35, 0) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$window_gradient', endColorstr='#00282323', GradientType=0); }
+
+.jsxc_chatmessage {
+ margin: 3px;
+ padding: 4px;
+ padding-right: 10px;
+ max-width: 76%;
+ word-wrap: break-word;
+ background-color: #fff;
+ position: relative;
+ outline: none;
+ clear: both; }
+ .jsxc_chatmessage a {
+ color: #00f;
+ text-decoration: underline; }
+ .jsxc_chatmessage img {
+ width: 19px;
+ height: 19px;
+ background-size: 19px 19px; }
+
+.jsxc_timestamp {
+ font-size: 8px;
+ color: #999999;
+ line-height: 8px; }
+
+.jsxc_in {
+ float: left;
+ position: relative;
+ margin-left: 10px;
+ background: #f1f7fd;
+ border: solid 1px #a6b8c9;
+ border-radius: 3px; }
+ .jsxc_in:after {
+ content: '';
+ position: absolute;
+ border-style: solid;
+ border-width: 5px 6px 5px 0;
+ border-color: transparent #f1f7fd;
+ display: block;
+ width: 0;
+ z-index: 1;
+ left: -6px;
+ bottom: 10px; }
+ .jsxc_in .jsxc_timestamp {
+ float: left; }
+
+.jsxc_out {
+ float: right;
+ position: relative;
+ margin-right: 10px;
+ background: #e6ffd1;
+ border: solid 1px #b4d89f;
+ border-radius: 3px; }
+ .jsxc_out:after {
+ content: '';
+ position: absolute;
+ border-style: solid;
+ border-width: 5px 0 5px 6px;
+ border-color: transparent #e6ffd1;
+ display: block;
+ width: 0;
+ z-index: 1;
+ right: -6px;
+ bottom: 10px; }
+ .jsxc_out.jsxc_received:before {
+ content: '✓';
+ position: absolute;
+ bottom: 2px;
+ right: 2px;
+ font-size: 12px;
+ line-height: 12px;
+ color: #008000; }
+ .jsxc_out.jsxc_received .jsxc_timestamp {
+ margin-right: 4px; }
+ .jsxc_out .jsxc_timestamp {
+ float: right; }
+
+.jsxc_sys {
+ width: auto;
+ max-width: none;
+ padding-right: 4px;
+ box-sizing: border-box;
+ margin-right: 3px;
+ border-radius: 3px; }
+
+div.jsxc_settings {
+ background-image: url("../../../img/gear_grey.svg");
+ background-size: 15px 15px;
+ background-repeat: no-repeat;
+ background-position: center center;
+ overflow: visible; }
+ div.jsxc_settings:hover, div.jsxc_settings .hover {
+ background-image: url("../../../img/gear_white.svg"); }
+ div.jsxc_settings ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ position: absolute;
+ top: 30px;
+ left: 0;
+ box-shadow: 0 5px 5px -5px #000;
+ z-index: 110;
+ overflow: visible;
+ background-color: #1a1a1a;
+ display: none; }
+ div.jsxc_settings li {
+ width: 170px;
+ margin-left: 20px;
+ padding-left: 10px;
+ height: 30px;
+ line-height: 30px;
+ text-align: left;
+ cursor: pointer; }
+ div.jsxc_settings li:first-child {
+ border-top: 1px solid #cccccc; }
+ div.jsxc_settings li.jsxc_disabled {
+ color: #4d4d4d;
+ cursor: default; }
+ div.jsxc_settings li:hover:not(.jsxc_disabled) {
+ color: #fff;
+ background-color: #3f8fba; }
+
+div.jsxc_transfer:hover {
+ background-image: url("../../../img/padlock_open_white.svg"); }
+div.jsxc_transfer.jsxc_fin {
+ background-image: url("../../../img/padlock_close_grey.svg"); }
+div.jsxc_transfer.jsxc_enc {
+ background-image: url("../../../img/padlock_close_orange.svg"); }
+ div.jsxc_transfer.jsxc_enc.jsxc_trust {
+ background-image: url("../../../img/padlock_close_green.svg"); }
+
+#colorbox {
+ outline: none; }
+
+#cboxWrapper {
+ outline: none; }
+
+.jsxc_loading {
+ margin: 0 auto;
+ width: 32px;
+ height: 32px;
+ border: 0;
+ background-size: 32px 32px !important;
+ background: url("../../../img/loading.gif"); }
+
+/* @TODO: check */
+#jsxc_loginForm input[type="submit"] {
+ height: 34px;
+ display: inline-block;
+ padding: 6px 12px;
+ margin-bottom: 0;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.428571429;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ cursor: pointer;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #4cae4c; }
+
+#jsxc_notice > span:empty {
+ display: none; }
+
+.jsxc_oneway .jsxc_avatar {
+ -webkit-filter: grayscale(100%);
+ filter: grayscale(100%); }
+
+.jsxc_min .jsxc_tools {
+ display: none; }
+
+.jsxc_tools > .jsxc_disabled {
+ opacity: 0.5;
+ cursor: default !important; }
+
+img.jsxc_vCard {
+ float: right;
+ max-width: 200px;
+ max-height: 200px;
+ border: 5px solid #fff;
+ border-radius: 2px; }
diff --git a/build/js/jsxc/css/jsxc.webrtc.css b/build/js/jsxc/css/jsxc.webrtc.css
new file mode 100644
index 0000000..ac43ca0
--- /dev/null
+++ b/build/js/jsxc/css/jsxc.webrtc.css
@@ -0,0 +1,240 @@
+.jsxc_remotevideo, .jsxc_noRemoteVideo {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 9000;
+ background-color: #999999; }
+
+.jsxc_webrtc {
+ width: 900px; }
+ .jsxc_webrtc .jsxc_status {
+ z-index: 9999;
+ border-radius: 20px;
+ display: none;
+ position: absolute;
+ top: 30px;
+ left: 50%;
+ background-color: rgba(0, 0, 0, 0.5);
+ color: #fff;
+ padding: 15px;
+ font-weight: bold;
+ text-align: center; }
+ .jsxc_webrtc .slimScrollDiv {
+ opacity: 1 !important; }
+ .jsxc_webrtc li .jsxc_name {
+ cursor: auto; }
+ .jsxc_webrtc li .jsxc_name:hover {
+ color: gray; }
+
+.jsxc_videoContainer {
+ width: 640px;
+ height: 480px;
+ position: relative;
+ background-color: #999999; }
+ .jsxc_videoContainer video {
+ display: none; }
+ .jsxc_videoContainer .jsxc_noRemoteVideo {
+ display: none; }
+
+.jsxc_noRemoteVideo p {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ text-align: center;
+ color: #fff;
+ width: 100%;
+ z-index: 100; }
+.jsxc_noRemoteVideo > div {
+ width: 200px;
+ height: 200px;
+ overflow: hidden;
+ position: absolute;
+ top: 50%;
+ margin-top: -100px;
+ left: 50%;
+ margin-left: -100px; }
+ .jsxc_noRemoteVideo > div > div {
+ background-color: #4d4d4d; }
+ .jsxc_noRemoteVideo > div > div:first-child {
+ width: 50%;
+ height: 50%;
+ border-radius: 50%;
+ position: absolute;
+ left: 50%;
+ margin-left: -25%;
+ top: 10%; }
+ .jsxc_noRemoteVideo > div > div:last-child {
+ position: absolute;
+ bottom: -50%;
+ width: 100%;
+ height: 100%;
+ border-radius: 50%; }
+
+.jsxc_localvideo {
+ width: 160px;
+ height: 120px;
+ position: absolute;
+ right: 10px;
+ bottom: 10px;
+ z-index: 9990;
+ background-color: #000;
+ cursor: pointer; }
+
+div:full-screen {
+ width: 100%;
+ height: 100%;
+ background-color: #000; }
+ div:full-screen.jsxc_localvideo {
+ border: 1px solid #fff; }
+div:-webkit-full-screen {
+ width: 100%;
+ height: 100%;
+ background-color: #000; }
+div:-moz-full-screen {
+ width: 100%;
+ height: 100%;
+ background-color: #000; }
+div:-ms-fullscreen {
+ width: 100%;
+ height: 100%;
+ background-color: #000; }
+div:fullscreen {
+ width: 100%;
+ height: 100%;
+ background-color: #000; }
+ div:-webkit-full-screen.jsxc_localvideo {
+ border: 1px solid #fff; }
+ div:-moz-full-screen.jsxc_localvideo {
+ border: 1px solid #fff; }
+ div:-ms-fullscreen.jsxc_localvideo {
+ border: 1px solid #fff; }
+ div:fullscreen.jsxc_localvideo {
+ border: 1px solid #fff; }
+div.jsxc_video {
+ background-image: url("../../../img/camera_icon_grey.svg");
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: 15px 15px; }
+ div.jsxc_video:not(.jsxc_disabled):hover {
+ background-image: url("../../../img/camera_icon_white.svg"); }
+
+.jsxc_controlbar {
+ width: 640px; }
+ .jsxc_controlbar .jsxc_showchat {
+ float: right; }
+
+.jsxc_multi > div {
+ display: none; }
+
+.jsxc_snapshotbar {
+ width: 100%;
+ display: none; }
+ .jsxc_snapshotbar img {
+ height: 50px; }
+
+.jsxc_buttongroup {
+ display: inline; }
+ .jsxc_buttongroup button:first-child {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ margin-right: 0; }
+ .jsxc_buttongroup button:last-child {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ margin-left: 0; }
+
+.jsxc_chatarea {
+ position: relative;
+ float: right;
+ height: 480px;
+ width: 250px;
+ background-color: #999999; }
+ .jsxc_chatarea .jsxc_settings {
+ display: none !important; }
+ .jsxc_chatarea .jsxc_close {
+ display: none !important; }
+ .jsxc_chatarea .jsxc_video {
+ display: none !important; }
+ .jsxc_chatarea .jsxc_window {
+ bottom: 0;
+ box-shadow: none; }
+ .jsxc_chatarea > ul {
+ width: 250px;
+ height: 480px;
+ list-style: none;
+ padding: 0; }
+
+.bubblingG {
+ text-align: center;
+ width: 129px;
+ height: 80px;
+ position: absolute;
+ top: 40%;
+ left: 50%;
+ margin-left: -64px; }
+ .bubblingG span {
+ display: inline-block;
+ vertical-align: middle;
+ width: 16px;
+ height: 16px;
+ margin: 40px auto;
+ background: #000;
+ border-radius: 81px;
+ -webkit-animation: bubblingG 1.3s infinite alternate;
+ animation: bubblingG 1.3s infinite alternate; }
+
+#bubblingG_1 {
+ -webkit-animation-delay: 0s;
+ animation-delay: 0s; }
+
+#bubblingG_2 {
+ -webkit-animation-delay: 0.39s;
+ animation-delay: 0.39s; }
+
+#bubblingG_3 {
+ -webkit-animation-delay: 0.78s;
+ animation-delay: 0.78s; }
+
+@-webkit-keyframes bubblingG {
+
+ 0% {
+ width: 16px;
+ height: 16px;
+ background-color: #000;
+ -webkit-transform: translateY(0);
+ transform: translateY(0); }
+
+ 100% {
+ width: 39px;
+ height: 39px;
+ background-color: #fff;
+ -webkit-transform: translateY(-34px);
+ transform: translateY(-34px); } }
+
+@keyframes bubblingG {
+ 0% {
+ width: 16px;
+ height: 16px;
+ background-color: #000;
+ -webkit-transform: translateY(0);
+ transform: translateY(0); }
+
+ 100% {
+ width: 39px;
+ height: 39px;
+ background-color: #fff;
+ -webkit-transform: translateY(-34px);
+ transform: translateY(-34px); } }
+
+.jsxc_fullscreen.jsxc_localvideo {
+ border: 1px solid #fff; }
+
+.jsxc_videoSuitable .jsxc_name {
+ font-style: italic; }
+
+#jsxc_buddylist .jsxc_options .jsxc_video {
+ background-image: url("../../../img/camera_icon_white.svg"); }
+ #jsxc_buddylist .jsxc_options .jsxc_video.jsxc_disabled {
+ opacity: 0.2; }
diff --git a/build/js/jsxc/jsxc.css b/build/js/jsxc/jsxc.css
deleted file mode 100644
index 7692f9b..0000000
--- a/build/js/jsxc/jsxc.css
+++ /dev/null
@@ -1,1243 +0,0 @@
-.jsxc_online,.jsxc_chat {
- border-left: 4px solid #00BFFF !important;
-}
-
-.jsxc_away,.jsxc_xa {
- border-left: 4px solid orange !important;
-}
-
-.jsxc_dnd {
- border-left: 4px solid red !important;
-}
-
-.jsxc_offline {
- border-left: 4px solid #A4A4A4 !important;
-}
-
-.jsxc_hidden {
- display: none;
-}
-
-.jsxc_invalid {
- border: 2px solid red !important;
-}
-
-p.jsxc_right {
- text-align: right;
-}
-
-p.jsxc_center {
- text-align: center;
-}
-
-li.jsxc_sep {
- border-top: 1px solid black;
-}
-
-/*############################
- *########## Dialog ##########
- *############################*/
-#jsxc_dialog {
- padding: 10px;
- min-width: 300px;
-}
-
-#jsxc_dialog ul {
- list-style: none;
-}
-
-#jsxc_dialog ul, #jsxc_dialog li {
- margin: 0px;
- padding: 0px;
-}
-
-#jsxc_dialog p {
- margin-bottom: 1em;
-}
-
-#jsxc_dialog h3 {
- font-size: 120%;
- font-weight: bold;
- margin-bottom: 10px;
- margin-top: 20px;
-}
-
-#jsxc_dialog p input {
- margin-bottom: 5px;
- width: 60%;
- outline: none;
-}
-
-#jsxc_dialog p input[type="submit"] {
- width: auto;
-}
-
-#jsxc_dialog p label {
- display: block;
- width: 30%;
- float: left;
- padding: 6px 0px;
-}
-
-#jsxc_dialog .jsxc_right {
- margin-top: 20px;
-}
-
-#jsxc_dialog p.jsxc_maxWidth {
- max-width: 500px;
-}
-
-#jsxc_dialog fieldset {
- border: 2px solid #ccc;
-}
-
-#jsxc_dialog legend {
- padding: 0px 10px;
- font-weight: bold;
-}
-
-#jsxc_dialog input {
- outline: none;
-}
-
-#jsxc_dialog input:invalid {
- border:1px solid red;
-}
-
-#jsxc_dialog .jsxc_fieldset {
- width: 280px;
- padding: 10px;
- border-radius: 3px;
-}
-
-#jsxc_dialog .jsxc_fieldset label {
- display: inline-block;
- width: 100px;
-}
-
-#jsxc_dialog .jsxc_fieldset input[type="Number"] {
- display: inline-block;
- width: 50px;
-}
-
-#jsxc_dialog input[readonly] {
- background-color: #efefef;
-}
-
-/*############################
- *########## Overall #########
- *############################*/
-li .jsxc_name {
- overflow: hidden;
- height: 30px;
- cursor: pointer;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-li .jsxc_name:hover {
- color: #FAFAFA;
-}
-
-.jsxc_avatar,ul#jsxc_buddylist li:hover .jsxc_avatar {
- width: 25px;
- height: 25px;
- line-height: 25px;
- margin-top: 2px;
- margin-right: 4px;
- background-color: #a3a3a3;
- border-radius: 2px;
- float: left;
- text-align: center;
- font-weight: bold;
- font-size: 30px;
- color: #b1b1b1;
- overflow: hidden;
- position: relative;
- font-family: Arial;
- background-size: cover;
- background-position: center center;
-}
-
-.jsxc_avatar img {
- display: block;
- width: 25px;
- height: 25px;
- position: absolute;
- top: 0px;
- left: 0px;
-}
-
-.jsxc_spot {
- display: inline-block;
- width: 10px;
- height: 10px;
- background-color: #fff;
- border-radius: 5px;
- text-indent: -99999em;
- margin-top: 3px;
- margin-right: 5px;
- border: 1px solid #000 !important;
- line-height: 100%;
- cursor: pointer;
-}
-
-.jsxc_spot.jsxc_online, .jsxc_spot.jsxc_chat {
- background-color: #00BFFF;
-}
-
-.jsxc_spot.jsxc_away, .jsxc_spot.jsxc_xa {
- background-color: orange;
-}
-
-.jsxc_spot.jsxc_dnd {
- background-color: red;
-}
-
-.jsxc_spot.jsxc_offline {
- background-color: #A4A4A4;
-}
-
-/*############################
- *########## Roster ##########
- *############################*/
-div#jsxc_roster {
- position: fixed;
- top: 0px;
- bottom: 0px;
- right: 0px;
- width: 200px;
- overflow: visible;
- border-left: 4px solid #A4A4A4;
- z-index: 80;
- margin-left: 10px;
- box-shadow: 0px 0px 7px #000000;
- background-color: #383C43;
-}
-
-div#jsxc_roster .slimScrollDiv {
- left: -4px;
- margin-bottom: 30px;
- z-index: 40;
-}
-
-div#jsxc_roster .jsxc_wait {
- position: absolute;
- top: 0px;
- left: 0px;
- bottom: 0px;
- width: 160px;
- padding: 20px;
- background-color: #fff;
- z-index: 60;
-}
-
-div#jsxc_roster .jsxc_wait img {
- padding: 5px;
-}
-
-div#jsxc_roster .jsxc_wait h3 {
- margin-bottom: 5px;
- font-size: 1.13em;
- font-weight: bold;
-}
-
-/** Input field for alias renaming */
-#jsxc_roster input {
- position: absolute;
- top: 50%;
- left: 31px;
- width: 157px;
- height: 18px;
- margin-top: -11px;
- padding: 2px;
- border: 0px;
- background-image: none;
- background-color: #fff;
- border-radius: 3px;
- -moz-box-shadow: inset 0 0 5px #888;
- -webkit-box-shadow: inset 0 0 5px #888;
- box-shadow: inner 0 0 5px #888;
- outline: none;
-}
-
-#jsxc_roster .jsxc_expand input {
- left: 51px;
- width: 137px;
-}
-
-div#jsxc_roster p {
- color: #939393;
- padding: 10px;
-}
-
-div#jsxc_roster p a {
- color: #b1b1b1;
- text-decoration: underline;
-}
-
-div#jsxc_roster>.jsxc_bottom {
- position: absolute;
- left: -4px;
- bottom: 0px;
- height: 30px;
- width: 200px;
- border-left: 4px solid #A4A4A4;
- border-top: 1px solid #939393;
- padding-left: 0px;
- background-color: #282323;
- color: #939393;
- cursor: pointer;
- line-height: 30px;
- z-index: 50;
-}
-
-div#jsxc_roster>.jsxc_bottom>div:hover {
- color: #FAFAFA;
-}
-
-div#jsxc_roster>.jsxc_bottom>div>span {
- cursor: pointer;
-}
-
-div#jsxc_roster>.jsxc_bottom ul {
- width: 190px;
- position: absolute;
- bottom: 30px;
- left: 0px;
- display: none;
- border-top: 1px solid #939393;
- padding-left: 10px;
- background-color: #282323;
- margin: 0;
-}
-
-div#jsxc_roster>.jsxc_bottom li {
- height: 30px;
- background-color: #282323;
- color: #939393;
- cursor: pointer;
- width: 180px;
- padding-left: 10px;
- line-height: 30px;
- text-align: left;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-div#jsxc_roster>.jsxc_bottom li:hover:not(.jsxc_disabled ) {
- color: #fff;
- background-color: #3F8FBA;
-}
-
-div#jsxc_roster>.jsxc_bottom li.jsxc_disabled {
- color: #595959;
- cursor: default;
-}
-
-div#jsxc_roster>.jsxc_bottom ul li:last-child {
- border-bottom: 1px solid #939393;
-}
-
-#jsxc_menu,#jsxc_avatar,#jsxc_notice {
- height: 30px;
- width: 30px;
-}
-
-/** own avatar */
-#jsxc_avatar {
- float: left;
- margin: 0px 2px;
- width: 25px;
-}
-
-#jsxc_menu {
- cursor: pointer;
- float: right;
- text-align: center;
- width: 25px;
-}
-
-#jsxc_menu>span {
- opacity: 0.5;
- display: block;
- width: 25px;
- height: 30px;
- background-image: url('img/gear_white.svg');
- background-size: 18px 18px;
- background-repeat: no-repeat;
- background-position: center center;
-}
-
-#jsxc_menu:hover>span {
- opacity: 1;
-}
-
-#jsxc_notice {
- float: right;
- text-align: center;
- line-height: 30px;
-}
-
-#jsxc_notice>span:empty {
- display: none;
-}
-
-#jsxc_notice span {
- background-color: #fbc14c;
- border-radius: 11px;
- color: black;
- font-size: 80%;
- padding: 2px;
- position: relative;
- -webkit-animation: bounce 2s 1s infinite;
- animation: bounce 2s 1s infinite;
-}
-
-@-webkit-keyframes bounce {
- 0% {
- bottom: 0;
- -webkit-animation-timing-function: ease-in;
- }
- 12% {
- bottom: 5px;
- -webkit-animation-timing-function: ease-out;
- }
- 25% {
- bottom: 0px;
- -webkit-animation-timing-function: ease-in;
- }
- 37% {
- bottom: 5px;
- -webkit-animation-timing-function: ease-out;
- }
- 50% {
- bottom: 0px;
- -webkit-animation-timing-function: ease-in;
- }
- 100% {
- bottom: 0px;
- }
-}
-
-@keyframes bounce {
- 0% {
- bottom: 0;
- animation-timing-function: ease-in;
- }
- 12% {
- bottom: 5px;
- animation-timing-function: ease-out;
- }
- 25% {
- bottom: 0px;
- animation-timing-function: ease-in;
- }
- 37% {
- bottom: 5px;
- animation-timing-function: ease-out;
- }
- 50% {
- bottom: 0px;
- animation-timing-function: ease-in;
- }
- 100% {
- bottom: 0px;
- }
-}
-
-
-#jsxc_presence {
- cursor: pointer;
- padding-left: 2px;
- overflow: hidden;
-}
-
-/** List of all buddies inside the roster */
-ul#jsxc_buddylist {
- list-style: none;
- padding: 0px;
- margin: 0px;
- width: 204px;
-}
-
-ul#jsxc_buddylist li {
- padding: 0px;
- margin: 0px;
- height: 30px;
- border-bottom: 1px solid #939393;
- cursor: pointer;
- width: 200px;
- position: relative;
- color: #939393;
- font-family: Arial;
- line-height: 30px;
- padding-left: 3px;
- z-index: 85;
- overflow: hidden;
-}
-
-ul#jsxc_buddylist .jsxc_name {
- padding-right: 30px;
-}
-
-ul#jsxc_buddylist li .jsxc_name:before {
- content: ' ';
- width: 0px;
- height: 0px;
- display: inline-block;
- opacity: 0.0;
- -webkit-transition: width 0.5s, opacity 0.5s;
- transition: width 0.5s, opacity 0.5s;
-}
-
-ul#jsxc_buddylist li.jsxc_unreadMsg .jsxc_name:before {
- width: 12px;
- height: 12px;
- border-radius: 6px;
- background-color: orange;
- margin-right: 3px;
- opacity: 1.0;
- -webkit-transition: width 0.5s, opacity 0.5s;
- transition: width 0.5s, opacity 0.5s;
-}
-
-ul#jsxc_buddylist li.jsxc_expand {
- height: 54px;
-}
-
-ul#jsxc_buddylist li.jsxc_expand .jsxc_avatar, ul#jsxc_buddylist li.jsxc_expand .jsxc_avatar img {
- width: 48px;
- height: 48px;
-}
-
-#jsxc_buddylist .jsxc_control {
- position:absolute;
- width: 30px;
- height: 30px;
- top: 0px;
- right: 0px;
- cursor: pointer;
-}
-
-#jsxc_buddylist .jsxc_control:after {
- content: '▾';
- position: absolute;
- left: 50%;
- top: 15px;
- width: 16px;
- height: 16px;
- line-height: 16px;
- text-align: center;
- margin-left: -8px;
- margin-top: -8px;
- border-radius: 8px;
- color: #c1c1c1;
- background-color: rgba(150, 150, 150, 0.5);
- opacity: 0.6;
- -webkit-transition: -webkit-transform 0.5s;
- transition: transform 0.5s;
-}
-
-#jsxc_buddylist .jsxc_control:hover:after {
- color: #fff;
- opacity: 1.0;
-}
-
-#jsxc_buddylist li.jsxc_expand .jsxc_control:after {
- /* content: '▴'; */
- -ms-transform:rotate(180deg); /* IE 9 */
- -webkit-transform:rotate(180deg);
- transform:rotate(180deg);
-}
-
-#jsxc_buddylist .jsxc_options {
- height: 20px;
- float: left;
- border-radius:2px;
- background-color: rgba(150, 150, 150, 0.5);
-}
-#jsxc_buddylist .jsxc_options > div {
- height: 20px;
- width: 20px;
- float: left;
- margin-right:0px 1px;
- background-repeat: no-repeat;
- background-position: center center;
- opacity: 0.6;
- cursor: pointer;
-}
-#jsxc_buddylist .jsxc_options > div:hover {
- opacity: 1;
-}
-#jsxc_buddylist .jsxc_chaticon {
- background-image: url('img/speech_balloon_white.svg');
- background-size: 15px 15px;
-}
-#jsxc_buddylist .jsxc_videoicon {
- background-image: url('img/camera_icon_white.svg');
- background-size: 13px 13px;
-}
-#jsxc_buddylist .jsxc_vcardicon {
- font-size: 15px;
- line-height: 20px;
- text-align: center;
- color: #fff;
- font-weight: bold;
- font-family: serif;
-}
-
-ul#jsxc_buddylist li:hover {
-
-}
-
-ul#jsxc_buddylist .jsxc_oneway {
- opacity: 0.7;
-}
-.jsxc_oneway .jsxc_avatar {
- -webkit-filter: grayscale(100%);
- -moz-filter: grayscale(100%);
- -ms-filter: grayscale(100%);
- -o-filter: grayscale(100%);
- filter: grayscale(100%);
-}
-ul#jsxc_buddylist .jsxc_right {
- float:left;
-}
-ul#jsxc_buddylist .jsxc_right {
- float: right;
- margin-right: 6px;
-}
-
-ul#jsxc_buddylist .jsxc_right div {
- font-weight: bold;
- text-align: center;
- font-size: 13px;
- line-height: 20px;
- color: #fff;
-}
-
-ul#jsxc_buddylist li[data-type!="chat"] .jsxc_right {
- display: none;
-}
-
-ul#jsxc_buddylist .jsxc_right div:hover {
- opacity: 1.0;
-}
-
-ul#jsxc_buddylist .jsxc_rename {
-
-}
-
-ul#jsxc_buddylist .jsxc_delete {
-
-}
-
-#jsxc_roster .jsxc_avatar {
- position: relative;
- cursor: pointer;
-}
-#jsxc_roster .jsxc_avatar img {
- cursor: pointer;
-}
-
-div#jsxc_toggleRoster {
- width: 14px;
- height: 100%;
- position: absolute;
- left: -14px !important;
- top: 0px;
- z-index: 110;
- background-color: transparent;
- cursor: pointer;
-}
-
-#jsxc_toggleRoster:hover {
- background-color: #a4a4a4;
- opacity: 0.5;
-}
-
-/*############################
- *###### Window List #########
- *############################*/
-div#jsxc_windowList {
- position: fixed;
- bottom: 0px;
- right: 210px;
- left: 0px;
- z-index: 50;
- clip: rect(-10000px, 10000px, 30px, 30px);
-}
-
-div#jsxc_windowList>ul {
- list-style: none;
- padding: 0px;
- margin: 0px;
- position: absolute;
- bottom: 0px;
- right: 0px;
- height: 30px;
- overflow: visible;
- white-space: nowrap;
- -webkit-transition: right 0.5s;
- transition: right 0.5s;
-}
-
-div#jsxc_windowList>ul>li {
- padding: 0px;
- margin: 0px;
- display: inline-block;
- width: 250px;
- background-color: #282323;
- height: 30px;
- position: relative;
- overflow: visible;
- margin-right: 5px;
- cursor: pointer;
- white-space: normal;
-}
-
-div#jsxc_windowList>ul>li.jsxc_min {
- width: 200px !important;
-}
-
-#jsxc_windowListSB {
- position: fixed;
- left: 0px;
- bottom: 0px;
- width: 30px;
- height: 30px;
-}
-#jsxc_windowListSB > div {
- box-sizing: border-box;
- width: 14px;
- height: 100%;
- background-color: #D3D3D3;
- color: #999;
- text-align: center;
- line-height: 30px;
- float: left;
- cursor: pointer;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-#jsxc_windowListSB > div:hover {
- background-color: #c3c3c3;
-}
-#jsxc_windowListSB > div.jsxc_disabled {
- background-color: #f1f1f1 !important;
- color: #d1d1d1;
- cursor: default !important;
- display: none;
-}
-
-/*############################
- *######### Window ###########
- *############################*/
-div.jsxc_bar {
- background-color: #282323;
- cursor: pointer;
- height: 30px;
- line-height: 26px;
- padding: 2px;
- color: #939393;
- width: 100%;
- box-sizing: border-box;
- overflow: hidden;
-}
-
-div.jsxc_cycle {
- position: absolute;
- bottom: 9px;
- right: 5px;
- height: 12px;
- width: 12px;
- border-radius: 6px;
-}
-
-div#jsxc_windowList>ul>li.jsxc_unreadMsg .jsxc_name {
- font-style: italic;
-}
-
-div#jsxc_windowList>ul>li.jsxc_unreadMsg .jsxc_cycle {
- background-color: orange;
-}
-
-/** Contains text area */
-div.jsxc_window {
- position: absolute;
- bottom: 0px;
- left: 0px;
- right: 0px;
- height: auto;
- background-color: #A4A4A4;
- z-index: 80;
- cursor: default;
-}
-
-div.jsxc_window .jsxc_emoticons {
- height: 30px;
- width: 30px;
- position: absolute;
- top: 240px;
- /*bottom: 0px;*/
- right: 0px;
- cursor: pointer;
-}
-
-div.jsxc_window .jsxc_emoticons:after {
- content: ' ';
- background-image: url('img/smiley.png');
- background-position: center center;
- background-repeat: no-repeat;
- height: 30px;
- width: 30px;
- opacity: 0.3;
- position: absolute;
- top: 0px;
- left: 0px;
-}
-
-div.jsxc_window .jsxc_emoticons:hover:after {
- opacity: 0.5;
-}
-
-div.jsxc_window .jsxc_emoticons ul {
- display: none;
- position: absolute;
- bottom: 33px;
- right: 3px;
- width: 210px;
- background-color: rgba(40, 35, 35, 0.8);
- padding: 3px;
- border-radius: 3px;
- z-index: 200;
- list-style-type: none;
-}
-
-div.jsxc_window .jsxc_emoticons ul:after {
- content: '';
- position: absolute;
- border-left: 5px solid transparent;
- border-right: 5px solid transparent;
- border-top: 6px solid rgba(40, 35, 35, 0.8);
- display: block;
- width: 0;
- z-index: 1;
- right: 6px;
- bottom: -6px;
-}
-
-div.jsxc_window .jsxc_emoticons li {
- float: right;
- cursor: pointer;
-}
-
-div.jsxc_window .jsxc_emoticons div {
- cursor: pointer;
- border-radius: 3px;
- background-size: 30px 30px;
- width: 30px;
- height: 30px;
-}
-
-div.jsxc_window .jsxc_emoticons div:hover {
- background-color: rgba(255, 255, 255, 0.8);
-}
-
-/** groups elements, which will be hidden, if the window is minimized. */
-.jsxc_window .jsxc_fade {
- position: relative;
-}
-
-.jsxc_window .jsxc_gradient {
- display:none;
- position: absolute;
- top: 0px;
- left: 0px;
- right: 0px;
- height: 15px;
- z-index: 100;
- background: -moz-linear-gradient(top, rgba(164, 164, 164, 1) 0%,
- rgba(40, 35, 35, 0) 100%); /* FF3.6+ */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(164,
- 164, 164, 1)), color-stop(100%, rgba(40, 35, 35, 0)));
- /* Chrome,Safari4+ */
- background: -webkit-linear-gradient(top, rgba(164, 164, 164, 1) 0%,
- rgba(40, 35, 35, 0) 100%); /* Chrome10+,Safari5.1+ */
- background: -o-linear-gradient(top, rgba(164, 164, 164, 1) 0%,
- rgba(40, 35, 35, 0) 100%); /* Opera 11.10+ */
- background: -ms-linear-gradient(top, rgba(164, 164, 164, 1) 0%,
- rgba(40, 35, 35, 0) 100%); /* IE10+ */
- background: linear-gradient(to bottom, #a4a4a4 0%, rgba(40, 35, 35, 0)
- 100%); /* W3C */
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a4a4a4',
- endColorstr='#00282323', GradientType=0); /* IE6-9 */
-}
-
-div.jsxc_window .jsxc_avatar {
- margin-top: 1px;
-}
-
-div.jsxc_window .jsxc_textarea {
- width: 100%;
- overflow: hidden;
- padding: 3px;
-}
-
-div.jsxc_window .slimScrollDiv {
- margin: 0px 0px 6px 0px;
- left: auto !important;
- top: auto !important;
-}
-
-div.jsxc_chatmessage {
- margin: 3px;
- padding: 4px;
- padding-right: 10px;
- max-width: 76%;
- word-wrap: break-word;
- background-color: #fff;
- position: relative;
- outline: none;
- clear: both;
-}
-
-div.jsxc_chatmessage a {
- color: blue;
- text-decoration: underline;
-}
-
-div.jsxc_chatmessage img {
- width: 19px;
- height: 19px;
- background-size: 19px 19px;
-}
-
-/** incoming message */
-div.jsxc_in {
- float: left;
- position: relative;
- margin-left: 10px;
- background: #f1f7fd;
- border: solid 1px #a6b8c9;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
-}
-
-div.jsxc_in:after {
- content: '';
- position: absolute;
- border-style: solid;
- border-width: 5px 6px 5px 0;
- border-color: transparent #f1f7fd;
- display: block;
- width: 0;
- z-index: 1;
- left: -6px;
- bottom: 10px;
-}
-
-div.jsxc_out.jsxc_received:before {
- content: '✓';
- position: absolute;
- bottom: 2px;
- right: 2px;
- font-size: 12px;
- line-height: 12px;
- color: green;
-}
-
-/** outgoing message */
-div.jsxc_out {
- float: right;
- position: relative;
- margin-right: 10px;
- background: #e6ffd1;
- border: solid 1px #b4d89f;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
-}
-
-div.jsxc_out:after {
- content: '';
- position: absolute;
- border-style: solid;
- border-width: 5px 0 5px 6px;
- border-color: transparent #e6ffd1;
- display: block;
- width: 0;
- z-index: 1;
- right: -6px;
- bottom: 10px;
-}
-
-/** system message */
-div.jsxc_sys {
- width: auto;
- max-width: none;
- padding-right: 4px;
- box-sizing: border-box;
- margin-right: 3px;
- border-radius: 3px;
-}
-
-.jsxc_window input.jsxc_textinput {
- width: 100%;
- height: 30px;
- margin: 0px;
- padding: 3px;
- padding-right: 40px;
- outline: none;
- border-radius: 0px;
- box-sizing: border-box;
- text-align: right;
-}
-
-.jsxc_window ::-webkit-input-placeholder {
- color: #000;
- opacity: 0.3;
-}
-
-.jsxc_window ::-moz-placeholder {
- color: #000;
- opacity: 0.3;
-} /* firefox 19+ */
-.jsxc_window :-ms-input-placeholder {
- color: rgba(0, 0, 0, 0.4);
-} /* ie */
-.jsxc_window input:-moz-placeholder {
- color: #000;
- opacity: 0.3;
-}
-
-div.jsxc_window .jsxc_tools {
- height: 26px;
- float: right;
-}
-
-.jsxc_min .jsxc_tools {
- display: none;
-}
-
-div.jsxc_window .jsxc_tools > div {
- width: 17px;
- height: 26px;
- display: block;
- float: left;
- color: #939393;
- font-family: Arial;
- line-height: 26px;
- cursor: pointer;
- text-align: center;
-}
-
-div.jsxc_settings {
- background-image: url('img/gear_grey.svg');
- background-size: 15px 15px;
- background-repeat: no-repeat;
- background-position: center center;
- overflow: visible;
-}
-
-div.jsxc_settings:hover,div.jsxc_settings.hover {
- background-image: url('img/gear_white.svg');
-}
-
-div.jsxc_settings ul {
- list-style: none;
- padding: 0px;
- margin: 0px;
- position: absolute;
- top: 30px;
- left: 0px;
- box-shadow: 0px 5px 5px -5px #000;
- z-index: 110;
- overflow: visible;
- background-color: #282323;
- display: none;
-}
-
-div.jsxc_settings li {
- width: 170px;
- margin-left: 20px;
- padding-left: 10px;
- height: 30px;
- line-height: 30px;
- text-align: left;
- cursor: pointer;
-}
-
-div.jsxc_settings li:first-child {
- border-top: 1px solid #ccc;
-}
-
-div.jsxc_settings li:hover:not(.jsxc_disabled ){
- color: #fff;
- background-color: #3F8FBA;
-}
-
-div.jsxc_settings li.jsxc_disabled {
- color: #595959;
- cursor: default;
-}
-
-.jsxc_tools > div.jsxc_disabled {
- opacity: 0.5;
- cursor: default !important;
-}
-
-div.jsxc_transfer, div.jsxc_transfer.jsxc_disabled:hover {
- background-image: url('img/padlock_open_grey.svg');
- background-repeat: no-repeat;
- background-position: center center;
- background-size: 12px 12px;
-}
-
-div.jsxc_transfer:hover {
- background-image: url('img/padlock_open_white.svg');
-}
-
-div.jsxc_transfer.jsxc_fin {
- background-image: url('img/padlock_close_grey.svg');
-}
-
-div.jsxc_transfer.jsxc_enc {
- background-image: url('img/padlock_close_orange.svg');
-}
-
-div.jsxc_transfer.jsxc_enc.jsxc_trust {
- background-image: url('img/padlock_close_green.svg');
-}
-
-.jsxc_window .jsxc_close {
- font-size: 20px;
-}
-
-.jsxc_window .jsxc_close:hover {
- color: #FAFAFA;
-}
-
-#colorbox,#cboxWrapper {
- outline: none;
-}
-
-/*############################
- *######### Other ############
- *############################*/
-ul.jsxc_vCard {
- min-width: 400px;
-}
-
-ul.jsxc_vCard ul {
- margin-left: 20px;
-}
-
-ul.jsxc_vCard li {
- cursor: default !important;
-}
-
-ul.jsxc_vCard strong {
-
-}
-
-img.jsxc_vCard {
- float: right;
- max-width: 200px;
- max-height: 200px;
- border: 5px solid white;
- border-radius: 2px;
-}
-
-.jsxc_window .ui-resizable-w {
- left: 0px;
-}
-
-.jsxc_window .ui-resizable-nw {
- top: 0px;
- left: 0px;
- width: 15px;
- height: 15px;
- z-index: 95 !important;
-}
-
-.jsxc_window .ui-resizable-n {
- position: absolute;
- top: 0px;
- left: 0px;
- right: 0px;
- height: 15px;
- z-index: 100;
- background: -moz-linear-gradient(top, rgba(164, 164, 164, 1) 0%,
- rgba(40, 35, 35, 0) 100%); /* FF3.6+ */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(164,
- 164, 164, 1)), color-stop(100%, rgba(40, 35, 35, 0)));
- /* Chrome,Safari4+ */
- background: -webkit-linear-gradient(top, rgba(164, 164, 164, 1) 0%,
- rgba(40, 35, 35, 0) 100%); /* Chrome10+,Safari5.1+ */
- background: -o-linear-gradient(top, rgba(164, 164, 164, 1) 0%,
- rgba(40, 35, 35, 0) 100%); /* Opera 11.10+ */
- background: -ms-linear-gradient(top, rgba(164, 164, 164, 1) 0%,
- rgba(40, 35, 35, 0) 100%); /* IE10+ */
- background: linear-gradient(to bottom, #a4a4a4 0%, rgba(40, 35, 35, 0)
- 100%); /* W3C */
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a4a4a4',
- endColorstr='#00282323', GradientType=0); /* IE6-9 */
-}
-
-.jsxc_emoticon {
- width: 19px;
- height: 19px;
- background-size: 19px 19px !important;
- border: 0px;
-}
-
-.jsxc_angel { background: url('img/emotions/angel.png') }
-
-.jsxc_angry { background: url('img/emotions/angry.png') }
-
-.jsxc_smile { background: url('img/emotions/smile.png') }
-
-.jsxc_grin { background: url('img/emotions/grin.png') }
-
-.jsxc_sad { background: url('img/emotions/sad.png') }
-
-.jsxc_wink { background: url('img/emotions/wink.png') }
-
-.jsxc_tonguesmile { background: url('img/emotions/tonguesmile.png') }
-
-.jsxc_surprised { background: url('img/emotions/surprised.png') }
-
-.jsxc_kiss { background: url('img/emotions/kiss.png') }
-
-.jsxc_sunglassess { background: url('img/emotions/sunglassess.png') }
-
-.jsxc_crysad { background: url('img/emotions/crysad.png') }
-
-.jsxc_doubt { background: url('img/emotions/doubt.png') }
-
-.jsxc_zip { background: url('img/emotions/zip.png') }
-
-.jsxc_thumbsup { background: url('img/emotions/thumbsup.png') }
-
-.jsxc_thumbsdown { background: url('img/emotions/thumbsdown.png') }
-
-.jsxc_beer { background: url('img/emotions/beer.png') }
-
-.jsxc_devil { background: url('img/emotions/devil.png') }
-
-.jsxc_kissing { background: url('img/emotions/kissing.png') }
-
-.jsxc_rose { background: url('img/emotions/rose.png') }
-
-.jsxc_music { background: url('img/emotions/music.png') }
-
-.jsxc_love { background: url('img/emotions/love.png') }
-
-.jsxc_tired { background: url('img/emotions/tired.png') }
diff --git a/build/js/jsxc/jsxc.js b/build/js/jsxc/jsxc.js
index 084c893..219922e 100644
--- a/build/js/jsxc/jsxc.js
+++ b/build/js/jsxc/jsxc.js
@@ -1,15 +1,15 @@
/*! This file is concatenated for the browser. */
/*!
- * jsxc v1.0.0 - 2014-11-06
+ * jsxc v1.1.0-beta - 2015-02-03
*
- * Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
+ * Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
*
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0
+ * @version 1.1.0-beta
* @license MIT
*/
@@ -25,7 +25,7 @@ var jsxc;
*/
jsxc = {
/** Version of jsxc */
- version: '1.0.0',
+ version: '1.1.0-beta',
/** True if i'm the master */
master: false,
@@ -54,9 +54,6 @@ var jsxc;
/** True if restore is complete */
restoreCompleted: false,
- /** True if login through form */
- triggeredFromForm: false,
-
/** True if login through box */
triggeredFromBox: false,
@@ -95,10 +92,40 @@ var jsxc;
REGEX: {
JID: new RegExp('\\b[^"&\'\\/:<>@\\s]+@[\\w-_.]+\\b', 'ig'),
URL: new RegExp(/((?:https?:\/\/|www\.|([\w\-]+\.[a-zA-Z]{2,3})(?=\b))(?:(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\)([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|])?)|(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|]))?)/gi)
+ },
+ NS: {
+ CARBONS: 'urn:xmpp:carbons:2',
+ FORWARD: 'urn:xmpp:forward:0'
}
},
/**
+ * Parse a unix timestamp and return a formatted time string
+ *
+ * @memberOf jsxc
+ * @param {Object} unixtime
+ * @returns time of day and/or date
+ */
+ getFormattedTime: function(unixtime) {
+ var msgDate = new Date(parseInt(unixtime));
+ var date = ('0' + msgDate.getDate()).slice(-2);
+ var month = ('0' + (msgDate.getMonth() + 1)).slice(-2);
+ var year = msgDate.getFullYear();
+ var hours = ('0' + msgDate.getHours()).slice(-2);
+ var minutes = ('0' + msgDate.getMinutes()).slice(-2);
+ var dateNow = new Date(), time = hours + ':' + minutes;
+
+ // compare dates only
+ dateNow.setHours(0, 0, 0, 0);
+ msgDate.setHours(0, 0, 0, 0);
+
+ if (dateNow.getTime() !== msgDate.getTime()) {
+ return date + '.' + month + '.' + year + ' ' + time;
+ }
+ return time;
+ },
+
+ /**
* Write debug message to console and to log.
*
* @memberOf jsxc
@@ -171,7 +198,7 @@ var jsxc;
if (options) {
// override default options
- $.extend(jsxc.options, options);
+ $.extend(true, jsxc.options, options);
}
/**
@@ -221,6 +248,10 @@ var jsxc;
return;
}
+ if (jsxc.storage.getItem('debug') === true) {
+ jsxc.options.otr.debug = true;
+ }
+
// Register event listener for the storage event
window.addEventListener('storage', jsxc.storage.onStorage, false);
@@ -272,7 +303,7 @@ var jsxc;
var settings = jsxc.prepareLogin();
if (settings !== false && (settings.xmpp.onlogin === "true" || settings.xmpp.onlogin === true)) {
- jsxc.triggeredFromForm = true;
+ jsxc.options.loginForm.triggered = true;
jsxc.xmpp.login();
@@ -400,8 +431,12 @@ var jsxc;
// Sending keepalive signal
jsxc.startKeepAlive();
- // create or load DSA key and call _onMaster
- jsxc.otr.createDSA();
+ if (jsxc.options.get('otr').enable) {
+ // create or load DSA key and call _onMaster
+ jsxc.otr.createDSA();
+ } else {
+ jsxc._onMaster();
+ }
},
/**
@@ -441,6 +476,10 @@ var jsxc;
}
}
+ $(document).on('connectionReady.jsxc', function() {
+ jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
+ });
+
jsxc.xmpp.login();
},
@@ -690,6 +729,27 @@ var jsxc;
return jsxc.l[k] || key.replace(/_/g, ' ');
});
},
+
+ /**
+ * Executes the given function in jsxc namespace.
+ *
+ * @memberOf jsxc
+ * @param {string} fnName Function name
+ * @param {array} fnParams Function parameters
+ * @returns Function return value
+ */
+ exec: function(fnName, fnParams) {
+ var fnList = fnName.split('.');
+ var fn = jsxc[fnList[0]];
+ var i;
+ for (i = 1; i < fnList.length; i++) {
+ fn = fn[fnList[i]];
+ }
+
+ if (typeof fn === 'function') {
+ return fn.apply(null, fnParams);
+ }
+ }
};
/**
@@ -710,7 +770,11 @@ var jsxc;
/** OTR options */
otr: {
- ERROR_START_AKE: true
+ enable: true,
+ ERROR_START_AKE: false,
+ debug: false,
+ SEND_WHITESPACE_TAG: true,
+ WHITESPACE_START_AKE: true
},
/** xmpp options */
@@ -746,7 +810,19 @@ var jsxc;
/** manipulate JID from input element */
preJid: function(jid) {
return jid;
- }
+ },
+
+ /**
+ * Action after connected: submit [String] Submit form, false [boolean]
+ * Do nothing, continue [String] Start chat
+ */
+ onConnected: 'submit',
+
+ /**
+ * Action after auth fail: submit [String] Submit form, false [boolean]
+ * Do nothing, ask [String] Show auth fail dialog
+ */
+ onAuthFail: 'submit'
},
/** jquery object from logout element */
@@ -817,9 +893,15 @@ var jsxc;
*
* @memberOf jsxc.options
* @param data Holds all data as key/value
+ * @returns {boolean} false if function failes
*/
saveSettinsPermanent: function() {
+ },
+
+ carbons: {
+ /** Enable carbon copies? */
+ enable: false
}
};
@@ -892,7 +974,9 @@ var jsxc;
jsxc.gui.tooltip('#jsxc_windowList');
- jsxc.gui.roster.init();
+ if (!jsxc.el_exists('#jsxc_roster')) {
+ jsxc.gui.roster.init();
+ }
// prepare regexp for emotions
$.each(jsxc.gui.emotions, function(i, val) {
@@ -1017,7 +1101,7 @@ var jsxc;
var avatarSrc = jsxc.storage.getUserItem('avatar', aid);
var setAvatar = function(src) {
- if (src === 0) {
+ if (src === 0 || src === '0') {
jsxc.options.defaultAvatar.call(el, jid);
return;
}
@@ -1041,13 +1125,18 @@ var jsxc;
if (vCard.length === 0) {
jsxc.debug('No photo provided');
- src = 0;
+ src = '0';
+ } else if (vCard.find('EXTVAL').length > 0) {
+ src = vCard.find('EXTVAL').text();
} else {
var img = vCard.find('BINVAL').text();
var type = vCard.find('TYPE').text();
src = 'data:' + type + ';base64,' + img;
}
+ // concat chunks
+ src = src.replace(/[\t\r\n\f]/gi, '');
+
jsxc.storage.setUserItem('avatar', aid, src);
setAvatar(src);
}, Strophe.getBareJidFromJid(jid), function(msg) {
@@ -1184,7 +1273,7 @@ var jsxc;
var settings = jsxc.prepareLogin();
jsxc.triggeredFromBox = true;
- jsxc.triggeredFromForm = false;
+ jsxc.options.loginForm.triggered = false;
if (settings === false) {
jsxc.gui.showAuthFail();
@@ -1451,7 +1540,7 @@ var jsxc;
showAuthFail: function() {
jsxc.gui.dialog.open(jsxc.gui.template.get('authFailDialog'));
- if (jsxc.triggeredFromBox) {
+ if (jsxc.options.loginForm.triggered !== false) {
$('#jsxc_dialog .jsxc_cancel').hide();
}
@@ -1642,7 +1731,17 @@ var jsxc;
var type = photo.find('TYPE').text();
var src = 'data:' + type + ';base64,' + img;
- $('#jsxc_dialog h3').before('<img class="jsxc_vCard" src="' + src + '" alt="avatar" />');
+ if (photo.find('EXTVAL').length > 0) {
+ src = photo.find('EXTVAL').text();
+ }
+
+ // concat chunks
+ src = src.replace(/[\t\r\n\f]/gi, '');
+
+ var img_el = $('<img class="jsxc_vCard" alt="avatar" />');
+ img_el.attr('src', src);
+
+ $('#jsxc_dialog h3').before(img_el);
}
if ($(stanza).find('vCard').length === 0 || ($(stanza).find('vcard > *').length === 1 && photo.length === 1)) {
@@ -1716,6 +1815,10 @@ var jsxc;
var err = jsxc.options.saveSettinsPermanent.call(this, data);
+ if (typeof self.attr('data-onsubmit') === 'string') {
+ jsxc.exec(self.attr('data-onsubmit'), [ err ]);
+ }
+
setTimeout(function() {
self.find('input[type="submit"]').effect('highlight', {
color: (err) ? 'green' : 'red'
@@ -2025,10 +2128,6 @@ var jsxc;
$('#jsxc_presence > span').text($('#jsxc_presence > ul .jsxc_' + pres).text());
jsxc.gui.updatePresence('own', pres);
- $(document).on('cloaded.roster.jsxc', function() {
- jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
- });
-
jsxc.gui.tooltip('#jsxc_roster');
jsxc.notice.load();
@@ -2266,8 +2365,7 @@ var jsxc;
* Shows a text with link to a login box that no connection exists.
*/
noConnection: function() {
- $('#jsxc_roster .slimScrollDiv').remove();
- $('#jsxc_roster > .jsxc_bottom').remove();
+ $('#jsxc_roster').addClass('jsxc_noConnection');
$('#jsxc_roster').append($('<p>' + jsxc.l.no_connection + '</p>').append(' <a>' + jsxc.l.relogin + '</a>').click(function() {
jsxc.gui.showLoginBox();
@@ -2736,8 +2834,11 @@ var jsxc;
* @param {String} direction 'in' message is received or 'out' message is
* send
* @param {String} msg Message to display
+ * @param {boolean} encrypted Was this message encrypted? Default: false
+ * @param {boolean} forwarded Was this message forwarded? Default: false
+ * @param {integer} stamp Timestamp
*/
- postMessage: function(bid, direction, msg) {
+ postMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
var data = jsxc.storage.getUserItem('buddy', bid);
var html_msg = msg;
@@ -2747,12 +2848,12 @@ var jsxc;
// exceptions:
- if (direction === 'out' && data.msgstate === 2) {
+ if (direction === 'out' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED && forwarded !== true) {
direction = 'sys';
msg = jsxc.l.your_message_wasnt_send_please_end_your_private_conversation;
}
- if (direction === 'in' && data.msgstate === 2) {
+ if (direction === 'in' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED) {
direction = 'sys';
msg = jsxc.l.unencrypted_message_received + ' ' + msg;
}
@@ -2762,13 +2863,14 @@ var jsxc;
msg = jsxc.l.your_message_wasnt_send_because_you_have_no_valid_subscription;
}
- var post = jsxc.storage.saveMessage(bid, direction, msg);
+ encrypted = encrypted || data.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED;
+ var post = jsxc.storage.saveMessage(bid, direction, msg, encrypted, forwarded, stamp);
if (direction === 'in') {
$(document).trigger('postmessagein.jsxc', [ bid, html_msg ]);
}
- if (direction === 'out' && jsxc.master) {
+ if (direction === 'out' && jsxc.master && forwarded !== true) {
jsxc.xmpp.sendMessage(bid, html_msg, post.uid);
}
@@ -2792,7 +2894,6 @@ var jsxc;
var msg = post.msg;
var direction = post.direction;
var uid = post.uid;
- var received = post.received || false;
if (win.find('.jsxc_textinput').is(':not(:focus)') && jsxc.restoreCompleted && direction === 'in' && !restore) {
jsxc.gui.window.highlight(bid);
@@ -2831,17 +2932,29 @@ var jsxc;
});
});
- var msgDiv = $("<div>");
+ var msgDiv = $("<div>"), msgTsDiv = $("<div>");
msgDiv.addClass('jsxc_chatmessage jsxc_' + direction);
msgDiv.attr('id', uid);
- msgDiv.html(msg);
+ msgDiv.html('<div>' + msg + '</div>');
+ msgTsDiv.addClass('jsxc_timestamp');
+ msgTsDiv.html(jsxc.getFormattedTime(post.stamp));
- if (received) {
+ if (post.received || false) {
msgDiv.addClass('jsxc_received');
}
+ if (post.forwarded) {
+ msgDiv.addClass('jsxc_forwarded');
+ }
+
+ if (post.encrypted) {
+ msgDiv.addClass('jsxc_encrypted');
+ }
+
if (direction === 'sys') {
jsxc.gui.window.get(bid).find('.jsxc_textarea').append('<div style="clear:both"/>');
+ } else if (typeof post.stamp !== 'undefined') {
+ msgDiv.append(msgTsDiv);
}
win.find('.jsxc_textarea').append(msgDiv);
@@ -3159,6 +3272,14 @@ var jsxc;
<label for="priority-dnd">%%dnd%%</label><input type="number" value="0" id="priority-dnd" min="-128" max="127" step="1" required="required"/><br />\
<input type="submit" value="%%Save%%"/>\
</fieldset>\
+ </form>\
+ <p></p>\
+ <form data-onsubmit="xmpp.carbons.refresh">\
+ <fieldset class="jsxc_fieldsetCarbons jsxc_fieldset">\
+ <legend>%%Carbon copy%%</legend>\
+ <label for="carbons-enable">%%Enable%%</label><input type="checkbox" id="carbons-enable" /><br />\
+ <input type="submit" value="%%Save%%"/>\
+ </fieldset>\
</form>'
};
@@ -3173,13 +3294,50 @@ var jsxc;
/**
* Create new connection or attach to old
*
+ * @name login
+ * @memberOf jsxc.xmpp
+ */
+ /**
+ * Create new connection with given parameters.
+ *
+ * @name login^2
+ * @param {string} jid
+ * @param {string} password
+ * @memberOf jsxc.xmpp
+ */
+ /**
+ * Attach connection with given parameters.
+ *
+ * @name login^3
+ * @param {string} jid
+ * @param {string} sid
+ * @param {string} rid
* @memberOf jsxc.xmpp
*/
login: function() {
- var sid = jsxc.storage.getItem('sid');
- var rid = jsxc.storage.getItem('rid');
- var jid = jsxc.storage.getItem('jid');
+ if (jsxc.xmpp.conn && jsxc.xmpp.conn.connected) {
+ return;
+ }
+
+ var jid = null, password = null, sid = null, rid = null;
+
+ switch (arguments.length) {
+ case 2:
+ jid = arguments[0];
+ password = arguments[1];
+ break;
+ case 3:
+ jid = arguments[0];
+ sid = arguments[1];
+ rid = arguments[2];
+ break;
+ default:
+ jid = jsxc.storage.getItem('jid');
+ sid = jsxc.storage.getItem('sid');
+ rid = jsxc.storage.getItem('rid');
+ }
+
var url = jsxc.options.get('xmpp').url;
// Register eventlistener
@@ -3187,6 +3345,8 @@ var jsxc;
$(document).on('attached.jsxc', jsxc.xmpp.attached);
$(document).on('disconnected.jsxc', jsxc.xmpp.disconnected);
$(document).on('ridChange', jsxc.xmpp.onRidChange);
+ $(document).on('connfail.jsxc', jsxc.xmpp.onConnfail);
+ $(document).on('authfail.jsxc', jsxc.xmpp.onAuthFail);
Strophe.addNamespace('RECEIPTS', 'urn:xmpp:receipts');
@@ -3227,10 +3387,10 @@ var jsxc;
$(document).trigger('disconnected.jsxc');
break;
case Strophe.Status.CONNFAIL:
- jsxc.xmpp.onConnfail(condition);
+ $(document).trigger('connfail.jsxc');
break;
case Strophe.Status.AUTHFAIL:
- jsxc.gui.showAuthFail();
+ $(document).trigger('authfail.jsxc');
break;
}
};
@@ -3246,7 +3406,23 @@ var jsxc;
} else {
jsxc.debug('New connection');
- jsxc.xmpp.conn.connect(jsxc.options.xmpp.jid, jsxc.options.xmpp.password, callback);
+ if (jsxc.xmpp.conn.caps) {
+ // Add system handler, because user handler isn't called before
+ // we are authenticated
+ jsxc.xmpp.conn._addSysHandler(function(stanza) {
+ var from = jsxc.xmpp.conn.domain, c = stanza.querySelector('c'), ver = c.getAttribute('ver'), node = c.getAttribute('node');
+
+ var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
+
+ jsxc.xmpp.conn.caps._jidVerIndex[from] = ver;
+ _jidNodeIndex[from] = node;
+
+ localStorage.setItem('strophe.caps._jidVerIndex', JSON.stringify(jsxc.xmpp.conn.caps._jidVerIndex));
+ localStorage.setItem('strophe.caps._jidNodeIndex', JSON.stringify(_jidNodeIndex));
+ }, Strophe.NS.CAPS);
+ }
+
+ jsxc.xmpp.conn.connect(jid || jsxc.options.xmpp.jid, password || jsxc.options.xmpp.password, callback);
}
},
@@ -3281,11 +3457,11 @@ var jsxc;
jsxc.triggeredFromElement = true;
// restore all otr objects
- $.each(jsxc.storage.getUserItem('otrlist'), function(i, val) {
+ $.each(jsxc.storage.getUserItem('otrlist') || {}, function(i, val) {
jsxc.otr.create(val);
});
- var numOtr = Object.keys(jsxc.otr.objects).length + 1;
+ var numOtr = Object.keys(jsxc.otr.objects || {}).length + 1;
var disReady = function() {
if (--numOtr <= 0) {
jsxc.xmpp.conn.flush();
@@ -3297,7 +3473,7 @@ var jsxc;
};
// end all private conversations
- $.each(jsxc.otr.objects, function(key, obj) {
+ $.each(jsxc.otr.objects || {}, function(key, obj) {
if (obj.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED) {
obj.endOtr.call(obj, function() {
obj.init.call(obj);
@@ -3341,20 +3517,25 @@ var jsxc;
jsxc.storage.removeUserItem('avatar', 'own');
jsxc.storage.removeUserItem('otrlist');
- // submit login form
- if (jsxc.triggeredFromForm) {
- // Trigger normal submit
- jsxc.submitLoginForm();
- return;
+ if (jsxc.options.loginForm.triggered) {
+ switch (jsxc.options.loginForm.onConnected || 'submit') {
+ case 'submit':
+ jsxc.submitLoginForm();
+ /* falls through */
+ case false:
+ jsxc.xmpp.connectionReady();
+ return;
+ }
}
- // reload page after login from login box
- if (jsxc.triggeredFromBox) {
- window.location.reload();
- return;
- }
+ // start chat
- jsxc.xmpp.connectionReady();
+ jsxc.gui.init();
+ $('#jsxc_roster').removeClass('jsxc_noConnection');
+ jsxc.onMaster();
+ jsxc.xmpp.conn.resume();
+ jsxc.gui.dialog.close();
+ $(document).trigger('attached.jsxc');
},
/**
@@ -3369,6 +3550,37 @@ var jsxc;
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onReceived, null, 'message');
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onPresence, null, 'presence');
+ var caps = jsxc.xmpp.conn.caps;
+ var domain = jsxc.xmpp.conn.domain;
+
+ if (caps && jsxc.options.get('carbons').enable) {
+ var conditionalEnable = function() {
+ if (jsxc.xmpp.conn.caps.hasFeatureByJid(domain, jsxc.CONST.NS.CARBONS)) {
+ jsxc.xmpp.carbons.enable();
+ }
+ };
+
+ if (typeof caps._knownCapabilities[caps._jidVerIndex[domain]] === 'undefined') {
+ var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
+
+ $(document).on('caps.strophe', function onCaps(ev, from) {
+
+ if (from !== domain) {
+ return;
+ }
+
+ conditionalEnable();
+
+ $(document).off('caps.strophe', onCaps);
+ });
+
+ caps._requestCapabilities(jsxc.xmpp.conn.domain, _jidNodeIndex[domain], caps._jidVerIndex[domain]);
+ } else {
+ // We know server caps
+ conditionalEnable();
+ }
+ }
+
// Only load roaster if necessary
if (!jsxc.restore || !jsxc.storage.getUserItem('buddylist')) {
// in order to not overide existing presence information, we send
@@ -3450,6 +3662,13 @@ var jsxc;
jsxc.storage.removeUserItem('avatar', 'own');
jsxc.storage.removeUserItem('otrlist');
+ $(document).off('connected.jsxc', jsxc.xmpp.connected);
+ $(document).off('attached.jsxc', jsxc.xmpp.attached);
+ $(document).off('disconnected.jsxc', jsxc.xmpp.disconnected);
+ $(document).off('ridChange', jsxc.xmpp.onRidChange);
+ $(document).off('connfail.jsxc', jsxc.xmpp.onConnfail);
+ $(document).off('authfail.jsxc', jsxc.xmpp.onAuthFail);
+
jsxc.xmpp.conn = null;
$('#jsxc_windowList').remove();
@@ -3473,15 +3692,33 @@ var jsxc;
* @param {String} condition information why we lost the connection
* @private
*/
- onConnfail: function(condition) {
+ onConnfail: function(ev, condition) {
jsxc.debug('XMPP connection failed: ' + condition);
- if (jsxc.triggeredFromForm) {
+ if (jsxc.options.loginForm.triggered) {
jsxc.submitLoginForm();
}
},
/**
+ * Triggered on auth fail.
+ *
+ * @private
+ */
+ onAuthFail: function() {
+ if (jsxc.options.loginForm.triggered) {
+ switch (jsxc.options.loginForm.onAuthFail || 'ask') {
+ case 'ask':
+ jsxc.gui.showAuthFail();
+ break;
+ case 'submit':
+ jsxc.submitLoginForm();
+ break;
+ }
+ }
+ },
+
+ /**
* Triggered on initial roster load
*
* @param {dom} iq
@@ -3628,8 +3865,6 @@ var jsxc;
var ptype = $(presence).attr('type');
var from = $(presence).attr('from');
var jid = Strophe.getBareJidFromJid(from).toLowerCase();
- var to = $(presence).attr('to');
- to = (to) ? Strophe.getBareJidFromJid(to).toLowerCase() : jid;
var r = Strophe.getResourceFromJid(from);
var bid = jsxc.jidToBid(jid);
var data = jsxc.storage.getUserItem('buddy', bid);
@@ -3637,7 +3872,7 @@ var jsxc;
var status = null;
var xVCard = $(presence).find('x[xmlns="vcard-temp:x:update"]');
- if (jid === to) {
+ if (jid === Strophe.getBareJidFromJid(jsxc.storage.getItem("jid"))) {
return true;
}
@@ -3731,28 +3966,66 @@ var jsxc;
* @returns {Boolean}
* @private
*/
- onMessage: function(message) {
- /*
- * <message xmlns='jabber:client' type='chat' to='' id='' from=''>
- * <body>...</body> <active
- * xmlns='http://jabber.org/protocol/chatstates'/> </message>
- */
+ onMessage: function(stanza) {
- jsxc.debug('Incoming message', message);
+ var forwarded = $(stanza).find('forwarded[xmlns="' + jsxc.CONST.NS.FORWARD + '"]');
+ var message, carbon;
+
+ if (forwarded.length > 0) {
+ message = forwarded.find('> message');
+ forwarded = true;
+ carbon = $(stanza).find('> [xmlns="' + jsxc.CONST.NS.CARBONS + '"]');
+
+ if (carbon.length === 0) {
+ carbon = false;
+ }
+
+ jsxc.debug('Incoming forwarded message', message);
+ } else {
+ message = stanza;
+ forwarded = false;
+ carbon = false;
+
+ jsxc.debug('Incoming message', message);
+ }
+
+ var body = $(message).find('body:first').text();
+
+ if (!body || (body.match(/\?OTR/i) && forwarded)) {
+ return true;
+ }
var type = $(message).attr('type');
var from = $(message).attr('from');
var mid = $(message).attr('id');
- var jid = Strophe.getBareJidFromJid(from);
- var bid = jsxc.jidToBid(jid);
- var data = jsxc.storage.getUserItem('buddy', bid);
- var body = $(message).find('body:first').text();
- var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
+ var bid;
+
+ var delay = $(message).find('delay[xmlns="urn:xmpp:delay"]');
+
+ var stamp = (delay.length > 0) ? new Date(delay.attr('stamp')) : new Date();
+ stamp = stamp.getTime();
+
+ if (carbon) {
+ var direction = (carbon.prop("tagName") === 'sent') ? 'out' : 'in';
+ bid = jsxc.jidToBid((direction === 'out') ? $(message).attr('to') : from);
+
+ jsxc.gui.window.postMessage(bid, direction, body, false, forwarded, stamp);
- if (!body) {
return true;
+
+ } else if (forwarded) {
+ // Someone forwarded a message to us
+
+ body = from + jsxc.translate(' %%to%% ') + $(stanza).attr('to') + '"' + body + '"';
+
+ from = $(stanza).attr('from');
}
+ var jid = Strophe.getBareJidFromJid(from);
+ bid = jsxc.jidToBid(jid);
+ var data = jsxc.storage.getUserItem('buddy', bid);
+ var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
+
if (data === null) {
// jid not in roster
@@ -3765,7 +4038,7 @@ var jsxc;
var msg = jsxc.removeHTML(body);
msg = jsxc.escapeHTML(msg);
- jsxc.storage.saveMessage(bid, 'in', msg);
+ jsxc.storage.saveMessage(bid, 'in', msg, false, forwarded, stamp);
return true;
}
@@ -3787,7 +4060,7 @@ var jsxc;
jsxc.otr.create(bid);
}
- if (mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
+ if (!forwarded && mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
// Send received according to XEP-0184
jsxc.xmpp.conn.send($msg({
to: from
@@ -3798,9 +4071,9 @@ var jsxc;
}
if (jsxc.otr.objects.hasOwnProperty(bid)) {
- jsxc.otr.objects[bid].receiveMsg(body);
+ jsxc.otr.objects[bid].receiveMsg(body, stamp);
} else {
- jsxc.gui.window.postMessage(bid, 'in', body);
+ jsxc.gui.window.postMessage(bid, 'in', body, false, forwarded, stamp);
}
// preserve handler
@@ -3959,6 +4232,12 @@ var jsxc;
id: uid
}).c('body').t(msg);
+ if (jsxc.xmpp.carbons.enabled && msg.match(/^\?OTR/)) {
+ xmlMsg.up().c("private", {
+ xmlns: jsxc.CONST.NS.CARBONS
+ });
+ }
+
if (type === 'chat' && (isBar || jsxc.xmpp.conn.caps.hasFeatureByJid(jid, Strophe.NS.RECEIPTS))) {
// Add request according to XEP-0184
xmlMsg.up().c('request', {
@@ -4017,6 +4296,85 @@ var jsxc;
};
/**
+ * Handle carbons (XEP-0280);
+ *
+ * @namespace jsxc.xmpp.carbons
+ */
+ jsxc.xmpp.carbons = {
+ enabled: false,
+
+ /**
+ * Enable carbons.
+ *
+ * @memberOf jsxc.xmpp.carbons
+ * @param cb callback
+ */
+ enable: function(cb) {
+ var iq = $iq({
+ type: 'set'
+ }).c('enable', {
+ xmlns: jsxc.CONST.NS.CARBONS
+ });
+
+ jsxc.xmpp.conn.sendIQ(iq, function() {
+ jsxc.xmpp.carbons.enabled = true;
+
+ jsxc.debug('Carbons enabled');
+
+ if (cb) {
+ cb.call(this);
+ }
+ }, function(stanza) {
+ jsxc.warn('Could not enable carbons', stanza);
+ });
+ },
+
+ /**
+ * Disable carbons.
+ *
+ * @memberOf jsxc.xmpp.carbons
+ * @param cb callback
+ */
+ disable: function(cb) {
+ var iq = $iq({
+ type: 'set'
+ }).c('disable', {
+ xmlns: jsxc.CONST.NS.CARBONS
+ });
+
+ jsxc.xmpp.conn.sendIQ(iq, function() {
+ jsxc.xmpp.carbons.enabled = false;
+
+ jsxc.debug('Carbons disabled');
+
+ if (cb) {
+ cb.call(this);
+ }
+ }, function(stanza) {
+ jsxc.warn('Could not disable carbons', stanza);
+ });
+ },
+
+ /**
+ * Enable/Disable carbons depending on options key.
+ *
+ * @memberOf jsxc.xmpp.carbons
+ * @param err error message
+ */
+ refresh: function(err) {
+ if (err === false) {
+ return;
+ }
+
+ if (jsxc.options.get('carbons').enable) {
+ return jsxc.xmpp.carbons.enable();
+ }
+
+ return jsxc.xmpp.carbons.disable();
+ }
+ };
+
+ /**
* Handle long-live data
*
* @namespace jsxc.storage
@@ -4555,9 +4913,11 @@ var jsxc;
* @param bid
* @param direction
* @param msg
+ * @param encrypted
+ * @param forwarded
* @return post
*/
- saveMessage: function(bid, direction, msg) {
+ saveMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
var chat = jsxc.storage.getUserItem('chat', bid) || [];
var uid = new Date().getTime() + ':msg';
@@ -4570,7 +4930,10 @@ var jsxc;
direction: direction,
msg: msg,
uid: uid.replace(/:/, '-'),
- received: false
+ received: false,
+ encrypted: encrypted || false,
+ forwarded: forwarded || false,
+ stamp: stamp || new Date().getTime()
};
chat.unshift(post);
@@ -4628,16 +4991,16 @@ var jsxc;
* @param {string} msg received message
* @param {string} encrypted True, if msg was encrypted.
*/
- receiveMessage: function(bid, msg, encrypted) {
+ receiveMessage: function(bid, msg, encrypted, stamp) {
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT) {
jsxc.otr.backup(bid);
}
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT && !encrypted) {
- jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + msg + ']');
+ jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + msg + ']', encrypted, stamp);
} else {
- jsxc.gui.window.postMessage(bid, 'in', msg);
+ jsxc.gui.window.postMessage(bid, 'in', msg, encrypted, stamp);
}
},
@@ -4772,8 +5135,8 @@ var jsxc;
});
// Receive message
- jsxc.otr.objects[bid].on('ui', function(msg, encrypted) {
- jsxc.otr.receiveMessage(bid, msg, encrypted === true);
+ jsxc.otr.objects[bid].on('ui', function(msg, encrypted, stamp) {
+ jsxc.otr.receiveMessage(bid, msg, encrypted === true, stamp);
});
// Send message
@@ -5364,16 +5727,7 @@ var jsxc;
notice.click(function() {
jsxc.notice.remove(nid);
- var fnList = fnName.split('.');
- var fn = jsxc[fnList[0]];
- var i;
- for (i = 1; i < fnList.length; i++) {
- fn = fn[fnList[i]];
- }
-
- if (typeof fn === 'function') {
- fn.apply(null, fnParams);
- }
+ jsxc.exec(fnName, fnParams);
return false;
});
@@ -5873,15 +6227,15 @@ var jsxc;
}(jQuery));
/*!
- * jsxc v1.0.0 - 2014-11-06
+ * jsxc v1.1.0-beta - 2015-02-03
*
- * Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
+ * Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
*
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0
+ * @version 1.1.0-beta
* @license MIT
*/
@@ -6162,6 +6516,11 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
jsxc.debug('Update icon', bid);
var self = jsxc.webrtc;
+
+ if (bid === jsxc.jidToBid(self.conn.jid)) {
+ return;
+ }
+
var win = jsxc.gui.window.get(bid);
var jid = win.data('jid') || jsxc.storage.getUserItem('buddy', bid).jid;
diff --git a/build/js/jsxc/jsxc.lib.js b/build/js/jsxc/jsxc.lib.js
index 93492d2..a8a0062 100644
--- a/build/js/jsxc/jsxc.lib.js
+++ b/build/js/jsxc/jsxc.lib.js
@@ -1,13 +1,13 @@
/*!
- * jsxc v1.0.0 - 2014-11-06
+ * jsxc v1.1.0-beta - 2015-02-03
*
- * Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
+ * Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
*
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0
+ * @version 1.1.0-beta
* @license MIT
*/
@@ -23,7 +23,7 @@ var jsxc;
*/
jsxc = {
/** Version of jsxc */
- version: '1.0.0',
+ version: '1.1.0-beta',
/** True if i'm the master */
master: false,
@@ -52,9 +52,6 @@ var jsxc;
/** True if restore is complete */
restoreCompleted: false,
- /** True if login through form */
- triggeredFromForm: false,
-
/** True if login through box */
triggeredFromBox: false,
@@ -93,10 +90,40 @@ var jsxc;
REGEX: {
JID: new RegExp('\\b[^"&\'\\/:<>@\\s]+@[\\w-_.]+\\b', 'ig'),
URL: new RegExp(/((?:https?:\/\/|www\.|([\w\-]+\.[a-zA-Z]{2,3})(?=\b))(?:(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\)([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|])?)|(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|]))?)/gi)
+ },
+ NS: {
+ CARBONS: 'urn:xmpp:carbons:2',
+ FORWARD: 'urn:xmpp:forward:0'
}
},
/**
+ * Parse a unix timestamp and return a formatted time string
+ *
+ * @memberOf jsxc
+ * @param {Object} unixtime
+ * @returns time of day and/or date
+ */
+ getFormattedTime: function(unixtime) {
+ var msgDate = new Date(parseInt(unixtime));
+ var date = ('0' + msgDate.getDate()).slice(-2);
+ var month = ('0' + (msgDate.getMonth() + 1)).slice(-2);
+ var year = msgDate.getFullYear();
+ var hours = ('0' + msgDate.getHours()).slice(-2);
+ var minutes = ('0' + msgDate.getMinutes()).slice(-2);
+ var dateNow = new Date(), time = hours + ':' + minutes;
+
+ // compare dates only
+ dateNow.setHours(0, 0, 0, 0);
+ msgDate.setHours(0, 0, 0, 0);
+
+ if (dateNow.getTime() !== msgDate.getTime()) {
+ return date + '.' + month + '.' + year + ' ' + time;
+ }
+ return time;
+ },
+
+ /**
* Write debug message to console and to log.
*
* @memberOf jsxc
@@ -169,7 +196,7 @@ var jsxc;
if (options) {
// override default options
- $.extend(jsxc.options, options);
+ $.extend(true, jsxc.options, options);
}
/**
@@ -219,6 +246,10 @@ var jsxc;
return;
}
+ if (jsxc.storage.getItem('debug') === true) {
+ jsxc.options.otr.debug = true;
+ }
+
// Register event listener for the storage event
window.addEventListener('storage', jsxc.storage.onStorage, false);
@@ -270,7 +301,7 @@ var jsxc;
var settings = jsxc.prepareLogin();
if (settings !== false && (settings.xmpp.onlogin === "true" || settings.xmpp.onlogin === true)) {
- jsxc.triggeredFromForm = true;
+ jsxc.options.loginForm.triggered = true;
jsxc.xmpp.login();
@@ -398,8 +429,12 @@ var jsxc;
// Sending keepalive signal
jsxc.startKeepAlive();
- // create or load DSA key and call _onMaster
- jsxc.otr.createDSA();
+ if (jsxc.options.get('otr').enable) {
+ // create or load DSA key and call _onMaster
+ jsxc.otr.createDSA();
+ } else {
+ jsxc._onMaster();
+ }
},
/**
@@ -439,6 +474,10 @@ var jsxc;
}
}
+ $(document).on('connectionReady.jsxc', function() {
+ jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
+ });
+
jsxc.xmpp.login();
},
@@ -688,6 +727,27 @@ var jsxc;
return jsxc.l[k] || key.replace(/_/g, ' ');
});
},
+
+ /**
+ * Executes the given function in jsxc namespace.
+ *
+ * @memberOf jsxc
+ * @param {string} fnName Function name
+ * @param {array} fnParams Function parameters
+ * @returns Function return value
+ */
+ exec: function(fnName, fnParams) {
+ var fnList = fnName.split('.');
+ var fn = jsxc[fnList[0]];
+ var i;
+ for (i = 1; i < fnList.length; i++) {
+ fn = fn[fnList[i]];
+ }
+
+ if (typeof fn === 'function') {
+ return fn.apply(null, fnParams);
+ }
+ }
};
/**
@@ -708,7 +768,11 @@ var jsxc;
/** OTR options */
otr: {
- ERROR_START_AKE: true
+ enable: true,
+ ERROR_START_AKE: false,
+ debug: false,
+ SEND_WHITESPACE_TAG: true,
+ WHITESPACE_START_AKE: true
},
/** xmpp options */
@@ -744,7 +808,19 @@ var jsxc;
/** manipulate JID from input element */
preJid: function(jid) {
return jid;
- }
+ },
+
+ /**
+ * Action after connected: submit [String] Submit form, false [boolean]
+ * Do nothing, continue [String] Start chat
+ */
+ onConnected: 'submit',
+
+ /**
+ * Action after auth fail: submit [String] Submit form, false [boolean]
+ * Do nothing, ask [String] Show auth fail dialog
+ */
+ onAuthFail: 'submit'
},
/** jquery object from logout element */
@@ -815,9 +891,15 @@ var jsxc;
*
* @memberOf jsxc.options
* @param data Holds all data as key/value
+ * @returns {boolean} false if function failes
*/
saveSettinsPermanent: function() {
+ },
+
+ carbons: {
+ /** Enable carbon copies? */
+ enable: false
}
};
@@ -890,7 +972,9 @@ var jsxc;
jsxc.gui.tooltip('#jsxc_windowList');
- jsxc.gui.roster.init();
+ if (!jsxc.el_exists('#jsxc_roster')) {
+ jsxc.gui.roster.init();
+ }
// prepare regexp for emotions
$.each(jsxc.gui.emotions, function(i, val) {
@@ -1015,7 +1099,7 @@ var jsxc;
var avatarSrc = jsxc.storage.getUserItem('avatar', aid);
var setAvatar = function(src) {
- if (src === 0) {
+ if (src === 0 || src === '0') {
jsxc.options.defaultAvatar.call(el, jid);
return;
}
@@ -1039,13 +1123,18 @@ var jsxc;
if (vCard.length === 0) {
jsxc.debug('No photo provided');
- src = 0;
+ src = '0';
+ } else if (vCard.find('EXTVAL').length > 0) {
+ src = vCard.find('EXTVAL').text();
} else {
var img = vCard.find('BINVAL').text();
var type = vCard.find('TYPE').text();
src = 'data:' + type + ';base64,' + img;
}
+ // concat chunks
+ src = src.replace(/[\t\r\n\f]/gi, '');
+
jsxc.storage.setUserItem('avatar', aid, src);
setAvatar(src);
}, Strophe.getBareJidFromJid(jid), function(msg) {
@@ -1182,7 +1271,7 @@ var jsxc;
var settings = jsxc.prepareLogin();
jsxc.triggeredFromBox = true;
- jsxc.triggeredFromForm = false;
+ jsxc.options.loginForm.triggered = false;
if (settings === false) {
jsxc.gui.showAuthFail();
@@ -1449,7 +1538,7 @@ var jsxc;
showAuthFail: function() {
jsxc.gui.dialog.open(jsxc.gui.template.get('authFailDialog'));
- if (jsxc.triggeredFromBox) {
+ if (jsxc.options.loginForm.triggered !== false) {
$('#jsxc_dialog .jsxc_cancel').hide();
}
@@ -1640,7 +1729,17 @@ var jsxc;
var type = photo.find('TYPE').text();
var src = 'data:' + type + ';base64,' + img;
- $('#jsxc_dialog h3').before('<img class="jsxc_vCard" src="' + src + '" alt="avatar" />');
+ if (photo.find('EXTVAL').length > 0) {
+ src = photo.find('EXTVAL').text();
+ }
+
+ // concat chunks
+ src = src.replace(/[\t\r\n\f]/gi, '');
+
+ var img_el = $('<img class="jsxc_vCard" alt="avatar" />');
+ img_el.attr('src', src);
+
+ $('#jsxc_dialog h3').before(img_el);
}
if ($(stanza).find('vCard').length === 0 || ($(stanza).find('vcard > *').length === 1 && photo.length === 1)) {
@@ -1714,6 +1813,10 @@ var jsxc;
var err = jsxc.options.saveSettinsPermanent.call(this, data);
+ if (typeof self.attr('data-onsubmit') === 'string') {
+ jsxc.exec(self.attr('data-onsubmit'), [ err ]);
+ }
+
setTimeout(function() {
self.find('input[type="submit"]').effect('highlight', {
color: (err) ? 'green' : 'red'
@@ -2023,10 +2126,6 @@ var jsxc;
$('#jsxc_presence > span').text($('#jsxc_presence > ul .jsxc_' + pres).text());
jsxc.gui.updatePresence('own', pres);
- $(document).on('cloaded.roster.jsxc', function() {
- jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
- });
-
jsxc.gui.tooltip('#jsxc_roster');
jsxc.notice.load();
@@ -2264,8 +2363,7 @@ var jsxc;
* Shows a text with link to a login box that no connection exists.
*/
noConnection: function() {
- $('#jsxc_roster .slimScrollDiv').remove();
- $('#jsxc_roster > .jsxc_bottom').remove();
+ $('#jsxc_roster').addClass('jsxc_noConnection');
$('#jsxc_roster').append($('<p>' + jsxc.l.no_connection + '</p>').append(' <a>' + jsxc.l.relogin + '</a>').click(function() {
jsxc.gui.showLoginBox();
@@ -2734,8 +2832,11 @@ var jsxc;
* @param {String} direction 'in' message is received or 'out' message is
* send
* @param {String} msg Message to display
+ * @param {boolean} encrypted Was this message encrypted? Default: false
+ * @param {boolean} forwarded Was this message forwarded? Default: false
+ * @param {integer} stamp Timestamp
*/
- postMessage: function(bid, direction, msg) {
+ postMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
var data = jsxc.storage.getUserItem('buddy', bid);
var html_msg = msg;
@@ -2745,12 +2846,12 @@ var jsxc;
// exceptions:
- if (direction === 'out' && data.msgstate === 2) {
+ if (direction === 'out' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED && forwarded !== true) {
direction = 'sys';
msg = jsxc.l.your_message_wasnt_send_please_end_your_private_conversation;
}
- if (direction === 'in' && data.msgstate === 2) {
+ if (direction === 'in' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED) {
direction = 'sys';
msg = jsxc.l.unencrypted_message_received + ' ' + msg;
}
@@ -2760,13 +2861,14 @@ var jsxc;
msg = jsxc.l.your_message_wasnt_send_because_you_have_no_valid_subscription;
}
- var post = jsxc.storage.saveMessage(bid, direction, msg);
+ encrypted = encrypted || data.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED;
+ var post = jsxc.storage.saveMessage(bid, direction, msg, encrypted, forwarded, stamp);
if (direction === 'in') {
$(document).trigger('postmessagein.jsxc', [ bid, html_msg ]);
}
- if (direction === 'out' && jsxc.master) {
+ if (direction === 'out' && jsxc.master && forwarded !== true) {
jsxc.xmpp.sendMessage(bid, html_msg, post.uid);
}
@@ -2790,7 +2892,6 @@ var jsxc;
var msg = post.msg;
var direction = post.direction;
var uid = post.uid;
- var received = post.received || false;
if (win.find('.jsxc_textinput').is(':not(:focus)') && jsxc.restoreCompleted && direction === 'in' && !restore) {
jsxc.gui.window.highlight(bid);
@@ -2829,17 +2930,29 @@ var jsxc;
});
});
- var msgDiv = $("<div>");
+ var msgDiv = $("<div>"), msgTsDiv = $("<div>");
msgDiv.addClass('jsxc_chatmessage jsxc_' + direction);
msgDiv.attr('id', uid);
- msgDiv.html(msg);
+ msgDiv.html('<div>' + msg + '</div>');
+ msgTsDiv.addClass('jsxc_timestamp');
+ msgTsDiv.html(jsxc.getFormattedTime(post.stamp));
- if (received) {
+ if (post.received || false) {
msgDiv.addClass('jsxc_received');
}
+ if (post.forwarded) {
+ msgDiv.addClass('jsxc_forwarded');
+ }
+
+ if (post.encrypted) {
+ msgDiv.addClass('jsxc_encrypted');
+ }
+
if (direction === 'sys') {
jsxc.gui.window.get(bid).find('.jsxc_textarea').append('<div style="clear:both"/>');
+ } else if (typeof post.stamp !== 'undefined') {
+ msgDiv.append(msgTsDiv);
}
win.find('.jsxc_textarea').append(msgDiv);
@@ -3157,6 +3270,14 @@ var jsxc;
<label for="priority-dnd">%%dnd%%</label><input type="number" value="0" id="priority-dnd" min="-128" max="127" step="1" required="required"/><br />\
<input type="submit" value="%%Save%%"/>\
</fieldset>\
+ </form>\
+ <p></p>\
+ <form data-onsubmit="xmpp.carbons.refresh">\
+ <fieldset class="jsxc_fieldsetCarbons jsxc_fieldset">\
+ <legend>%%Carbon copy%%</legend>\
+ <label for="carbons-enable">%%Enable%%</label><input type="checkbox" id="carbons-enable" /><br />\
+ <input type="submit" value="%%Save%%"/>\
+ </fieldset>\
</form>'
};
@@ -3171,13 +3292,50 @@ var jsxc;
/**
* Create new connection or attach to old
*
+ * @name login
+ * @memberOf jsxc.xmpp
+ */
+ /**
+ * Create new connection with given parameters.
+ *
+ * @name login^2
+ * @param {string} jid
+ * @param {string} password
+ * @memberOf jsxc.xmpp
+ */
+ /**
+ * Attach connection with given parameters.
+ *
+ * @name login^3
+ * @param {string} jid
+ * @param {string} sid
+ * @param {string} rid
* @memberOf jsxc.xmpp
*/
login: function() {
- var sid = jsxc.storage.getItem('sid');
- var rid = jsxc.storage.getItem('rid');
- var jid = jsxc.storage.getItem('jid');
+ if (jsxc.xmpp.conn && jsxc.xmpp.conn.connected) {
+ return;
+ }
+
+ var jid = null, password = null, sid = null, rid = null;
+
+ switch (arguments.length) {
+ case 2:
+ jid = arguments[0];
+ password = arguments[1];
+ break;
+ case 3:
+ jid = arguments[0];
+ sid = arguments[1];
+ rid = arguments[2];
+ break;
+ default:
+ jid = jsxc.storage.getItem('jid');
+ sid = jsxc.storage.getItem('sid');
+ rid = jsxc.storage.getItem('rid');
+ }
+
var url = jsxc.options.get('xmpp').url;
// Register eventlistener
@@ -3185,6 +3343,8 @@ var jsxc;
$(document).on('attached.jsxc', jsxc.xmpp.attached);
$(document).on('disconnected.jsxc', jsxc.xmpp.disconnected);
$(document).on('ridChange', jsxc.xmpp.onRidChange);
+ $(document).on('connfail.jsxc', jsxc.xmpp.onConnfail);
+ $(document).on('authfail.jsxc', jsxc.xmpp.onAuthFail);
Strophe.addNamespace('RECEIPTS', 'urn:xmpp:receipts');
@@ -3225,10 +3385,10 @@ var jsxc;
$(document).trigger('disconnected.jsxc');
break;
case Strophe.Status.CONNFAIL:
- jsxc.xmpp.onConnfail(condition);
+ $(document).trigger('connfail.jsxc');
break;
case Strophe.Status.AUTHFAIL:
- jsxc.gui.showAuthFail();
+ $(document).trigger('authfail.jsxc');
break;
}
};
@@ -3244,7 +3404,23 @@ var jsxc;
} else {
jsxc.debug('New connection');
- jsxc.xmpp.conn.connect(jsxc.options.xmpp.jid, jsxc.options.xmpp.password, callback);
+ if (jsxc.xmpp.conn.caps) {
+ // Add system handler, because user handler isn't called before
+ // we are authenticated
+ jsxc.xmpp.conn._addSysHandler(function(stanza) {
+ var from = jsxc.xmpp.conn.domain, c = stanza.querySelector('c'), ver = c.getAttribute('ver'), node = c.getAttribute('node');
+
+ var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
+
+ jsxc.xmpp.conn.caps._jidVerIndex[from] = ver;
+ _jidNodeIndex[from] = node;
+
+ localStorage.setItem('strophe.caps._jidVerIndex', JSON.stringify(jsxc.xmpp.conn.caps._jidVerIndex));
+ localStorage.setItem('strophe.caps._jidNodeIndex', JSON.stringify(_jidNodeIndex));
+ }, Strophe.NS.CAPS);
+ }
+
+ jsxc.xmpp.conn.connect(jid || jsxc.options.xmpp.jid, password || jsxc.options.xmpp.password, callback);
}
},
@@ -3279,11 +3455,11 @@ var jsxc;
jsxc.triggeredFromElement = true;
// restore all otr objects
- $.each(jsxc.storage.getUserItem('otrlist'), function(i, val) {
+ $.each(jsxc.storage.getUserItem('otrlist') || {}, function(i, val) {
jsxc.otr.create(val);
});
- var numOtr = Object.keys(jsxc.otr.objects).length + 1;
+ var numOtr = Object.keys(jsxc.otr.objects || {}).length + 1;
var disReady = function() {
if (--numOtr <= 0) {
jsxc.xmpp.conn.flush();
@@ -3295,7 +3471,7 @@ var jsxc;
};
// end all private conversations
- $.each(jsxc.otr.objects, function(key, obj) {
+ $.each(jsxc.otr.objects || {}, function(key, obj) {
if (obj.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED) {
obj.endOtr.call(obj, function() {
obj.init.call(obj);
@@ -3339,20 +3515,25 @@ var jsxc;
jsxc.storage.removeUserItem('avatar', 'own');
jsxc.storage.removeUserItem('otrlist');
- // submit login form
- if (jsxc.triggeredFromForm) {
- // Trigger normal submit
- jsxc.submitLoginForm();
- return;
+ if (jsxc.options.loginForm.triggered) {
+ switch (jsxc.options.loginForm.onConnected || 'submit') {
+ case 'submit':
+ jsxc.submitLoginForm();
+ /* falls through */
+ case false:
+ jsxc.xmpp.connectionReady();
+ return;
+ }
}
- // reload page after login from login box
- if (jsxc.triggeredFromBox) {
- window.location.reload();
- return;
- }
+ // start chat
- jsxc.xmpp.connectionReady();
+ jsxc.gui.init();
+ $('#jsxc_roster').removeClass('jsxc_noConnection');
+ jsxc.onMaster();
+ jsxc.xmpp.conn.resume();
+ jsxc.gui.dialog.close();
+ $(document).trigger('attached.jsxc');
},
/**
@@ -3367,6 +3548,37 @@ var jsxc;
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onReceived, null, 'message');
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onPresence, null, 'presence');
+ var caps = jsxc.xmpp.conn.caps;
+ var domain = jsxc.xmpp.conn.domain;
+
+ if (caps && jsxc.options.get('carbons').enable) {
+ var conditionalEnable = function() {
+ if (jsxc.xmpp.conn.caps.hasFeatureByJid(domain, jsxc.CONST.NS.CARBONS)) {
+ jsxc.xmpp.carbons.enable();
+ }
+ };
+
+ if (typeof caps._knownCapabilities[caps._jidVerIndex[domain]] === 'undefined') {
+ var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
+
+ $(document).on('caps.strophe', function onCaps(ev, from) {
+
+ if (from !== domain) {
+ return;
+ }
+
+ conditionalEnable();
+
+ $(document).off('caps.strophe', onCaps);
+ });
+
+ caps._requestCapabilities(jsxc.xmpp.conn.domain, _jidNodeIndex[domain], caps._jidVerIndex[domain]);
+ } else {
+ // We know server caps
+ conditionalEnable();
+ }
+ }
+
// Only load roaster if necessary
if (!jsxc.restore || !jsxc.storage.getUserItem('buddylist')) {
// in order to not overide existing presence information, we send
@@ -3448,6 +3660,13 @@ var jsxc;
jsxc.storage.removeUserItem('avatar', 'own');
jsxc.storage.removeUserItem('otrlist');
+ $(document).off('connected.jsxc', jsxc.xmpp.connected);
+ $(document).off('attached.jsxc', jsxc.xmpp.attached);
+ $(document).off('disconnected.jsxc', jsxc.xmpp.disconnected);
+ $(document).off('ridChange', jsxc.xmpp.onRidChange);
+ $(document).off('connfail.jsxc', jsxc.xmpp.onConnfail);
+ $(document).off('authfail.jsxc', jsxc.xmpp.onAuthFail);
+
jsxc.xmpp.conn = null;
$('#jsxc_windowList').remove();
@@ -3471,15 +3690,33 @@ var jsxc;
* @param {String} condition information why we lost the connection
* @private
*/
- onConnfail: function(condition) {
+ onConnfail: function(ev, condition) {
jsxc.debug('XMPP connection failed: ' + condition);
- if (jsxc.triggeredFromForm) {
+ if (jsxc.options.loginForm.triggered) {
jsxc.submitLoginForm();
}
},
/**
+ * Triggered on auth fail.
+ *
+ * @private
+ */
+ onAuthFail: function() {
+ if (jsxc.options.loginForm.triggered) {
+ switch (jsxc.options.loginForm.onAuthFail || 'ask') {
+ case 'ask':
+ jsxc.gui.showAuthFail();
+ break;
+ case 'submit':
+ jsxc.submitLoginForm();
+ break;
+ }
+ }
+ },
+
+ /**
* Triggered on initial roster load
*
* @param {dom} iq
@@ -3626,8 +3863,6 @@ var jsxc;
var ptype = $(presence).attr('type');
var from = $(presence).attr('from');
var jid = Strophe.getBareJidFromJid(from).toLowerCase();
- var to = $(presence).attr('to');
- to = (to) ? Strophe.getBareJidFromJid(to).toLowerCase() : jid;
var r = Strophe.getResourceFromJid(from);
var bid = jsxc.jidToBid(jid);
var data = jsxc.storage.getUserItem('buddy', bid);
@@ -3635,7 +3870,7 @@ var jsxc;
var status = null;
var xVCard = $(presence).find('x[xmlns="vcard-temp:x:update"]');
- if (jid === to) {
+ if (jid === Strophe.getBareJidFromJid(jsxc.storage.getItem("jid"))) {
return true;
}
@@ -3729,28 +3964,66 @@ var jsxc;
* @returns {Boolean}
* @private
*/
- onMessage: function(message) {
- /*
- * <message xmlns='jabber:client' type='chat' to='' id='' from=''>
- * <body>...</body> <active
- * xmlns='http://jabber.org/protocol/chatstates'/> </message>
- */
+ onMessage: function(stanza) {
+
+ var forwarded = $(stanza).find('forwarded[xmlns="' + jsxc.CONST.NS.FORWARD + '"]');
+ var message, carbon;
+
+ if (forwarded.length > 0) {
+ message = forwarded.find('> message');
+ forwarded = true;
+ carbon = $(stanza).find('> [xmlns="' + jsxc.CONST.NS.CARBONS + '"]');
- jsxc.debug('Incoming message', message);
+ if (carbon.length === 0) {
+ carbon = false;
+ }
+
+ jsxc.debug('Incoming forwarded message', message);
+ } else {
+ message = stanza;
+ forwarded = false;
+ carbon = false;
+
+ jsxc.debug('Incoming message', message);
+ }
+
+ var body = $(message).find('body:first').text();
+
+ if (!body || (body.match(/\?OTR/i) && forwarded)) {
+ return true;
+ }
var type = $(message).attr('type');
var from = $(message).attr('from');
var mid = $(message).attr('id');
- var jid = Strophe.getBareJidFromJid(from);
- var bid = jsxc.jidToBid(jid);
- var data = jsxc.storage.getUserItem('buddy', bid);
- var body = $(message).find('body:first').text();
- var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
+ var bid;
+
+ var delay = $(message).find('delay[xmlns="urn:xmpp:delay"]');
+
+ var stamp = (delay.length > 0) ? new Date(delay.attr('stamp')) : new Date();
+ stamp = stamp.getTime();
+
+ if (carbon) {
+ var direction = (carbon.prop("tagName") === 'sent') ? 'out' : 'in';
+ bid = jsxc.jidToBid((direction === 'out') ? $(message).attr('to') : from);
+
+ jsxc.gui.window.postMessage(bid, direction, body, false, forwarded, stamp);
- if (!body) {
return true;
+
+ } else if (forwarded) {
+ // Someone forwarded a message to us
+
+ body = from + jsxc.translate(' %%to%% ') + $(stanza).attr('to') + '"' + body + '"';
+
+ from = $(stanza).attr('from');
}
+ var jid = Strophe.getBareJidFromJid(from);
+ bid = jsxc.jidToBid(jid);
+ var data = jsxc.storage.getUserItem('buddy', bid);
+ var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
+
if (data === null) {
// jid not in roster
@@ -3763,7 +4036,7 @@ var jsxc;
var msg = jsxc.removeHTML(body);
msg = jsxc.escapeHTML(msg);
- jsxc.storage.saveMessage(bid, 'in', msg);
+ jsxc.storage.saveMessage(bid, 'in', msg, false, forwarded, stamp);
return true;
}
@@ -3785,7 +4058,7 @@ var jsxc;
jsxc.otr.create(bid);
}
- if (mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
+ if (!forwarded && mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
// Send received according to XEP-0184
jsxc.xmpp.conn.send($msg({
to: from
@@ -3796,9 +4069,9 @@ var jsxc;
}
if (jsxc.otr.objects.hasOwnProperty(bid)) {
- jsxc.otr.objects[bid].receiveMsg(body);
+ jsxc.otr.objects[bid].receiveMsg(body, stamp);
} else {
- jsxc.gui.window.postMessage(bid, 'in', body);
+ jsxc.gui.window.postMessage(bid, 'in', body, false, forwarded, stamp);
}
// preserve handler
@@ -3957,6 +4230,12 @@ var jsxc;
id: uid
}).c('body').t(msg);
+ if (jsxc.xmpp.carbons.enabled && msg.match(/^\?OTR/)) {
+ xmlMsg.up().c("private", {
+ xmlns: jsxc.CONST.NS.CARBONS
+ });
+ }
+
if (type === 'chat' && (isBar || jsxc.xmpp.conn.caps.hasFeatureByJid(jid, Strophe.NS.RECEIPTS))) {
// Add request according to XEP-0184
xmlMsg.up().c('request', {
@@ -4015,6 +4294,85 @@ var jsxc;
};
/**
+ * Handle carbons (XEP-0280);
+ *
+ * @namespace jsxc.xmpp.carbons
+ */
+ jsxc.xmpp.carbons = {
+ enabled: false,
+
+ /**
+ * Enable carbons.
+ *
+ * @memberOf jsxc.xmpp.carbons
+ * @param cb callback
+ */
+ enable: function(cb) {
+ var iq = $iq({
+ type: 'set'
+ }).c('enable', {
+ xmlns: jsxc.CONST.NS.CARBONS
+ });
+
+ jsxc.xmpp.conn.sendIQ(iq, function() {
+ jsxc.xmpp.carbons.enabled = true;
+
+ jsxc.debug('Carbons enabled');
+
+ if (cb) {
+ cb.call(this);
+ }
+ }, function(stanza) {
+ jsxc.warn('Could not enable carbons', stanza);
+ });
+ },
+
+ /**
+ * Disable carbons.
+ *
+ * @memberOf jsxc.xmpp.carbons
+ * @param cb callback
+ */
+ disable: function(cb) {
+ var iq = $iq({
+ type: 'set'
+ }).c('disable', {
+ xmlns: jsxc.CONST.NS.CARBONS
+ });
+
+ jsxc.xmpp.conn.sendIQ(iq, function() {
+ jsxc.xmpp.carbons.enabled = false;
+
+ jsxc.debug('Carbons disabled');
+
+ if (cb) {
+ cb.call(this);
+ }
+ }, function(stanza) {
+ jsxc.warn('Could not disable carbons', stanza);
+ });
+ },
+
+ /**
+ * Enable/Disable carbons depending on options key.
+ *
+ * @memberOf jsxc.xmpp.carbons
+ * @param err error message
+ */
+ refresh: function(err) {
+ if (err === false) {
+ return;
+ }
+
+ if (jsxc.options.get('carbons').enable) {
+ return jsxc.xmpp.carbons.enable();
+ }
+
+ return jsxc.xmpp.carbons.disable();
+ }
+ };
+
+ /**
* Handle long-live data
*
* @namespace jsxc.storage
@@ -4553,9 +4911,11 @@ var jsxc;
* @param bid
* @param direction
* @param msg
+ * @param encrypted
+ * @param forwarded
* @return post
*/
- saveMessage: function(bid, direction, msg) {
+ saveMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
var chat = jsxc.storage.getUserItem('chat', bid) || [];
var uid = new Date().getTime() + ':msg';
@@ -4568,7 +4928,10 @@ var jsxc;
direction: direction,
msg: msg,
uid: uid.replace(/:/, '-'),
- received: false
+ received: false,
+ encrypted: encrypted || false,
+ forwarded: forwarded || false,
+ stamp: stamp || new Date().getTime()
};
chat.unshift(post);
@@ -4626,16 +4989,16 @@ var jsxc;
* @param {string} msg received message
* @param {string} encrypted True, if msg was encrypted.
*/
- receiveMessage: function(bid, msg, encrypted) {
+ receiveMessage: function(bid, msg, encrypted, stamp) {
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT) {
jsxc.otr.backup(bid);
}
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT && !encrypted) {
- jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + msg + ']');
+ jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + msg + ']', encrypted, stamp);
} else {
- jsxc.gui.window.postMessage(bid, 'in', msg);
+ jsxc.gui.window.postMessage(bid, 'in', msg, encrypted, stamp);
}
},
@@ -4770,8 +5133,8 @@ var jsxc;
});
// Receive message
- jsxc.otr.objects[bid].on('ui', function(msg, encrypted) {
- jsxc.otr.receiveMessage(bid, msg, encrypted === true);
+ jsxc.otr.objects[bid].on('ui', function(msg, encrypted, stamp) {
+ jsxc.otr.receiveMessage(bid, msg, encrypted === true, stamp);
});
// Send message
@@ -5362,16 +5725,7 @@ var jsxc;
notice.click(function() {
jsxc.notice.remove(nid);
- var fnList = fnName.split('.');
- var fn = jsxc[fnList[0]];
- var i;
- for (i = 1; i < fnList.length; i++) {
- fn = fn[fnList[i]];
- }
-
- if (typeof fn === 'function') {
- fn.apply(null, fnParams);
- }
+ jsxc.exec(fnName, fnParams);
return false;
});
diff --git a/build/js/jsxc/jsxc.lib.webrtc.js b/build/js/jsxc/jsxc.lib.webrtc.js
index 6b1ea17..2f8c32d 100644
--- a/build/js/jsxc/jsxc.lib.webrtc.js
+++ b/build/js/jsxc/jsxc.lib.webrtc.js
@@ -1,13 +1,13 @@
/*!
- * jsxc v1.0.0 - 2014-11-06
+ * jsxc v1.1.0-beta - 2015-02-03
*
- * Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
+ * Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
*
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0
+ * @version 1.1.0-beta
* @license MIT
*/
@@ -288,6 +288,11 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
jsxc.debug('Update icon', bid);
var self = jsxc.webrtc;
+
+ if (bid === jsxc.jidToBid(self.conn.jid)) {
+ return;
+ }
+
var win = jsxc.gui.window.get(bid);
var jid = win.data('jid') || jsxc.storage.getUserItem('buddy', bid).jid;
diff --git a/build/js/jsxc/jsxc.min.js b/build/js/jsxc/jsxc.min.js
index d452788..81f8f7d 100644
--- a/build/js/jsxc/jsxc.min.js
+++ b/build/js/jsxc/jsxc.min.js
@@ -1,30 +1,30 @@
/*! This file is concatenated for the browser. */
/*!
- * jsxc v1.0.0 - 2014-11-06
+ * jsxc v1.1.0-beta - 2015-02-03
*
- * Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
+ * Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
*
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0
+ * @version 1.1.0-beta
* @license MIT
*/
-var jsxc;!function($){"use strict";jsxc={version:"1.0.0",master:!1,role_allocation:!1,to:null,toBusy:null,toNotification:null,toNotificationDelay:500,keepalive:null,restore:!1,restoreCompleted:!1,triggeredFromForm:!1,triggeredFromBox:!1,triggeredFromElement:!1,triggeredFromLogout:!1,ls:[],storageNotConform:null,toSNC:null,bid:null,CONST:{NOTIFICATION_DEFAULT:"default",NOTIFICATION_GRANTED:"granted",NOTIFICATION_DENIED:"denied",STATUS:["offline","dnd","xa","away","chat","online"],SOUNDS:{MSG:"incomingMessage.wav",CALL:"Rotary-Phone6.mp3",NOTICE:"Ping1.mp3"},REGEX:{JID:new RegExp("\\b[^\"&'\\/:<>@\\s]+@[\\w-_.]+\\b","ig"),URL:new RegExp(/((?:https?:\/\/|www\.|([\w\-]+\.[a-zA-Z]{2,3})(?=\b))(?:(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\)([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|])?)|(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|]))?)/gi)}},debug:function(msg,data,level){if(level&&(msg="["+level+"] "+msg),data){jsxc.storage.getItem("debug")===!0&&console.log(msg,data);var d;try{d=$("<span>").prepend($(data).clone()).html()}catch(err){try{d=JSON.stringify(data)}catch(err2){d="see js console"}}jsxc.log=jsxc.log+msg+": "+d+"\n"}else console.log(msg),jsxc.log=jsxc.log+msg+"\n"},warn:function(msg,data){jsxc.debug(msg,data,"WARN")},error:function(msg,data){jsxc.debug(msg,data,"ERROR")},log:"",init:function(options){options&&$.extend(jsxc.options,options),jsxc.options.get=function(key){var local=jsxc.storage.getUserItem("options")||{};return local[key]||jsxc.options[key]},jsxc.options.set=function(key,value){jsxc.storage.updateItem("options",key,value,!0)},jsxc.storageNotConform=jsxc.storage.getItem("storageNotConform"),null===jsxc.storageNotConform&&(jsxc.storageNotConform=2);var lang;if(lang=null!==jsxc.storage.getItem("lang")?jsxc.storage.getItem("lang"):jsxc.options.autoLang&&navigator.language?navigator.language.substr(0,2):jsxc.options.defaultLang,jsxc.l=jsxc.l10n.en,$.extend(jsxc.l,jsxc.l10n[lang]),"undefined"==typeof localStorage)return void jsxc.debug("Browser doesn't support localStorage.");window.addEventListener("storage",jsxc.storage.onStorage,!1);var lastActivity=jsxc.storage.getItem("lastActivity")||0;if((new Date).getTime()-lastActivity<jsxc.options.loginTimeout&&(jsxc.restore=!0),jsxc.storage.getItem("rid")&&jsxc.storage.getItem("sid")&&jsxc.restore)jsxc.bid=jsxc.jidToBid(jsxc.storage.getItem("jid")),jsxc.gui.init(),null!==jsxc.options.logoutElement&&jsxc.options.logoutElement.length>0&&jsxc.options.logoutElement.one("click",function(){return jsxc.options.logoutElement=$(this),jsxc.triggeredFromLogout=!0,jsxc.xmpp.logout()}),"undefined"!=typeof jsxc.storage.getItem("alive")&&jsxc.restore?jsxc.checkMaster():jsxc.onMaster();else{if(!jsxc.options.loginForm.form||!(jsxc.el_exists(jsxc.options.loginForm.form)&&jsxc.el_exists(jsxc.options.loginForm.jid)&&jsxc.el_exists(jsxc.options.loginForm.pass)))return void(jsxc.options.displayRosterMinimized()&&(jsxc.storage.setUserItem("roster","hidden"),jsxc.gui.roster.init(),jsxc.gui.roster.noConnection()));"function"==typeof jsxc.options.formFound&&jsxc.options.formFound.call();var form=jsxc.options.loginForm.form=$(jsxc.options.loginForm.form),events=form.data("events")||{submit:[]},submits=[];$.each(events.submit,function(index,val){submits.push(val.handler)}),form.data("submits",submits),form.off("submit"),form.submit(function(){var settings=jsxc.prepareLogin();return settings===!1||"true"!==settings.xmpp.onlogin&&settings.xmpp.onlogin!==!0?!0:(jsxc.triggeredFromForm=!0,jsxc.xmpp.login(),!1)})}},prepareLogin:function(){var username=$(jsxc.options.loginForm.jid).val(),password=$(jsxc.options.loginForm.pass).val();if("function"!=typeof jsxc.options.loadSettings)return void jsxc.error("No loadSettings function given. Abort.");jsxc.gui.showWaitAlert(jsxc.l.Logging_in);var settings=jsxc.options.loadSettings.call(this,username,password);if(settings===!1||null===settings||"undefined"==typeof settings)return jsxc.warn("No settings provided"),!1;"string"==typeof settings.xmpp.username&&(username=settings.xmpp.username);var jid,resource=settings.xmpp.resource?"/"+settings.xmpp.resource:"",domain=settings.xmpp.domain;return jid=username.match(/@(.*)$/)?username.match(/\/(.*)$/)?username:username+resource:username+"@"+domain+resource,"function"==typeof jsxc.options.loginForm.preJid&&(jid=jsxc.options.loginForm.preJid(jid)),jsxc.bid=jsxc.jidToBid(jid),settings.xmpp.username=jid.split("@")[0],settings.xmpp.domain=jid.split("@")[1].split("/")[0],settings.xmpp.resource=jid.split("@")[1].split("/")[1]||"",$.each(settings,function(key,val){jsxc.options.set(key,val)}),jsxc.options.xmpp.jid=jid,jsxc.options.xmpp.password=password,settings},onSlave:function(){jsxc.debug("I am the slave."),jsxc.role_allocation=!0,jsxc.restoreRoster(),jsxc.restoreWindows(),jsxc.restoreCompleted=!0,$(document).trigger("restoreCompleted.jsxc")},onMaster:function(){jsxc.debug("I am master."),jsxc.master=!0,jsxc.storage.setItem("alive",0),jsxc.storage.setItem("alive_busy",0),jsxc.storage.getUserItem("windowlist")||jsxc.storage.setUserItem("windowlist",[]),jsxc.startKeepAlive(),jsxc.otr.createDSA()},_onMaster:function(){if(jsxc.role_allocation&&$.each(jsxc.storage.getUserItem("windowlist"),function(index,val){jsxc.otr.create(val)}),jsxc.role_allocation=!0,jsxc.restore&&!jsxc.restoreCompleted&&(jsxc.restoreRoster(),jsxc.restoreWindows(),jsxc.restoreCompleted=!0,$(document).trigger("restoreCompleted.jsxc")),jsxc.restore){var noti=jsxc.storage.getUserItem("notification")||2;jsxc.options.notification&&noti>0&&jsxc.notification.hasSupport()?jsxc.notification.hasPermission()?jsxc.notification.init():jsxc.notification.prepareRequest():jsxc.options.notification=!1}jsxc.xmpp.login()},checkMaster:function(){jsxc.debug("check master"),jsxc.to=window.setTimeout(jsxc.onMaster,1e3),jsxc.storage.ink("alive")},startKeepAlive:function(){jsxc.keepalive=window.setInterval(jsxc.keepAlive,jsxc.options.timeout-1e3)},keepAlive:function(){jsxc.storage.ink("alive"),jsxc.role_allocation&&jsxc.storage.setItem("lastActivity",(new Date).getTime())},keepBusyAlive:function(){jsxc.toBusy&&window.clearTimeout(jsxc.toBusy),jsxc.keepalive&&window.clearInterval(jsxc.keepalive),jsxc.storage.ink("alive_busy"),jsxc.toBusy=window.setTimeout(jsxc.startKeepAlive,jsxc.options.busyTimeout-1e3)},random:function(max){return Math.floor(Math.random()*max)},el_exists:function(selector){return $(selector).length>0},jidToCid:function(jid){jsxc.warn("jsxc.jidToCid is deprecated!");var cid=Strophe.getBareJidFromJid(jid).replace("@","-").replace(/\./g,"-").toLowerCase();return cid},jidToBid:function(jid){return Strophe.getBareJidFromJid(jid).toLowerCase()},restoreRoster:function(){var buddies=jsxc.storage.getUserItem("buddylist");return buddies&&0!==buddies.length?($.each(buddies,function(index,value){jsxc.gui.roster.add(value)}),void $(document).trigger("cloaded.roster.jsxc")):(jsxc.debug("No saved buddylist."),void jsxc.gui.roster.empty())},restoreWindows:function(){var windows=jsxc.storage.getUserItem("windowlist");null!==windows&&$.each(windows,function(index,bid){var window=jsxc.storage.getUserItem("window",bid);return window?(jsxc.gui.window.init(bid),window.minimize?jsxc.gui.window.hide(bid):jsxc.gui.window.show(bid),void jsxc.gui.window.setText(bid,window.text)):(jsxc.debug("Associated window-element is missing: "+bid),!0)})},submitLoginForm:function(){var form=jsxc.options.loginForm.form.off("submit"),submits=form.data("submits")||[];$.each(submits,function(index,val){form.submit(val)}),form.find("#submit").length>0?form.find("#submit").click():form.submit()},escapeHTML:function(text){return text=text.replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">"),text.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},removeHTML:function(text){return $("<span>").html(text).text()},switchEvents:function(obj){var ns=Math.random().toString(36).substr(2,12),self=this;return $.each(obj,function(key,val){$(document).one(key+"."+ns,function(){$(document).off("."+ns),val.apply(self,arguments)})}),ns},isHidden:function(){var hidden=!1;return"undefined"!=typeof document.hidden?hidden=document.hidden:"undefined"!=typeof document.webkitHidden?hidden=document.webkitHidden:"undefined"!=typeof document.mozHidden?hidden=document.mozHidden:"undefined"!=typeof document.msHidden&&(hidden=document.msHidden),hidden&&jsxc.master?jsxc.storage.ink("hidden",0):hidden||jsxc.master||jsxc.storage.ink("hidden"),hidden},translate:function(text){return text.replace(/%%([a-zA-Z0-9_-}{ .!,?/'@]+)%%/g,function(s,key){var k=key.replace(/ /gi,"_").replace(/[.!,?/'@]/g,"");return jsxc.l[k]||jsxc.warn("No translation for: "+k),jsxc.l[k]||key.replace(/_/g," ")})}},jsxc.options={app_name:"web applications",timeout:3e3,busyTimeout:15e3,otr:{ERROR_START_AKE:!0},xmpp:{url:null,jid:null,domain:null,password:null,overwrite:!1,onlogin:!0},priority:{online:0,chat:0,away:0,xa:0,dnd:0},loginForm:{form:null,jid:null,pass:null,preJid:function(jid){return jid}},logoutElement:null,numberOfMsg:10,defaultLang:"en",autoLang:!0,rosterAppend:"body",notification:!0,popupDuration:6e3,root:"",loginTimeout:6e5,displayRosterMinimized:function(){return!1},hideOffline:!1,muteNotification:!1,defaultAvatar:function(){},loadSettings:function(){},saveSettinsPermanent:function(){}},jsxc.gui={emotions:[["O:-) O:)","angel"],[">:-( >:( &gt;:-( &gt;:(","angry"],[":-) :)","smile"],[":-D :D","grin"],[":-( :(","sad"],[";-) ;)","wink"],[":-P :P","tonguesmile"],["=-O","surprised"],[":kiss: :-*","kiss"],["8-) :cool:","sunglassess"],[":'-( :'( :&amp;apos;-(","crysad"],[":-/","doubt"],[":-X :X","zip"],[":yes:","thumbsup"],[":no:","thumbsdown"],[":beer:","beer"],[":devil:","devil"],[":kiss: :kissing:","kissing"],["@->-- :rose: @-&gt;--","rose"],[":music:","music"],[":love:","love"],[":zzz:","tired"]],queryActions:{message:function(jid,params){var win=jsxc.gui.window.open(jsxc.jidToBid(jid));params&&"string"==typeof params.body&&win.find(".jsxc_textinput").val(params.body)},remove:function(jid){jsxc.gui.showRemoveDialog(jsxc.jidToBid(jid))},subscribe:function(jid,params){jsxc.gui.showContactDialog(jid),params&&$("#jsxc_alias").val(params.name)},vcard:function(jid){jsxc.gui.showVcard(jid)}},init:function(){$("body").append($(jsxc.gui.template.get("windowList"))),$(window).resize(jsxc.gui.updateWindowListSB),$("#jsxc_windowList").resize(jsxc.gui.updateWindowListSB),$("#jsxc_windowListSB .jsxc_scrollLeft").click(function(){jsxc.gui.scrollWindowListBy(-200)}),$("#jsxc_windowListSB .jsxc_scrollRight").click(function(){jsxc.gui.scrollWindowListBy(200)}),$("#jsxc_windowList").on("wheel",function(ev){$("#jsxc_windowList").data("isOver")&&jsxc.gui.scrollWindowListBy(ev.originalEvent.wheelDelta>0?200:-200)}),jsxc.gui.tooltip("#jsxc_windowList"),jsxc.gui.roster.init(),$.each(jsxc.gui.emotions,function(i,val){var reg=val[0].replace(/(\/|\||\*|\.|\+|\?|\^|\$|\(|\)|\[|\]|\{|\})/g,"\\$1");reg="("+reg.split(" ").join("|")+")",jsxc.gui.emotions[i][2]=new RegExp(reg,"g")}),jsxc.gui.windowTemplate=$(jsxc.gui.template.get("chatWindow")),jsxc.gui.buddyTemplate=$(jsxc.gui.template.get("rosterBuddy"))},tooltip:function(selector){$(selector).tooltip({show:{delay:600},content:function(){return $(this).attr("title").replace(/\n/g,"<br />")}})},update:function(bid){var data=jsxc.storage.getUserItem("buddy",bid);if(!data)return void jsxc.debug("No data for "+bid);var ri=jsxc.gui.roster.getItem(bid),we=jsxc.gui.window.get(bid),ue=ri.add(we),spot=$('.jsxc_spot[data-bid="'+bid+'"]');switch(ri.data(data),ue.add(spot).removeClass("jsxc_"+jsxc.CONST.STATUS.join(" jsxc_")).addClass("jsxc_"+jsxc.CONST.STATUS[data.status]),ue.find(".jsxc_name").add(spot).text(data.name).attr("title",jsxc.l.is+" "+jsxc.CONST.STATUS[data.status]),data.msgstate){case 0:we.find(".jsxc_transfer").removeClass("jsxc_enc jsxc_fin").attr("title",jsxc.l.your_connection_is_unencrypted),we.find(".jsxc_settings .jsxc_verification").addClass("jsxc_disabled"),we.find(".jsxc_settings .jsxc_transfer").text(jsxc.l.start_private);break;case 1:we.find(".jsxc_transfer").addClass("jsxc_enc").attr("title",jsxc.l.your_connection_is_encrypted),we.find(".jsxc_settings .jsxc_verification").removeClass("jsxc_disabled"),we.find(".jsxc_settings .jsxc_transfer").text(jsxc.l.close_private);break;case 2:we.find(".jsxc_settings .jsxc_verification").addClass("jsxc_disabled"),we.find(".jsxc_transfer").removeClass("jsxc_enc").addClass("jsxc_fin").attr("title",jsxc.l.your_buddy_closed_the_private_connection),we.find(".jsxc_settings .jsxc_transfer").text(jsxc.l.close_private)}data.trust?we.find(".jsxc_transfer").addClass("jsxc_trust").attr("title",jsxc.l.your_buddy_is_verificated):we.find(".jsxc_transfer").removeClass("jsxc_trust"),data.sub&&"both"!==data.sub?ue.addClass("jsxc_oneway"):ue.removeClass("jsxc_oneway");var info="<b>"+Strophe.getBareJidFromJid(data.jid)+"</b>\n";info+=jsxc.translate("%%Subscription%%: %%"+data.sub+"%%\n"),info+=jsxc.translate("%%Status%%: %%"+jsxc.CONST.STATUS[data.status]+"%%"),ri.find(".jsxc_name").attr("title",info),data.avatar&&data.avatar.length>0?jsxc.gui.updateAvatar(ue,data.jid,data.avatar):jsxc.options.defaultAvatar.call(ue,data.jid)},updateAvatar:function(el,jid,aid){if("undefined"==typeof aid)return void("function"==typeof jsxc.options.defaultAvatar&&jsxc.options.defaultAvatar.call(el,jid));var avatarSrc=jsxc.storage.getUserItem("avatar",aid),setAvatar=function(src){return 0===src?void jsxc.options.defaultAvatar.call(el,jid):(el.find(".jsxc_avatar").removeAttr("style"),void el.find(".jsxc_avatar").css({"background-image":"url("+src+")","text-indent":"999px"}))};null!==avatarSrc?setAvatar(avatarSrc):jsxc.xmpp.conn.vcard.get(function(stanza){jsxc.debug("vCard",stanza);var src,vCard=$(stanza).find("vCard > PHOTO");if(0===vCard.length)jsxc.debug("No photo provided"),src=0;else{var img=vCard.find("BINVAL").text(),type=vCard.find("TYPE").text();src="data:"+type+";base64,"+img}jsxc.storage.setUserItem("avatar",aid,src),setAvatar(src)},Strophe.getBareJidFromJid(jid),function(msg){jsxc.warn("Could not load vcard.",msg),jsxc.storage.setUserItem("avatar",aid,0),setAvatar(0)})},updateWindowListSB:function(){$("#jsxc_windowList>ul").width()>$("#jsxc_windowList").width()?$("#jsxc_windowListSB > div").removeClass("jsxc_disabled"):($("#jsxc_windowListSB > div").addClass("jsxc_disabled"),$("#jsxc_windowList>ul").css("right","0px"))},scrollWindowListBy:function(offset){var scrollWidth=$("#jsxc_windowList>ul").width(),width=$("#jsxc_windowList").width(),el=$("#jsxc_windowList>ul"),right=parseInt(el.css("right"))-offset,padding=$("#jsxc_windowListSB").width();width>scrollWidth||(right>0&&(right=0),width-scrollWidth-padding>right&&(right=width-scrollWidth-padding),el.css("right",right+"px"))},getWindow:function(bid){return jsxc.warn("jsxc.gui.getWindow is deprecated!"),jsxc.gui.window.get(bid)},toggleList:function(){var self=$(this);self.disableSelection();var ul=self.find("ul"),slideUp=null;slideUp=function(){ul.slideUp({complete:function(){self.removeClass("jsxc_opened")}}),$("body").off("click",null,slideUp)},$(this).click(function(){return ul.is(":hidden")?($("body").click(),$("body").one("click",slideUp)):$("body").off("click",null,slideUp),ul.slideToggle(),window.clearTimeout(ul.data("timer")),self.toggleClass("jsxc_opened"),!1}).mouseleave(function(){ul.data("timer",window.setTimeout(slideUp,2e3))}).mouseenter(function(){window.clearTimeout(ul.data("timer"))})},showLoginBox:function(){$(document).on("complete.dialog.jsxc",function(){$("#jsxc_password").focus()}),jsxc.gui.dialog.open(jsxc.gui.template.get("loginBox")),$("#jsxc_dialog").find("form").submit(function(){$(this).find("input[type=submit]").prop("disabled",!0),jsxc.options.loginForm.form=$(this),jsxc.options.loginForm.jid=$(this).find("#jsxc_username"),jsxc.options.loginForm.pass=$(this).find("#jsxc_password");var settings=jsxc.prepareLogin();return jsxc.triggeredFromBox=!0,jsxc.triggeredFromForm=!1,settings===!1?jsxc.gui.showAuthFail():jsxc.xmpp.login(),!1})},showFingerprints:function(bid){jsxc.gui.dialog.open(jsxc.gui.template.get("fingerprintsDialog",bid))},showVerification:function(bid){return $("#jsxc_dialog").length>0?void setTimeout(function(){jsxc.gui.showVerification(bid)},3e3):jsxc.storage.getUserItem("buddy",bid).msgstate!==OTR.CONST.MSGSTATE_ENCRYPTED?void jsxc.warn("Connection not encrypted"):(jsxc.gui.dialog.open(jsxc.gui.template.get("authenticationDialog",bid)),$("#jsxc_dialog > div:gt(0)").hide(),$("#jsxc_dialog select").change(function(){$("#jsxc_dialog > div:gt(0)").hide(),$("#jsxc_dialog > div:eq("+$(this).prop("selectedIndex")+")").slideDown({complete:function(){jsxc.gui.dialog.resize()}})}),$("#jsxc_dialog > div:eq(1) a.creation").click(function(){jsxc.master&&(jsxc.otr.objects[bid].trust=!0),jsxc.storage.updateUserItem("buddy",bid,"trust",!0),jsxc.gui.dialog.close(),jsxc.storage.updateUserItem("buddy",bid,"trust",!0),jsxc.gui.window.postMessage(bid,"sys",jsxc.l.conversation_is_now_verified),jsxc.gui.update(bid)}),$("#jsxc_dialog > div:eq(2) a.creation").click(function(){var div=$("#jsxc_dialog > div:eq(2)"),sec=div.find("#jsxc_secret2").val(),quest=div.find("#jsxc_quest").val();return""===sec||""===quest?void div.find('input[value=""]').addClass("jsxc_invalid").keyup(function(){$(this).val().match(/.*/)&&$(this).removeClass("jsxc_invalid")}):(jsxc.master?jsxc.otr.sendSmpReq(bid,sec,quest):jsxc.storage.setUserItem("smp_"+bid,{sec:sec,quest:quest}),jsxc.gui.dialog.close(),void jsxc.gui.window.postMessage(bid,"sys",jsxc.l.authentication_query_sent))}),void $("#jsxc_dialog > div:eq(3) .creation").click(function(){var div=$("#jsxc_dialog > div:eq(3)"),sec=div.find("#jsxc_secret").val();return""===sec?void div.find("#jsxc_secret").addClass("jsxc_invalid").keyup(function(){$(this).val().match(/.*/)&&$(this).removeClass("jsxc_invalid")}):(jsxc.master?jsxc.otr.sendSmpReq(bid,sec):jsxc.storage.setUserItem("smp_"+bid,{sec:sec,quest:null}),jsxc.gui.dialog.close(),void jsxc.gui.window.postMessage(bid,"sys",jsxc.l.authentication_query_sent))}))},showApproveDialog:function(from){jsxc.gui.dialog.open(jsxc.gui.template.get("approveDialog"),{noClose:!0}),$("#jsxc_dialog .jsxc_their_jid").text(Strophe.getBareJidFromJid(from)),$("#jsxc_dialog .jsxc_deny").click(function(ev){ev.stopPropagation(),jsxc.xmpp.resFriendReq(from,!1),jsxc.gui.dialog.close()}),$("#jsxc_dialog .jsxc_approve").click(function(ev){ev.stopPropagation();var data=jsxc.storage.getUserItem("buddy",jsxc.jidToBid(from));jsxc.xmpp.resFriendReq(from,!0),data&&"from"!==data.sub||$(document).one("close.dialog.jsxc",function(){jsxc.gui.showContactDialog(from)}),jsxc.gui.dialog.close()})},showContactDialog:function(username){jsxc.gui.dialog.open(jsxc.gui.template.get("contactDialog")),username&&$("#jsxc_username").val(username),$("#jsxc_dialog form").submit(function(){var username=$("#jsxc_username").val(),alias=$("#jsxc_alias").val();return username.match(/@(.*)$/)||(username+="@"+Strophe.getDomainFromJid(jsxc.storage.getItem("jid"))),username&&username.match(jsxc.CONST.REGEX.JID)?(jsxc.xmpp.addBuddy(username,alias),jsxc.gui.dialog.close(),!1):($("#jsxc_username").addClass("jsxc_invalid").keyup(function(){$(this).val().match(jsxc.CONST.REGEX.JID)&&$(this).removeClass("jsxc_invalid")}),!1)})},showRemoveDialog:function(bid){jsxc.gui.dialog.open(jsxc.gui.template.get("removeDialog",bid));var data=jsxc.storage.getUserItem("buddy",bid);$("#jsxc_dialog .creation").click(function(ev){ev.stopPropagation(),jsxc.master?jsxc.xmpp.removeBuddy(data.jid):jsxc.storage.setUserItem("deletebuddy",bid,{jid:data.jid}),jsxc.gui.dialog.close()})},showWaitAlert:function(msg){jsxc.gui.dialog.open(jsxc.gui.template.get("waitAlert",null,msg),{noClose:!0})},showAlert:function(msg){jsxc.gui.dialog.open(jsxc.gui.template.get("alert",null,msg))},showAuthFail:function(){jsxc.gui.dialog.open(jsxc.gui.template.get("authFailDialog")),jsxc.triggeredFromBox&&$("#jsxc_dialog .jsxc_cancel").hide(),$("#jsxc_dialog .creation").click(function(){jsxc.gui.dialog.close()}),$("#jsxc_dialog .jsxc_cancel").click(function(){jsxc.submitLoginForm()})},showConfirmDialog:function(msg,confirm,dismiss){jsxc.gui.dialog.open(jsxc.gui.template.get("confirmDialog",null,msg),{noClose:!0}),confirm&&$("#jsxc_dialog .creation").click(confirm),dismiss&&$("#jsxc_dialog .jsxc_cancel").click(dismiss)},showAboutDialog:function(){jsxc.gui.dialog.open(jsxc.gui.template.get("aboutDialog")),$("#jsxc_dialog .jsxc_debuglog").click(function(){jsxc.gui.showDebugLog()})},showDebugLog:function(){var userInfo="<h3>User information</h3>";if(navigator){var key;for(key in navigator)navigator.hasOwnProperty(key)&&"string"==typeof navigator[key]&&(userInfo+="<b>"+key+":</b> "+navigator[key]+"<br />")}window.screen&&(userInfo+="<b>Height:</b> "+window.screen.height+"<br />",userInfo+="<b>Width:</b> "+window.screen.width+"<br />"),userInfo+="<b>jsxc version:</b> "+jsxc.version+"<br />",jsxc.gui.dialog.open('<div class="jsxc_log">'+userInfo+"<h3>Log</h3><pre>"+jsxc.escapeHTML(jsxc.log)+"</pre></div>")},showVcard:function(jid){var bid=jsxc.jidToBid(jid);jsxc.gui.dialog.open(jsxc.gui.template.get("vCard",bid));var data=jsxc.storage.getUserItem("buddy",bid);if(data){var i,j,res,identities,cap,client,identity=null;for(i=0;i<data.res.length;i++){for(res=data.res[i],identities=[],cap=jsxc.xmpp.getCapabilitiesByJid(bid+"/"+res),null!==cap&&null!==cap.identities&&(identities=cap.identities),client="",j=0;j<identities.length;j++)identity=identities[j],"client"===identity.category&&(""!==client&&(client+=",\n"),client+=identity.name+" ("+identity.type+")");var status=jsxc.storage.getUserItem("res",bid)[res];$("#jsxc_dialog ul.jsxc_vCard").append('<li class="jsxc_sep"><strong>'+jsxc.translate("%%Resource%%")+":</strong> "+res+"</li>"),$("#jsxc_dialog ul.jsxc_vCard").append("<li><strong>"+jsxc.translate("%%Client%%")+":</strong> "+client+"</li>"),$("#jsxc_dialog ul.jsxc_vCard").append("<li>"+jsxc.translate("<strong>%%Status%%:</strong> %%"+jsxc.CONST.STATUS[status]+"%%")+"</li>")}}var printProp=function(el,depth){var content="";return el.each(function(){var item=$(this),children=$(this).children();content+="<li>";var prop=jsxc.translate("%%"+item[0].tagName+"%%");" "!==prop&&(content+="<strong>"+prop+":</strong> "),"PHOTO"===item[0].tagName||(children.length>0?(content+="<ul>",content+=printProp(children,depth+1),content+="</ul>"):""!==item.text()&&(content+=jsxc.escapeHTML(item.text()))),content+="</li>",0===depth&&$("#jsxc_dialog ul.jsxc_vCard").length>0&&($("#jsxc_dialog ul.jsxc_vCard li.jsxc_sep:first").length>0?$("#jsxc_dialog ul.jsxc_vCard li.jsxc_sep:first").before(content):$("#jsxc_dialog ul.jsxc_vCard").append(content),content="")}),depth>0?content:void 0},failedToLoad=function(){if(0!==$("#jsxc_dialog ul.jsxc_vCard").length){$("#jsxc_dialog p").remove();var content="<p>";content+=jsxc.translate("%%Sorry, your buddy doesn't provide any information.%%"),content+="</p>",$("#jsxc_dialog").append(content)}};jsxc.xmpp.loadVcard(bid,function(stanza){if(0!==$("#jsxc_dialog ul.jsxc_vCard").length){$("#jsxc_dialog p").remove();var photo=$(stanza).find("vCard > PHOTO");if(photo.length>0){var img=photo.find("BINVAL").text(),type=photo.find("TYPE").text(),src="data:"+type+";base64,"+img;$("#jsxc_dialog h3").before('<img class="jsxc_vCard" src="'+src+'" alt="avatar" />')}return 0===$(stanza).find("vCard").length||1===$(stanza).find("vcard > *").length&&1===photo.length?void failedToLoad():void printProp($(stanza).find("vcard > *"),0)}},failedToLoad)},showSettings:function(){jsxc.gui.dialog.open(jsxc.gui.template.get("settings")),("false"===jsxc.options.get("xmpp").overwrite||jsxc.options.get("xmpp").overwrite===!1)&&$(".jsxc_fieldsetXmpp").hide(),$("#jsxc_dialog form").each(function(){var self=$(this);self.find('input[type!="submit"]').each(function(){var id=this.id.split("-"),prop=id[0],key=id[1],type=this.type,data=jsxc.options.get(prop);data&&"undefined"!=typeof data[key]&&("checkbox"===type?"false"!==data[key]&&data[key]!==!1&&(this.checked="checked"):$(this).val(data[key]))})}),$("#jsxc_dialog form").submit(function(){var self=$(this),data={};self.find('input[type!="submit"]').each(function(){var val,id=this.id.split("-"),prop=id[0],key=id[1],type=this.type;val="checkbox"===type?this.checked:$(this).val(),data[prop]||(data[prop]={}),data[prop][key]=val}),$.each(data,function(key,val){jsxc.options.set(key,val)});var err=jsxc.options.saveSettinsPermanent.call(this,data);return setTimeout(function(){self.find('input[type="submit"]').effect("highlight",{color:err?"green":"red"},4e3)},200),!1})},showRequestNotification:function(){jsxc.gui.showConfirmDialog(jsxc.translate("%%Should we notify you_%%"),function(){jsxc.gui.dialog.open(jsxc.gui.template.get("pleaseAccept"),{noClose:!0}),jsxc.notification.requestPermission()},function(){$(document).trigger("notificationfailure.jsxc")})},showUnknownSender:function(bid){jsxc.gui.showConfirmDialog(jsxc.translate("%%You_received_a_message_from_an_unknown_sender%% ("+bid+"). %%Do_you_want_to_display_them%%"),function(){jsxc.gui.dialog.close(),jsxc.storage.saveBuddy(bid,{jid:bid,name:bid,status:0,sub:"none",res:[]}),jsxc.gui.window.open(bid)},function(){jsxc.storage.removeUserItem("chat",bid)})},changePresence:function(pres,external){external!==!0&&jsxc.storage.setUserItem("presence",pres),jsxc.master&&jsxc.xmpp.sendPres(),$("#jsxc_presence > span").text($("#jsxc_presence > ul .jsxc_"+pres).text()),jsxc.gui.updatePresence("own",pres)},updatePresence:function(bid,pres){"own"===bid&&("dnd"===pres?($("#jsxc_menu .jsxc_muteNotification").addClass("jsxc_disabled"),jsxc.notification.muteSound(!0)):($("#jsxc_menu .jsxc_muteNotification").removeClass("jsxc_disabled"),jsxc.options.get("muteNotification")||jsxc.notification.unmuteSound(!0))),$('.jsxc_presence[data-bid="'+bid+'"]').removeClass("jsxc_"+jsxc.CONST.STATUS.join(" jsxc_")).addClass("jsxc_"+pres)},unreadMsg:function(bid){var win=jsxc.gui.window.get(bid);jsxc.gui.roster.getItem(bid).add(win).addClass("jsxc_unreadMsg"),jsxc.storage.updateUserItem("window",bid,"unread",!0)},readMsg:function(bid){var win=jsxc.gui.window.get(bid);win.hasClass("jsxc_unreadMsg")&&(jsxc.gui.roster.getItem(bid).add(win).removeClass("jsxc_unreadMsg"),jsxc.storage.updateUserItem("window",bid,"unread",!1))},detectUriScheme:function(container){container=$(container?container:"body"),container.find("a[href^='xmpp:']").each(function(){var action,element=$(this),href=element.attr("href").replace(/^xmpp:/,""),jid=href.split("?")[0],params={};if(href.indexOf("?")<0)action="message";else{var pairs=href.substring(href.indexOf("?")+1).split(";");action=pairs[0];var i,key,value;for(i=1;i<pairs.length;i++)key=pairs[i].split("=")[0],value=pairs[i].indexOf("=")>0?pairs[i].substring(pairs[i].indexOf("=")+1):null,params[decodeURIComponent(key)]=decodeURIComponent(value)}"function"==typeof jsxc.gui.queryActions[action]&&(element.addClass("jsxc_uriScheme jsxc_uriScheme_"+action),element.off("click").click(function(ev){return ev.stopPropagation(),jsxc.gui.queryActions[action].call(jsxc,jid,params),!1}))})},detectEmail:function(container){container=$(container?container:"body"),container.find('a[href^="mailto:"]').each(function(){var spot=$("<span>X</span>").addClass("jsxc_spot"),href=$(this).attr("href").replace(/^ *mailto:/,"").trim();if(""!==href&&href!==Strophe.getBareJidFromJid(jsxc.storage.getItem("jid"))){var bid=jsxc.jidToBid(href),self=$(this),s=self.prev();s.hasClass("jsxc_spot")||(s=spot.clone().attr("data-bid",bid),self.before(s)),s.off("click"),jsxc.storage.getUserItem("buddy",bid)?(jsxc.gui.update(bid),s.click(function(){return jsxc.gui.window.open(bid),!1})):s.click(function(){return jsxc.gui.showContactDialog(href),!1})}})}},jsxc.gui.roster={init:function(){$(jsxc.options.rosterAppend+":first").append($(jsxc.gui.template.get("roster"))),jsxc.options.get("hideOffline")&&($("#jsxc_menu .jsxc_hideOffline").text(jsxc.translate("%%Show offline%%")),$("#jsxc_buddylist").addClass("jsxc_hideOffline")),$("#jsxc_menu .jsxc_settings").click(function(){jsxc.gui.showSettings()}),$("#jsxc_menu .jsxc_hideOffline").click(function(){var hideOffline=!jsxc.options.get("hideOffline");hideOffline?$("#jsxc_buddylist").addClass("jsxc_hideOffline"):$("#jsxc_buddylist").removeClass("jsxc_hideOffline"),$(this).text(jsxc.translate(hideOffline?"%%Show offline%%":"%%Hide offline%%")),jsxc.options.set("hideOffline",hideOffline)}),jsxc.options.get("muteNotification")&&jsxc.notification.muteSound(),$("#jsxc_menu .jsxc_muteNotification").click(function(){if("dnd"!==jsxc.storage.getUserItem("presence")){var mute=!jsxc.options.get("muteNotification");mute?jsxc.notification.muteSound():jsxc.notification.unmuteSound()}}),$("#jsxc_roster .jsxc_addBuddy").click(function(){jsxc.gui.showContactDialog()}),$("#jsxc_roster .jsxc_onlineHelp").click(function(){window.open("http://www.jsxc.org/manual.html","onlineHelp")}),$("#jsxc_roster .jsxc_about").click(function(){jsxc.gui.showAboutDialog()}),$("#jsxc_toggleRoster").click(function(){jsxc.gui.roster.toggle()}),$("#jsxc_presence > ul > li").click(function(){var self=$(this);jsxc.gui.changePresence(self.data("pres"))}),$("#jsxc_buddylist").slimScroll({distance:"3px",height:$("#jsxc_roster").height()-31+"px",width:$("#jsxc_buddylist").width()+"px",color:"#fff",opacity:"0.5"}),$("#jsxc_roster > .jsxc_bottom > div").each(function(){jsxc.gui.toggleList.call($(this))}),"hidden"===jsxc.storage.getUserItem("roster")&&($("#jsxc_roster").css("right","-200px"),$("#jsxc_windowList > ul").css("paddingRight","10px"));var pres=jsxc.storage.getUserItem("presence")||"online";$("#jsxc_presence > span").text($("#jsxc_presence > ul .jsxc_"+pres).text()),jsxc.gui.updatePresence("own",pres),$(document).on("cloaded.roster.jsxc",function(){jsxc.gui.updateAvatar($("#jsxc_avatar"),jsxc.storage.getItem("jid"),"own")}),jsxc.gui.tooltip("#jsxc_roster"),jsxc.notice.load(),$(document).trigger("ready.roster.jsxc")},add:function(bid){var data=jsxc.storage.getUserItem("buddy",bid),bud=jsxc.gui.buddyTemplate.clone().attr("data-bid",bid).attr("data-type",data.type||"chat");jsxc.gui.roster.insert(bid,bud),bud.click(function(){jsxc.gui.window.open(bid)}),bud.find(".jsxc_chaticon").click(function(){jsxc.gui.window.open(bid)}),bud.find(".jsxc_rename").click(function(){return jsxc.gui.roster.rename(bid),!1}),bud.find(".jsxc_delete").click(function(){return jsxc.gui.showRemoveDialog(bid),!1});var expandClick=function(){return bud.trigger("extra.jsxc"),bud.toggleClass("jsxc_expand"),jsxc.gui.updateAvatar(bud,data.jid,data.avatar),!1};bud.find(".jsxc_control").click(expandClick),bud.dblclick(expandClick),bud.find(".jsxc_vcardicon").click(function(){return jsxc.gui.showVcard(data.jid),!1}),jsxc.gui.update(bid),$("#jsxc_buddylist").slimScroll({scrollTo:"0px"}),$(document).trigger("add.roster.jsxc",[bid,data,bud])},getItem:function(bid){return $("#jsxc_buddylist > li[data-bid='"+bid+"']")},insert:function(bid,li){var data=jsxc.storage.getUserItem("buddy",bid),listElements=$("#jsxc_buddylist > li"),insert=!1,status="both"===data.sub?data.status:-1;listElements.each(function(){var thisStatus="both"===$(this).data("sub")?$(this).data("status"):-1;return $(this).data("name").toLowerCase()>data.name.toLowerCase()&&thisStatus===status||status>thisStatus?($(this).before(li),insert=!0,!1):void 0}),insert||li.appendTo("#jsxc_buddylist")},reorder:function(bid){jsxc.gui.roster.insert(bid,jsxc.gui.roster.remove(bid))},remove:function(bid){return jsxc.gui.roster.getItem(bid).detach()},purge:function(bid){jsxc.master&&(jsxc.storage.removeUserItem("buddy",bid),jsxc.storage.removeUserItem("otr",bid),jsxc.storage.removeUserItem("otr_version_"+bid),jsxc.storage.removeUserItem("chat",bid),jsxc.storage.removeUserItem("window",bid),jsxc.storage.removeUserElement("buddylist",bid),jsxc.storage.removeUserElement("windowlist",bid)),jsxc.gui.window._close(bid),jsxc.gui.roster.remove(bid)},rename:function(bid){var name=jsxc.gui.roster.getItem(bid).find(".jsxc_name"),options=jsxc.gui.roster.getItem(bid).find(".jsxc_options, .jsxc_control"),input=$('<input type="text" name="name"/>');
-options.hide(),name=name.replaceWith(input),input.val(name.text()),input.keypress(function(ev){13===ev.which&&(options.show(),input.replaceWith(name),jsxc.gui.roster._rename(bid,$(this).val()),$("html").off("click"))}),input.click(function(){return!1}),$("html").one("click",function(){options.show(),input.replaceWith(name),jsxc.gui.roster._rename(bid,input.val())})},_rename:function(bid,newname){if(jsxc.master){var d=jsxc.storage.getUserItem("buddy",bid),iq=$iq({type:"set"}).c("query",{xmlns:"jabber:iq:roster"}).c("item",{jid:Strophe.getBareJidFromJid(d.jid),name:newname});jsxc.xmpp.conn.sendIQ(iq)}jsxc.storage.updateUserItem("buddy",bid,"name",newname),jsxc.gui.update(bid)},toggle:function(d){var duration=d||500,roster=$("#jsxc_roster"),wl=$("#jsxc_windowList"),roster_width=roster.innerWidth(),roster_right=parseFloat($("#jsxc_roster").css("right")),state=0>roster_right?"shown":"hidden";jsxc.storage.setUserItem("roster",state),roster.animate({right:-1*(roster_width+roster_right)+"px"},duration),wl.animate({right:10-roster_right+"px"},duration),$(document).trigger("toggle.roster.jsxc",[state,duration])},noConnection:function(){$("#jsxc_roster .slimScrollDiv").remove(),$("#jsxc_roster > .jsxc_bottom").remove(),$("#jsxc_roster").append($("<p>"+jsxc.l.no_connection+"</p>").append(" <a>"+jsxc.l.relogin+"</a>").click(function(){jsxc.gui.showLoginBox()}))},empty:function(){var text=$("<p>"+jsxc.l.Your_roster_is_empty_add_a+"</p>"),link=$("<a>"+jsxc.l.new_buddy+"</a>");link.click(function(){jsxc.gui.showContactDialog()}),text.append(link),text.append("."),$("#jsxc_roster").prepend(text)}},jsxc.gui.dialog={open:function(data,o){var opt=o||{},options={};return options={onComplete:function(){$("#jsxc_dialog .jsxc_close").click(function(ev){ev.preventDefault(),jsxc.gui.dialog.close()}),options.closeButton===!1&&$("#cboxClose").hide(),$.colorbox.resize(),$(document).trigger("complete.dialog.jsxc")},onClosed:function(){$(document).trigger("close.dialog.jsxc")},onCleanup:function(){$(document).trigger("cleanup.dialog.jsxc")},opacity:.5},opt.noClose&&(options.overlayClose=!1,options.escKey=!1,options.closeButton=!1,delete opt.noClose),$.extend(options,opt),options.html='<div id="jsxc_dialog">'+data+"</div>",$.colorbox(options),$("#jsxc_dialog")},close:function(){jsxc.debug("close dialog"),$.colorbox.close()},resize:function(options){$.colorbox.resize(options)}},jsxc.gui.window={init:function(bid){if(jsxc.gui.window.get(bid).length>0)return jsxc.gui.window.get(bid);var win=jsxc.gui.windowTemplate.clone().attr("data-bid",bid).hide().appendTo("#jsxc_windowList > ul").show("slow"),data=jsxc.storage.getUserItem("buddy",bid);if(win.data("jid",data.jid),jsxc.gui.toggleList.call(win.find(".jsxc_settings")),win.find(".jsxc_verification").click(function(){jsxc.gui.showVerification(bid)}),win.find(".jsxc_fingerprints").click(function(){jsxc.gui.showFingerprints(bid)}),win.find(".jsxc_transfer").click(function(){jsxc.otr.toggleTransfer(bid)}),win.find(".jsxc_bar").click(function(){jsxc.gui.window.toggle(bid)}),win.find(".jsxc_close").click(function(){jsxc.gui.window.close(bid)}),win.find(".jsxc_clear").click(function(){jsxc.gui.window.clear(bid)}),win.find(".jsxc_tools").click(function(){return!1}),win.find(".jsxc_textinput").keyup(function(ev){var body=$(this).val();13===ev.which&&(body=""),jsxc.storage.updateUserItem("window",bid,"text",body),27===ev.which&&jsxc.gui.window.close(bid)}).keypress(function(ev){13===ev.which&&$(this).val()&&(jsxc.gui.window.postMessage(bid,"out",$(this).val()),$(this).val(""))}).focus(function(){jsxc.gui.readMsg(bid)}).mouseenter(function(){$("#jsxc_windowList").data("isOver",!0)}).mouseleave(function(){$("#jsxc_windowList").data("isOver",!1)}),win.find(".jsxc_textarea").click(function(){win.find(".jsxc_textinput").focus()}),win.find(".jsxc_textarea").slimScroll({height:"234px",distance:"3px"}),win.find(".jsxc_fade").hide(),win.find(".jsxc_name").disableSelection(),win.find(".slimScrollDiv").resizable({handles:"w, nw, n",minHeight:234,minWidth:250,resize:function(event,ui){win.width(ui.size.width),win.find(".jsxc_textarea").slimScroll({height:ui.size.height}),win.find(".jsxc_emoticons").css("top",ui.size.height+6+"px")}}),$.inArray(bid,jsxc.storage.getUserItem("windowlist"))<0){var wl=jsxc.storage.getUserItem("windowlist");wl.push(bid),jsxc.storage.setUserItem("windowlist",wl),jsxc.storage.setUserItem("window",bid,{minimize:!0,text:"",unread:!1})}else jsxc.storage.getUserItem("window",bid).unread&&jsxc.gui.unreadMsg(bid);return $.each(jsxc.gui.emotions,function(i,val){var ins=val[0].split(" ")[0],li=$('<li><div title="'+ins+'" class="jsxc_'+val[1]+'"/></li>');li.click(function(){win.find("input").val(win.find("input").val()+ins),win.find("input").focus()}),win.find(".jsxc_emoticons ul").append(li)}),jsxc.gui.toggleList.call(win.find(".jsxc_emoticons")),jsxc.gui.window.restoreChat(bid),jsxc.gui.update(bid),jsxc.gui.updateWindowListSB(),jsxc.master&&!jsxc.otr.objects[bid]?jsxc.otr.create(bid):jsxc.otr.enable(bid),$(document).trigger("init.window.jsxc",[win]),win},get:function(id){return $("li.jsxc_windowItem[data-bid='"+jsxc.jidToBid(id)+"']")},open:function(bid){var win=jsxc.gui.window.init(bid);jsxc.gui.window.show(bid),jsxc.gui.window.highlight(bid);var padding=$("#jsxc_windowListSB").width(),innerWidth=$("#jsxc_windowList>ul").width(),outerWidth=$("#jsxc_windowList").width()-padding;if(innerWidth>outerWidth){var offset=parseInt($("#jsxc_windowList>ul").css("right")),width=win.outerWidth(!0),right=innerWidth-win.position().left-width+offset,left=outerWidth-(innerWidth-win.position().left)-offset;0>left&&jsxc.gui.scrollWindowListBy(-1*left),0>right&&jsxc.gui.scrollWindowListBy(right)}return win},close:function(bid){return 0===jsxc.gui.window.get(bid).length?void jsxc.warn("Want to close a window, that is not open."):(jsxc.storage.removeUserElement("windowlist",bid),jsxc.storage.removeUserItem("window",bid),jsxc.storage.getUserItem("buddylist").indexOf(bid)<0&&(jsxc.storage.removeUserItem("buddy",bid),jsxc.storage.removeUserItem("chat",bid)),void jsxc.gui.window._close(bid))},_close:function(bid){jsxc.gui.window.get(bid).hide("slow",function(){$(this).remove(),jsxc.gui.updateWindowListSB()})},toggle:function(bid){var win=jsxc.gui.window.get(bid);0!==win.parents("#jsxc_windowList").length&&(win.find(".jsxc_fade").is(":hidden")?jsxc.gui.window.show(bid):jsxc.gui.window.hide(bid),jsxc.gui.updateWindowListSB())},show:function(bid){jsxc.storage.updateUserItem("window",bid,"minimize",!1),jsxc.gui.window._show(bid)},_show:function(bid){var win=jsxc.gui.window.get(bid);jsxc.gui.window.get(bid).find(".jsxc_fade").slideDown(),win.removeClass("jsxc_min"),jsxc.gui.window.scrollDown(bid),jsxc.restoreCompleted&&win.find(".jsxc_textinput").focus(),win.trigger("show.window.jsxc")},hide:function(bid){jsxc.storage.updateUserItem("window",bid,"minimize",!0),jsxc.gui.window._hide(bid)},_hide:function(bid){jsxc.gui.window.get(bid).addClass("jsxc_min").find(" .jsxc_fade").slideUp(),jsxc.gui.window.get(bid).trigger("hidden.window.jsxc")},highlight:function(bid){var el=jsxc.gui.window.get(bid).find(" .jsxc_bar");el.is(":animated")||el.effect("highlight",{color:"orange"},2e3)},scrollDown:function(bid){var chat=jsxc.gui.window.get(bid).find(".jsxc_textarea");0!==chat.length&&chat.slimScroll({scrollTo:chat.get(0).scrollHeight+"px"})},postMessage:function(bid,direction,msg){var data=jsxc.storage.getUserItem("buddy",bid),html_msg=msg;msg=jsxc.removeHTML(msg),msg=jsxc.escapeHTML(msg),"out"===direction&&2===data.msgstate&&(direction="sys",msg=jsxc.l.your_message_wasnt_send_please_end_your_private_conversation),"in"===direction&&2===data.msgstate&&(direction="sys",msg=jsxc.l.unencrypted_message_received+" "+msg),"out"===direction&&"from"===data.sub&&(direction="sys",msg=jsxc.l.your_message_wasnt_send_because_you_have_no_valid_subscription);var post=jsxc.storage.saveMessage(bid,direction,msg);"in"===direction&&$(document).trigger("postmessagein.jsxc",[bid,html_msg]),"out"===direction&&jsxc.master&&jsxc.xmpp.sendMessage(bid,html_msg,post.uid),jsxc.gui.window._postMessage(bid,post),"out"===direction&&"?"===msg&&jsxc.gui.window.postMessage(bid,"sys","42")},_postMessage:function(bid,post,restore){var win=jsxc.gui.window.get(bid),msg=post.msg,direction=post.direction,uid=post.uid,received=post.received||!1;win.find(".jsxc_textinput").is(":not(:focus)")&&jsxc.restoreCompleted&&"in"===direction&&!restore&&jsxc.gui.window.highlight(bid),msg=msg.replace(jsxc.CONST.REGEX.URL,function(url){var href=url.match(/^https?:\/\//i)?url:"http://"+url;return'<a href="'+href+'" target="_blank">'+url+"</a>"}),msg=msg.replace(new RegExp("(xmpp:)?("+jsxc.CONST.REGEX.JID.source+")(\\?[^\\s]+\\b)?","i"),function(match,protocol,jid,action){return"xmpp:"===protocol?("string"==typeof action&&(jid+=action),'<a href="xmpp:'+jid+'">'+jid+"</a>"):'<a href="mailto:'+jid+'" target="_blank">'+jid+"</a>"}),$.each(jsxc.gui.emotions,function(i,val){msg=msg.replace(val[2],function(match,p1){var i,esc="";for(i=0;i<p1.length;i++)esc+="&#"+p1.charCodeAt(i)+";";return'<div title="'+esc+'" class="jsxc_emoticon jsxc_'+val[1]+'"/>'})});var msgDiv=$("<div>");msgDiv.addClass("jsxc_chatmessage jsxc_"+direction),msgDiv.attr("id",uid),msgDiv.html(msg),received&&msgDiv.addClass("jsxc_received"),"sys"===direction&&jsxc.gui.window.get(bid).find(".jsxc_textarea").append('<div style="clear:both"/>'),win.find(".jsxc_textarea").append(msgDiv),jsxc.gui.detectUriScheme(win),jsxc.gui.detectEmail(win),jsxc.gui.window.scrollDown(bid),win.find(".jsxc_textinput").is(":focus")||!jsxc.restoreCompleted||restore||jsxc.gui.unreadMsg(bid)},setText:function(bid,text){jsxc.gui.window.get(bid).find(".jsxc_textinput").val(text)},restoreChat:function(bid){for(var chat=jsxc.storage.getUserItem("chat",bid);null!==chat&&chat.length>0;){var c=chat.pop();jsxc.gui.window._postMessage(bid,c,!0)}},clear:function(bid){jsxc.storage.setUserItem("chat",bid,[]),jsxc.gui.window.get(bid).find(".jsxc_textarea").empty()}},jsxc.gui.template={get:function(name,bid,msg){var ph={my_priv_fingerprint:jsxc.storage.getUserItem("priv_fingerprint")?jsxc.storage.getUserItem("priv_fingerprint").replace(/(.{8})/g,"$1 "):jsxc.l.not_available,my_jid:jsxc.storage.getItem("jid")||"",my_node:Strophe.getNodeFromJid(jsxc.storage.getItem("jid")||"")||"",root:jsxc.options.root,app_name:jsxc.options.app_name};if(bid){var data=jsxc.storage.getUserItem("buddy",bid);$.extend(ph,{bid_priv_fingerprint:data&&data.fingerprint?data.fingerprint.replace(/(.{8})/g,"$1 "):jsxc.l.not_available,bid_jid:bid,bid_name:data&&data.name?data.name:bid})}msg&&$.extend(ph,{msg:msg});var ret=jsxc.gui.template[name];return"string"==typeof ret?(ret=jsxc.translate(ret),ret=ret.replace(/\{\{([a-zA-Z0-9_\-]+)\}\}/g,function(s,key){return"string"==typeof ph[key]?ph[key]:s})):(jsxc.debug("Template not available: "+name),name)},authenticationDialog:'<h3>Verification</h3> <p>%%Authenticating_a_buddy_helps_%%</p> <div> <p style="margin:0px;">%%How_do_you_want_to_authenticate_your_buddy%%</p> <select size="1"> <option>%%Select_method%%</option> <option>%%Manual%%</option> <option>%%Question%%</option> <option>%%Secret%%</option> </select> </div> <div style="display:none"> <p class=".jsxc_explanation">%%To_verify_the_fingerprint_%%</p> <p><strong>%%Your_fingerprint%%</strong><br /> <span style="text-transform:uppercase">{{my_priv_fingerprint}}</span></p> <p><strong>%%Buddy_fingerprint%%</strong><br /> <span style="text-transform:uppercase">{{bid_priv_fingerprint}}</span></p><br /> <p class="jsxc_right"><a href="#" class="jsxc_close button">%%Close%%</a> <a href="#" class="button creation">%%Compared%%</a></p> </div> <div style="display:none"> <p class=".jsxc_explanation">%%To_authenticate_using_a_question_%%</p> <p><label for="jsxc_quest">%%Question%%:</label><input type="text" name="quest" id="jsxc_quest" /></p> <p><label for="jsxc_secret2">%%Secret%%:</label><input type="text" name="secret2" id="jsxc_secret2" /></p> <p class="jsxc_right"><a href="#" class="button jsxc_close">%%Close%%</a> <a href="#" class="button creation">%%Ask%%</a></p> </div> <div style="display:none"> <p class=".jsxc_explanation">%%To_authenticate_pick_a_secret_%%</p> <p><label for="jsxc_secret">%%Secret%%:</label><input type="text" name="secret" id="jsxc_secret" /></p> <p class="jsxc_right"><a href="#" class="button jsxc_close">%%Close%%</a> <a href="#" class="button creation">%%Compare%%</a></p> </div>',fingerprintsDialog:'<div> <p class="jsxc_maxWidth">%%A_fingerprint_%%</p> <p><strong>%%Your_fingerprint%%</strong><br /> <span style="text-transform:uppercase">{{my_priv_fingerprint}}</span></p> <p><strong>%%Buddy_fingerprint%%</strong><br /> <span style="text-transform:uppercase">{{bid_priv_fingerprint}}</span></p><br /> <p class="jsxc_right"><a href="#" class="button jsxc_close">%%Close%%</a></p> </div>',chatWindow:'<li class="jsxc_min jsxc_windowItem"> <div class="jsxc_window"> <div class="jsxc_bar"> <div class="jsxc_avatar">☺</div> <div class="jsxc_tools"> <div class="jsxc_settings"> <ul> <li class="jsxc_fingerprints jsxc_otr jsxc_disabled">%%Fingerprints%%</li> <li class="jsxc_verification">%%Authentication%%</li> <li class="jsxc_transfer jsxc_otr jsxc_disabled">%%start_private%%</li> <li class="jsxc_clear">%%clear_history%%</li> </ul> </div> <div class="jsxc_transfer jsxc_otr jsxc_disabled"/> <div class="jsxc_close">×</div> </div> <div class="jsxc_name"/> <div class="jsxc_cycle"/> </div> <div class="jsxc_fade"> <div class="jsxc_gradient"/> <div class="jsxc_textarea"/> <div class="jsxc_emoticons"><ul/></div> <input type="text" class="jsxc_textinput" placeholder="...%%Message%%" /> </div> </div> </li>',roster:'<div id="jsxc_roster"> <ul id="jsxc_buddylist"></ul> <div class="jsxc_bottom jsxc_presence" data-bid="own"> <div id="jsxc_avatar"> <div class="jsxc_avatar">☺</div> </div> <div id="jsxc_menu"> <span></span> <ul> <li class="jsxc_settings">%%Settings%%</li> <li class="jsxc_muteNotification">%%Mute%%</li> <li class="jsxc_addBuddy">%%Add_buddy%%</li> <li class="jsxc_hideOffline">%%Hide offline%%</li> <li class="jsxc_onlineHelp">%%Online help%%</li> <li class="jsxc_about">%%About%%</li> </ul> </div> <div id="jsxc_notice"> <span></span> <ul></ul> </div> <div id="jsxc_presence"> <span>%%Online%%</span> <ul> <li data-pres="online" class="jsxc_online">%%Online%%</li> <li data-pres="chat" class="jsxc_chat">%%Chatty%%</li> <li data-pres="away" class="jsxc_away">%%Away%%</li> <li data-pres="xa" class="jsxc_xa">%%Extended away%%</li> <li data-pres="dnd" class="jsxc_dnd">%%dnd%%</li> <!-- <li data-pres="offline" class="jsxc_offline">%%Offline%%</li> --> </ul> </div> </div> <div id="jsxc_toggleRoster"></div> </div>',windowList:'<div id="jsxc_windowList"> <ul></ul> </div> <div id="jsxc_windowListSB"> <div class="jsxc_scrollLeft jsxc_disabled">&lt;</div> <div class="jsxc_scrollRight jsxc_disabled">&gt;</div> </div>',rosterBuddy:'<li> <div class="jsxc_avatar">☺</div> <div class="jsxc_control"></div> <div class="jsxc_name"/> <div class="jsxc_options jsxc_right"> <div class="jsxc_rename" title="%%rename_buddy%%">✎</div> <div class="jsxc_delete" title="%%delete_buddy%%">✘</div> </div> <div class="jsxc_options jsxc_left"> <div class="jsxc_chaticon" title="%%send_message%%"/> <div class="jsxc_vcardicon" title="%%get_info%%">i</div> </div> </li>',loginBox:'<h3>%%Login%%</h3> <form> <p><label for="jsxc_username">%%Username%%:</label> <input type="text" name="username" id="jsxc_username" required="required" value="{{my_node}}"/></p> <p><label for="jsxc_password">%%Password%%:</label> <input type="password" name="password" required="required" id="jsxc_password" /></p> <div class="bottom_submit_section"> <input type="reset" class="button jsxc_close" name="clear" value="%%Cancel%%"/> <input type="submit" class="button creation" name="commit" value="%%Connect%%"/> </div> </form>',contactDialog:'<h3>%%Add_buddy%%</h3> <p class=".jsxc_explanation">%%Type_in_the_full_username_%%</p> <form> <p><label for="jsxc_username">* %%Username%%:</label> <input type="text" name="username" id="jsxc_username" pattern="^[^\\x22&\'\\/:<>@\\s]+(@[.\\-_\\w]+)?" required="required" /></p> <p><label for="jsxc_alias">%%Alias%%:</label> <input type="text" name="alias" id="jsxc_alias" /></p> <p class="jsxc_right"> <input class="button" type="submit" value="%%Add%%" /> </p> <form>',approveDialog:'<h3>%%Subscription_request%%</h3> <p>%%You_have_a_request_from%% <b class="jsxc_their_jid"></b>.</p> <p class="jsxc_right"><a href="#" class="button jsxc_deny">%%Deny%%</a> <a href="#" class="button creation jsxc_approve">%%Approve%%</a></p>',removeDialog:'<h3>%%Remove buddy%%</h3> <p class="jsxc_maxWidth">%%You_are_about_to_remove_%%</p> <p class="jsxc_right"><a href="#" class="button jsxc_cancel jsxc_close">%%Cancel%%</a> <a href="#" class="button creation">%%Remove%%</a></p>',waitAlert:'<h3>{{msg}}</h3> <p>%%Please_wait%%</p> <p class="jsxc_center"><img src="{{root}}/img/loading.gif" alt="wait" width="32px" height="32px" /></p>',alert:'<h3>%%Alert%%</h3> <p>{{msg}}</p> <p class="jsxc_right"><a href="#" class="button jsxc_close jsxc_cancel">%%Ok%%</a></p>',authFailDialog:'<h3>%%Login_failed%%</h3> <p>%%Sorry_we_cant_authentikate_%%</p> <p class="jsxc_right"> <a class="button jsxc_cancel">%%Continue_without_chat%%</a> <a class="button creation">%%Retry%%</a> </p>',confirmDialog:'<p>{{msg}}</p> <p class="jsxc_right"> <a class="button jsxc_cancel jsxc_close">%%Dismiss%%</a> <a class="button creation">%%Confirm%%</a> </p>',pleaseAccept:"<p>%%Please_accept_%%</p>",aboutDialog:"<h3>JavaScript XMPP Chat</h3> <p><b>Version: </b>"+jsxc.version+'<br /> <a href="http://jsxc.org/" target="_blank">www.jsxc.org</a><br /> <br /> <i>Released under the MIT license</i><br /> <br /> Real-time chat app for {{app_name}} and more.<br /> Requires an external <a href="https://xmpp.org/xmpp-software/servers/" target="_blank">XMPP server</a>.<br /> <br /> <b>Credits: </b> <a href="http://www.beepzoid.com/old-phones/" target="_blank">David English (Ringtone)</a>, <a href="https://soundcloud.com/freefilmandgamemusic/ping-1?in=freefilmandgamemusic/sets/free-notification-sounds-and" target="_blank">CameronMusic (Ping)</a></p> <p class="jsxc_right"><a class="button jsxc_debuglog" href="#">Show debug log</a></p>',vCard:'<h3>%%Info_about%% {{bid_name}}</h3> <ul class="jsxc_vCard"></ul> <p><img src="{{root}}/img/loading.gif" alt="wait" width="32px" height="32px" /> %%Please_wait%%...</p>',settings:'<h3>%%User_settings%%</h3> <p></p> <form> <fieldset class="jsxc_fieldsetXmpp jsxc_fieldset"> <legend>%%Login options%%</legend> <label for="xmpp-url">%%BOSH url%%</label><input type="text" id="xmpp-url" readonly="readonly"/><br /> <label for="xmpp-username">%%Username%%</label><input type="text" id="xmpp-username"/><br /> <label for="xmpp-domain">%%Domain%%</label><input type="text" id="xmpp-domain"/><br /> <label for="xmpp-resource">%%Resource%%</label><input type="text" id="xmpp-resource"/><br /> <label for="xmpp-onlogin">%%On login%%</label><input type="checkbox" id="xmpp-onlogin" /><br /> <input type="submit" value="%%Save%%"/> </fieldset> </form> <p></p> <form> <fieldset class="jsxc_fieldsetPriority jsxc_fieldset"> <legend>%%Priority%%</legend> <label for="priority-online">%%Online%%</label><input type="number" value="0" id="priority-online" min="-128" max="127" step="1" required="required"/><br /> <label for="priority-chat">%%Chatty%%</label><input type="number" value="0" id="priority-chat" min="-128" max="127" step="1" required="required"/><br /> <label for="priority-away">%%Away%%</label><input type="number" value="0" id="priority-away" min="-128" max="127" step="1" required="required"/><br /> <label for="priority-xa">%%Extended_away%%</label><input type="number" value="0" id="priority-xa" min="-128" max="127" step="1" required="required"/><br /> <label for="priority-dnd">%%dnd%%</label><input type="number" value="0" id="priority-dnd" min="-128" max="127" step="1" required="required"/><br /> <input type="submit" value="%%Save%%"/> </fieldset> </form>'},jsxc.xmpp={conn:null,login:function(){var sid=jsxc.storage.getItem("sid"),rid=jsxc.storage.getItem("rid"),jid=jsxc.storage.getItem("jid"),url=jsxc.options.get("xmpp").url;$(document).on("connected.jsxc",jsxc.xmpp.connected),$(document).on("attached.jsxc",jsxc.xmpp.attached),$(document).on("disconnected.jsxc",jsxc.xmpp.disconnected),$(document).on("ridChange",jsxc.xmpp.onRidChange),Strophe.addNamespace("RECEIPTS","urn:xmpp:receipts"),jsxc.xmpp.conn=new Strophe.Connection(url);var stropheGetUniqueId=jsxc.xmpp.conn.getUniqueId;jsxc.xmpp.conn.getUniqueId=function(suffix){var uid=stropheGetUniqueId.call(jsxc.xmpp.conn,suffix);return jsxc.storage.setItem("_uniqueId",jsxc.xmpp.conn._uniqueId),uid},jsxc.storage.getItem("debug")===!0&&(jsxc.xmpp.conn.xmlInput=function(data){console.log("<",data)},jsxc.xmpp.conn.xmlOutput=function(data){console.log(">",data)});var callback=function(status,condition){switch(jsxc.debug(Object.getOwnPropertyNames(Strophe.Status)[status]+": "+condition),status){case Strophe.Status.CONNECTED:jsxc.bid=jsxc.jidToBid(jsxc.xmpp.conn.jid.toLowerCase()),$(document).trigger("connected.jsxc");break;case Strophe.Status.ATTACHED:$(document).trigger("attached.jsxc");break;case Strophe.Status.DISCONNECTED:$(document).trigger("disconnected.jsxc");break;case Strophe.Status.CONNFAIL:jsxc.xmpp.onConnfail(condition);break;case Strophe.Status.AUTHFAIL:jsxc.gui.showAuthFail()}};jsxc.xmpp.conn.caps&&(jsxc.xmpp.conn.caps.node="http://jsxc.org/"),jsxc.restore&&sid&&rid?(jsxc.debug("Try to attach"),jsxc.debug("SID: "+sid),jsxc.xmpp.conn.attach(jid,sid,rid,callback)):(jsxc.debug("New connection"),jsxc.xmpp.conn.connect(jsxc.options.xmpp.jid,jsxc.options.xmpp.password,callback))},logout:function(){if(jsxc.storage.removeItem("sid"),jsxc.storage.removeUserItem("buddylist"),jsxc.storage.removeUserItem("windowlist"),jsxc.storage.removeItem("_uniqueId"),!jsxc.master)return $("#jsxc_roster").remove(),$("#jsxc_windowlist").remove(),!0;if(null===jsxc.xmpp.conn)return!0;$("body").click(),jsxc.triggeredFromElement=!0,$.each(jsxc.storage.getUserItem("otrlist"),function(i,val){jsxc.otr.create(val)});var numOtr=Object.keys(jsxc.otr.objects).length+1,disReady=function(){--numOtr<=0&&(jsxc.xmpp.conn.flush(),setTimeout(function(){jsxc.xmpp.conn.disconnect()},600))};return $.each(jsxc.otr.objects,function(key,obj){obj.msgstate===OTR.CONST.MSGSTATE_ENCRYPTED?obj.endOtr.call(obj,function(){obj.init.call(obj),jsxc.otr.backup(key),disReady()}):disReady()}),disReady(),!1},connected:function(){jsxc.xmpp.conn.pause();var nomJid=Strophe.getBareJidFromJid(jsxc.xmpp.conn.jid).toLowerCase()+"/"+Strophe.getResourceFromJid(jsxc.xmpp.conn.jid);return jsxc.storage.setItem("sid",jsxc.xmpp.conn._proto.sid),jsxc.storage.setItem("jid",nomJid),jsxc.storage.setItem("lastActivity",(new Date).getTime()),jsxc.storage.removeUserItem("buddylist"),jsxc.storage.removeUserItem("windowlist"),jsxc.storage.removeUserItem("own"),jsxc.storage.removeUserItem("avatar","own"),jsxc.storage.removeUserItem("otrlist"),jsxc.triggeredFromForm?void jsxc.submitLoginForm():jsxc.triggeredFromBox?void window.location.reload():void jsxc.xmpp.connectionReady()},attached:function(){if(jsxc.xmpp.conn.addHandler(jsxc.xmpp.onRosterChanged,"jabber:iq:roster","iq","set"),jsxc.xmpp.conn.addHandler(jsxc.xmpp.onMessage,null,"message","chat"),jsxc.xmpp.conn.addHandler(jsxc.xmpp.onReceived,null,"message"),jsxc.xmpp.conn.addHandler(jsxc.xmpp.onPresence,null,"presence"),jsxc.restore&&jsxc.storage.getUserItem("buddylist"))jsxc.xmpp.sendPres();else{$(document).one("cloaded.roster.jsxc",jsxc.xmpp.sendPres),$("#jsxc_roster > p:first").remove();var iq=$iq({type:"get"}).c("query",{xmlns:"jabber:iq:roster"});jsxc.xmpp.conn.sendIQ(iq,jsxc.xmpp.onRoster)}jsxc.xmpp.connectionReady()},connectionReady:function(){jsxc.xmpp.conn._uniqueId=jsxc.storage.getItem("_uniqueId")||(new Date).getTime(),$(document).trigger("connectionReady.jsxc")},sendPres:function(){jsxc.xmpp.conn.disco&&(jsxc.xmpp.conn.disco.addIdentity("client","web","JSXC"),jsxc.xmpp.conn.disco.addFeature(Strophe.NS.DISCO_INFO),jsxc.xmpp.conn.disco.addFeature(Strophe.NS.RECEIPTS));var pres=$pres();jsxc.xmpp.conn.caps&&pres.c("c",jsxc.xmpp.conn.caps.generateCapsAttrs()).up();var presState=jsxc.storage.getUserItem("presence")||"online";"online"!==presState&&pres.c("show").t(presState).up();var priority=jsxc.options.get("priority");priority&&"undefined"!=typeof priority[presState]&&0!==parseInt(priority[presState])&&pres.c("priority").t(priority[presState]).up(),jsxc.debug("Send presence",pres.toString()),jsxc.xmpp.conn.send(pres)},disconnected:function(){jsxc.debug("disconnected"),jsxc.storage.removeItem("sid"),jsxc.storage.removeItem("rid"),jsxc.storage.removeItem("lastActivity"),jsxc.storage.removeItem("hidden"),jsxc.storage.removeUserItem("avatar","own"),jsxc.storage.removeUserItem("otrlist"),jsxc.xmpp.conn=null,$("#jsxc_windowList").remove(),jsxc.triggeredFromElement?($("#jsxc_roster").remove(),jsxc.triggeredFromLogout&&(window.location=jsxc.options.logoutElement.attr("href"))):jsxc.gui.roster.noConnection(),window.clearInterval(jsxc.keepalive)},onConnfail:function(condition){jsxc.debug("XMPP connection failed: "+condition),jsxc.triggeredFromForm&&jsxc.submitLoginForm()},onRoster:function(iq){jsxc.debug("Load roster",iq);var buddies=[];$(iq).find("item").each(function(){var jid=$(this).attr("jid"),name=$(this).attr("name")||jid,bid=jsxc.jidToBid(jid),sub=$(this).attr("subscription");buddies.push(bid),jsxc.storage.removeUserItem("res",bid),jsxc.storage.saveBuddy(bid,{jid:jid,name:name,status:0,sub:sub,res:[]}),jsxc.gui.roster.add(bid)}),0===buddies.length&&jsxc.gui.roster.empty(),jsxc.storage.setUserItem("buddylist",buddies),jsxc.debug("Roster loaded"),$(document).trigger("cloaded.roster.jsxc")},onRosterChanged:function(iq){return jsxc.debug("onRosterChanged",iq),$(iq).find("item").each(function(){var jid=$(this).attr("jid"),name=$(this).attr("name")||jid,bid=jsxc.jidToBid(jid),sub=$(this).attr("subscription");if("remove"===sub)jsxc.gui.roster.purge(bid);else{var bl=jsxc.storage.getUserItem("buddylist");bl.indexOf(bid)<0&&(bl.push(bid),jsxc.storage.setUserItem("buddylist",bl));var temp=jsxc.storage.saveBuddy(bid,{jid:jid,name:name,sub:sub});"updated"===temp?(jsxc.gui.update(bid),jsxc.gui.roster.reorder(bid)):jsxc.gui.roster.add(bid)}if("from"===sub||"both"===sub){var notice,notices=jsxc.storage.getUserItem("notices"),noticeKey=null;for(noticeKey in notices)notice=notices[noticeKey],"gui.showApproveDialog"===notice.fnName&&notice.fnParams[0]===jid&&(jsxc.debug("Remove notice with key "+noticeKey),jsxc.notice.remove(noticeKey))}}),jsxc.storage.getUserItem("buddylist")&&0!==jsxc.storage.getUserItem("buddylist").length?$("#jsxc_roster > p:first").remove():jsxc.gui.roster.empty(),!0},onPresence:function(presence){jsxc.debug("onPresence",presence);var ptype=$(presence).attr("type"),from=$(presence).attr("from"),jid=Strophe.getBareJidFromJid(from).toLowerCase(),to=$(presence).attr("to");to=to?Strophe.getBareJidFromJid(to).toLowerCase():jid;var r=Strophe.getResourceFromJid(from),bid=jsxc.jidToBid(jid),data=jsxc.storage.getUserItem("buddy",bid),res=jsxc.storage.getUserItem("res",bid)||{},status=null,xVCard=$(presence).find('x[xmlns="vcard-temp:x:update"]');if(jid===to)return!0;if("error"===ptype)return jsxc.error("[XMPP] "+$(presence).attr("code")),!0;if("subscribe"===ptype)return jsxc.storage.setUserItem("friendReq",{jid:jid,approve:-1}),jsxc.notice.add("%%Friendship request%%","%%from%% "+jid,"gui.showApproveDialog",[jid]),!0;if("unavailable"===ptype||"unsubscribed"===ptype)status=jsxc.CONST.STATUS.indexOf("offline");else{var show=$(presence).find("show").text();status=jsxc.CONST.STATUS.indexOf(""===show?"online":show)}0===status?delete res[r]:res[r]=status;var maxVal=[],max=0,prop=null;for(prop in res)res.hasOwnProperty(prop)&&max<=res[prop]&&(max!==res[prop]&&(maxVal=[],max=res[prop]),maxVal.push(prop));if(0===data.status&&max>0&&jsxc.notification.notify(data.name,jsxc.translate("%%has come online%%.")),data.status=max,data.res=maxVal,data.jid=jid,xVCard.length>0){var photo=xVCard.find("photo");photo.length>0&&photo.text()!==data.avatar&&(jsxc.storage.removeUserItem("avatar",data.avatar),data.avatar=photo.text())}return jsxc.gui.window.get(bid).length>0&&jsxc.gui.window.get(bid).data("jid",jid),jsxc.storage.setUserItem("buddy",bid,data),jsxc.storage.setUserItem("res",bid,res),jsxc.debug("Presence ("+from+"): "+status),jsxc.gui.update(bid),jsxc.gui.roster.reorder(bid),$(document).trigger("presence.jsxc",[from,status,presence]),!0},onMessage:function(message){jsxc.debug("Incoming message",message);var type=$(message).attr("type"),from=$(message).attr("from"),mid=$(message).attr("id"),jid=Strophe.getBareJidFromJid(from),bid=jsxc.jidToBid(jid),data=jsxc.storage.getUserItem("buddy",bid),body=$(message).find("body:first").text(),request=$(message).find("request[xmlns='urn:xmpp:receipts']");if(!body)return!0;if(null===data){var chat=jsxc.storage.getUserItem("chat",bid)||[];0===chat.length&&jsxc.notice.add("%%Unknown sender%%","%%You received a message from an unknown sender%% ("+bid+").","gui.showUnknownSender",[bid]);var msg=jsxc.removeHTML(body);return msg=jsxc.escapeHTML(msg),jsxc.storage.saveMessage(bid,"in",msg),!0}var win=jsxc.gui.window.init(bid);return"chat"===type&&(win.data("jid",from),jsxc.storage.updateUserItem("buddy",bid,{jid:from})),$(document).trigger("message.jsxc",[from,body]),jsxc.master&&!jsxc.otr.objects[bid]&&jsxc.otr.create(bid),null===mid||!request.length||null===data||"both"!==data.sub&&"from"!==data.sub||"chat"!==type||jsxc.xmpp.conn.send($msg({to:from}).c("received",{xmlns:"urn:xmpp:receipts",id:mid})),jsxc.otr.objects.hasOwnProperty(bid)?jsxc.otr.objects[bid].receiveMsg(body):jsxc.gui.window.postMessage(bid,"in",body),!0
-},onRidChange:function(ev,data){jsxc.storage.setItem("rid",data.rid)},resFriendReq:function(from,approve){jsxc.master?(jsxc.xmpp.conn.send($pres({to:from,type:approve?"subscribed":"unsubscribed"})),jsxc.storage.removeUserItem("friendReq"),jsxc.gui.dialog.close()):jsxc.storage.updateUserItem("friendReq","approve",approve)},addBuddy:function(username,alias){var bid=jsxc.jidToBid(username);if(jsxc.master){var iq=$iq({type:"set"}).c("query",{xmlns:"jabber:iq:roster"}).c("item",{jid:username,name:alias||""});jsxc.xmpp.conn.sendIQ(iq),jsxc.xmpp.conn.send($pres({to:username,type:"subscribe"})),jsxc.storage.removeUserItem("add_"+bid)}else jsxc.storage.setUserItem("add_"+bid,{username:username,alias:alias||null})},removeBuddy:function(jid){var bid=jsxc.jidToBid(jid),iq=$iq({type:"set"}).c("query",{xmlns:"jabber:iq:roster"}).c("item",{jid:Strophe.getBareJidFromJid(jid),subscription:"remove"});jsxc.xmpp.conn.sendIQ(iq),jsxc.gui.roster.purge(bid)},onReceived:function(message){var from=$(message).attr("from"),jid=Strophe.getBareJidFromJid(from),bid=jsxc.jidToBid(jid),received=$(message).find("received[xmlns='urn:xmpp:receipts']");if(received.length){var i,receivedId=received.attr("id").replace(/:/,"-"),chat=jsxc.storage.getUserItem("chat",bid);for(i=chat.length-1;i>=0;i--)if(chat[i].uid===receivedId){chat[i].received=!0,$("#"+receivedId).addClass("jsxc_received"),jsxc.storage.setUserItem("chat",bid,chat);break}}return!0},sendMessage:function(bid,msg,uid){jsxc.otr.objects.hasOwnProperty(bid)?jsxc.otr.objects[bid].sendMsg(msg,uid):jsxc.xmpp._sendMessage(jsxc.gui.window.get(bid).data("jid"),msg,uid)},_sendMessage:function(jid,msg,uid){var data=jsxc.storage.getUserItem("buddy",jsxc.jidToBid(jid))||{},isBar=Strophe.getBareJidFromJid(jid)===jid,type=data.type||"chat",xmlMsg=$msg({to:jid,type:type,id:uid}).c("body").t(msg);"chat"===type&&(isBar||jsxc.xmpp.conn.caps.hasFeatureByJid(jid,Strophe.NS.RECEIPTS))&&xmlMsg.up().c("request",{xmlns:"urn:xmpp:receipts"}),jsxc.xmpp.conn.send(xmlMsg)},loadVcard:function(bid,cb,error_cb){jsxc.master?jsxc.xmpp.conn.vcard.get(cb,bid,error_cb):(jsxc.storage.setUserItem("vcard",bid,"request:"+(new Date).getTime()),$(document).one("loaded.vcard.jsxc",function(ev,result){result&&"success"===result.state?cb($(result.data).get(0)):error_cb()}))},getCapabilitiesByJid:function(jid){if(jsxc.xmpp.conn)return jsxc.xmpp.conn.caps.getCapabilitiesByJid(jid);var jidVerIndex=JSON.parse(localStorage.getItem("strophe.caps._jidVerIndex"))||{},knownCapabilities=JSON.parse(localStorage.getItem("strophe.caps._knownCapabilities"))||{};return jidVerIndex[jid]?knownCapabilities[jidVerIndex[jid]]:null}},jsxc.storage={PREFIX:"jsxc",SEP:":",getPrefix:function(uk){var self=jsxc.storage;return self.PREFIX+self.SEP+(uk&&jsxc.bid?jsxc.bid+self.SEP:"")},setItem:function(key,value,uk){jsxc.storageNotConform>0&&"rid"!==key&&"lastActivity"!==key&&(jsxc.storageNotConform>1&&null===jsxc.toSNC&&(jsxc.toSNC=window.setTimeout(function(){jsxc.storageNotConform=0,jsxc.storage.setItem("storageNotConform",0)},1e3)),jsxc.ls.push(JSON.stringify({key:key,value:value}))),"object"==typeof value&&(value=JSON.stringify(value)),localStorage.setItem(jsxc.storage.getPrefix(uk)+key,value)},setUserItem:function(type,key,value){var self=jsxc.storage;return 2===arguments.length?(value=key,key=type,type=""):3===arguments.length&&(key=type+self.SEP+key),jsxc.storage.setItem(key,value,!0)},getItem:function(key,uk){key=jsxc.storage.getPrefix(uk)+key;var value=localStorage.getItem(key);try{return JSON.parse(value)}catch(e){return value}},getUserItem:function(type,key){var self=jsxc.storage;return 1===arguments.length?key=type:2===arguments.length&&(key=type+self.SEP+key),jsxc.storage.getItem(key,!0)},removeItem:function(key,uk){jsxc.storageNotConform&&"rid"!==key&&"lastActivity"!==key&&jsxc.ls.push(JSON.stringify({key:jsxc.storage.prefix+key,value:""})),localStorage.removeItem(jsxc.storage.getPrefix(uk)+key)},removeUserItem:function(type,key){var self=jsxc.storage;1===arguments.length?key=type:2===arguments.length&&(key=type+self.SEP+key),jsxc.storage.removeItem(key,!0)},updateItem:function(key,variable,value,uk){var data=jsxc.storage.getItem(key,uk)||{};"object"==typeof variable?$.each(variable,function(key,val){"undefined"==typeof data[key]&&jsxc.debug("Variable "+key+" doesn't exist in "+variable+". It was created."),data[key]=val}):("undefined"==typeof data[variable]&&jsxc.debug("Variable "+variable+" doesn't exist. It was created."),data[variable]=value),jsxc.storage.setItem(key,data,uk)},updateUserItem:function(type,key,variable,value){var self=jsxc.storage;return 4===arguments.length||3===arguments.length&&"object"==typeof variable?key=type+self.SEP+key:(value=variable,variable=key,key=type),jsxc.storage.updateItem(key,variable,value,!0)},ink:function(key,uk){jsxc.storage.setItem(key,Number(jsxc.storage.getItem(key,uk))+1,uk)},removeElement:function(key,name,uk){var item=jsxc.storage.getItem(key,uk);$.isArray(item)?item=$.grep(item,function(e){return e!==name}):"object"==typeof item&&delete item[name],jsxc.storage.setItem(key,item,uk)},removeUserElement:function(type,key,name){var self=jsxc.storage;return 2===arguments.length?(name=key,key=type):3===arguments.length&&(key=type+self.SEP+key),jsxc.storage.removeElement(key,name,!0)},onStorage:function(e){if(e.key!==jsxc.storage.PREFIX+jsxc.storage.SEP+"rid"&&e.key!==jsxc.storage.PREFIX+jsxc.storage.SEP+"lastActivity"){var re=new RegExp("^"+jsxc.storage.PREFIX+jsxc.storage.SEP+"(?:[^"+jsxc.storage.SEP+"]+@[^"+jsxc.storage.SEP+"]+"+jsxc.storage.SEP+")?(.*)","i"),key=e.key.replace(re,"$1");if(jsxc.storageNotConform>0&&jsxc.ls.length>0){var val=e.newValue;try{val=JSON.parse(val)}catch(err){}var index=$.inArray(JSON.stringify({key:key,value:val}),jsxc.ls);if(index>=0)return jsxc.storageNotConform>1&&(window.clearTimeout(jsxc.toSNC),jsxc.storageNotConform=1,jsxc.storage.setItem("storageNotConform",1)),void jsxc.ls.splice(index,1)}if(e.oldValue!==e.newValue){var n,o,bid=key.replace(new RegExp("[^"+jsxc.storage.SEP+"]+"+jsxc.storage.SEP+"(.*)","i"),"$1");if(jsxc.master&&"alive"===key)return jsxc.debug("Master request."),void jsxc.storage.ink("alive");if(!(jsxc.master||"alive"!==key&&"alive_busy"!==key||jsxc.triggeredFromElement))return window.clearTimeout(jsxc.to),jsxc.to=window.setTimeout(jsxc.checkMaster,("alive"===key?jsxc.options.timeout:jsxc.options.busyTimeout)+jsxc.random(60)),void(jsxc.role_allocation||jsxc.onSlave());if(key.match(/^notices/)&&jsxc.notice.load(),key.match(/^presence/)&&jsxc.gui.changePresence(e.newValue,!0),key.match(/^options/)&&e.newValue&&(n=JSON.parse(e.newValue),"undefined"!=typeof n.muteNotification&&n.muteNotification?jsxc.notification.muteSound(!0):jsxc.notification.unmuteSound(!0)),key.match(/^hidden/)&&(jsxc.master?clearTimeout(jsxc.toNotification):jsxc.isHidden()),key.match(new RegExp("^chat"+jsxc.storage.SEP)))for(var data,el,posts=JSON.parse(e.newValue);posts.length>0;)data=posts.pop(),el=$("#"+data.uid),0===el.length?(jsxc.master&&"out"===data.direction&&jsxc.xmpp.sendMessage(bid,data.msg,data.uid),jsxc.gui.window._postMessage(bid,data)):data.received&&el.addClass("jsxc_received");else{if(key.match(new RegExp("^window"+jsxc.storage.SEP)))return e.newValue?e.oldValue?(n=JSON.parse(e.newValue),n.minimize?jsxc.gui.window._hide(bid):jsxc.gui.window._show(bid),void jsxc.gui.window.setText(bid,n.text)):void jsxc.gui.window.open(bid):void jsxc.gui.window._close(bid);if(key.match(new RegExp("^smp"+jsxc.storage.SEP))){if(!e.newValue)return jsxc.gui.dialog.close(),void(jsxc.master&&jsxc.otr.objects[bid].sm.abort());n=JSON.parse(e.newValue),"undefined"!=typeof n.data?jsxc.otr.onSmpQuestion(bid,n.data):jsxc.master&&n.sec&&(jsxc.gui.dialog.close(),jsxc.otr.sendSmpReq(bid,n.sec,n.quest))}if(!jsxc.master&&key.match(new RegExp("^buddy"+jsxc.storage.SEP))){if(!e.newValue)return void jsxc.gui.roster.purge(bid);if(!e.oldValue)return void jsxc.gui.roster.add(bid);n=JSON.parse(e.newValue),o=JSON.parse(e.oldValue),jsxc.gui.update(bid),(o.status!==n.status||o.sub!==n.sub)&&jsxc.gui.roster.reorder(bid)}if(jsxc.master&&key.match(new RegExp("^deletebuddy"+jsxc.storage.SEP))&&e.newValue&&(n=JSON.parse(e.newValue),jsxc.xmpp.removeBuddy(n.jid),jsxc.storage.removeUserItem(key)),jsxc.master&&key.match(new RegExp("^buddy"+jsxc.storage.SEP))&&(n=JSON.parse(e.newValue),o=JSON.parse(e.oldValue),o.transferReq!==n.transferReq&&(jsxc.storage.updateUserItem("buddy",bid,"transferReq",-1),0===n.transferReq&&jsxc.otr.goPlain(bid),1===n.transferReq&&jsxc.otr.goEncrypt(bid)),o.name!==n.name&&jsxc.gui.roster._rename(bid,n.name)),"sid"===key)return void(e.newValue||jsxc.xmpp.logout());"friendReq"===key&&(n=JSON.parse(e.newValue),jsxc.master&&n.approve>=0&&jsxc.xmpp.resFriendReq(n.jid,n.approve)),jsxc.master&&key.match(new RegExp("^add"+jsxc.storage.SEP))&&(n=JSON.parse(e.newValue),jsxc.xmpp.addBuddy(n.username,n.alias)),"roster"===key&&jsxc.gui.roster.toggle(),jsxc.master&&key.match(new RegExp("^vcard"+jsxc.storage.SEP))&&null!==e.newValue&&e.newValue.match(/^request:/)&&jsxc.xmpp.loadVcard(bid,function(stanza){jsxc.storage.setUserItem("vcard",bid,{state:"success",data:$("<div>").append(stanza).html()})},function(){jsxc.storage.setUserItem("vcard",bid,{state:"error"})}),jsxc.master||!key.match(new RegExp("^vcard"+jsxc.storage.SEP))||null===e.newValue||e.newValue.match(/^request:/)||(n=JSON.parse(e.newValue),"undefined"!=typeof n.state&&$(document).trigger("loaded.vcard.jsxc",n),jsxc.storage.removeUserItem("vcard",bid))}}}},saveMessage:function(bid,direction,msg){var chat=jsxc.storage.getUserItem("chat",bid)||[],uid=(new Date).getTime()+":msg";chat.length>jsxc.options.get("numberOfMsg")&&chat.pop();var post={direction:direction,msg:msg,uid:uid.replace(/:/,"-"),received:!1};return chat.unshift(post),jsxc.storage.setUserItem("chat",bid,chat),post},saveBuddy:function(bid,data){return jsxc.storage.getUserItem("buddy",bid)?(jsxc.storage.updateUserItem("buddy",bid,data),"updated"):(jsxc.storage.setUserItem("buddy",bid,$.extend({jid:"",name:"",status:0,sub:"none",msgstate:0,transferReq:-1,trust:!1,fingerprint:null,res:[],type:"chat"},data)),"created")}},jsxc.otr={objects:{},dsaFallback:null,receiveMessage:function(bid,msg,encrypted){jsxc.otr.objects[bid].msgstate!==OTR.CONST.MSGSTATE_PLAINTEXT&&jsxc.otr.backup(bid),jsxc.otr.objects[bid].msgstate===OTR.CONST.MSGSTATE_PLAINTEXT||encrypted?jsxc.gui.window.postMessage(bid,"in",msg):jsxc.gui.window.postMessage(bid,"sys",jsxc.translate("%%Received an unencrypted message.%% [")+msg+"]")},sendMessage:function(jid,msg,uid){0!==jsxc.otr.objects[jsxc.jidToBid(jid)].msgstate&&jsxc.otr.backup(jsxc.jidToBid(jid)),jsxc.xmpp._sendMessage(jid,msg,uid)},create:function(bid){if(!jsxc.otr.objects.hasOwnProperty(bid)&&jsxc.options.otr.priv){var ol=jsxc.storage.getUserItem("otrlist")||[];ol.indexOf(bid)<0&&(ol.push(bid),jsxc.storage.setUserItem("otrlist",ol)),jsxc.otr.objects[bid]=new OTR(jsxc.options.otr),jsxc.options.otr.SEND_WHITESPACE_TAG&&(jsxc.otr.objects[bid].SEND_WHITESPACE_TAG=!0),jsxc.options.otr.WHITESPACE_START_AKE&&(jsxc.otr.objects[bid].WHITESPACE_START_AKE=!0),jsxc.otr.objects[bid].on("status",function(status){var data=jsxc.storage.getUserItem("buddy",bid);if(null!==data){switch(status){case OTR.CONST.STATUS_SEND_QUERY:jsxc.gui.window.postMessage(bid,"sys",jsxc.l.trying_to_start_private_conversation);break;case OTR.CONST.STATUS_AKE_SUCCESS:data.fingerprint=jsxc.otr.objects[bid].their_priv_pk.fingerprint(),data.msgstate=OTR.CONST.MSGSTATE_ENCRYPTED;var msg=(jsxc.otr.objects[bid].trust?jsxc.l.Verified:jsxc.l.Unverified)+" "+jsxc.l.private_conversation_started;jsxc.gui.window.postMessage(bid,"sys",msg);break;case OTR.CONST.STATUS_END_OTR:data.fingerprint=null,jsxc.otr.objects[bid].msgstate===OTR.CONST.MSGSTATE_PLAINTEXT?(data.msgstate=OTR.CONST.MSGSTATE_PLAINTEXT,jsxc.gui.window.postMessage(bid,"sys",jsxc.l.private_conversation_aborted)):(data.msgstate=OTR.CONST.MSGSTATE_FINISHED,jsxc.gui.window.postMessage(bid,"sys",jsxc.l.your_buddy_closed_the_private_conversation_you_should_do_the_same));break;case OTR.CONST.STATUS_SMP_HANDLE:jsxc.keepBusyAlive()}jsxc.storage.setUserItem("buddy",bid,data),jsxc.gui.update(bid)}}),jsxc.otr.objects[bid].on("smp",function(type,data){switch(type){case"question":if(jsxc.gui.window.postMessage(bid,"sys",jsxc.l.Authentication_request_received),$("#jsxc_dialog").length>0){jsxc.otr.objects[bid].sm.abort();break}jsxc.otr.onSmpQuestion(bid,data),jsxc.storage.setUserItem("smp_"+bid,{data:data||null});break;case"trust":jsxc.otr.objects[bid].trust=data,jsxc.storage.updateUserItem("buddy",bid,"trust",data),jsxc.otr.backup(bid),jsxc.gui.update(bid),data?jsxc.gui.window.postMessage(bid,"sys",jsxc.l.conversation_is_now_verified):jsxc.gui.window.postMessage(bid,"sys",jsxc.l.authentication_failed),jsxc.storage.removeUserItem("smp_"+bid),jsxc.gui.dialog.close();break;case"abort":jsxc.gui.window.postMessage(bid,"sys",jsxc.l.Authentication_aborted);break;default:jsxc.debug("[OTR] sm callback: Unknown type: "+type)}}),jsxc.otr.objects[bid].on("ui",function(msg,encrypted){jsxc.otr.receiveMessage(bid,msg,encrypted===!0)}),jsxc.otr.objects[bid].on("io",function(msg,uid){var jid=jsxc.gui.window.get(bid).data("jid")||jsxc.otr.objects[bid].jid;jsxc.otr.objects[bid].jid=jid,jsxc.otr.sendMessage(jid,msg,uid)}),jsxc.otr.objects[bid].on("error",function(err){"Received an unencrypted message."!==err&&jsxc.gui.window.postMessage(bid,"sys","[OTR] "+jsxc.translate("%%"+err+"%%")),jsxc.error("[OTR] "+err)}),jsxc.otr.restore(bid)}},onSmpQuestion:function(bid,data){jsxc.gui.showVerification(bid),$("#jsxc_dialog select").prop("selectedIndex",data?2:3).change(),$("#jsxc_dialog > div:eq(0)").hide(),data?($("#jsxc_dialog > div:eq(2)").find("#jsxc_quest").val(data).prop("disabled",!0),$("#jsxc_dialog > div:eq(2)").find(".creation").text("Answer"),$("#jsxc_dialog > div:eq(2)").find(".jsxc_explanation").text(jsxc.l.your_buddy_is_attempting_to_determine_+" "+jsxc.l.to_authenticate_to_your_buddy+jsxc.l.enter_the_answer_and_click_answer)):$("#jsxc_dialog > div:eq(3)").find(".jsxc_explanation").text(jsxc.l.your_buddy_is_attempting_to_determine_+" "+jsxc.l.to_authenticate_to_your_buddy+jsxc.l.enter_the_secret),$("#jsxc_dialog .jsxc_close").click(function(){jsxc.storage.removeUserItem("smp_"+bid),jsxc.master&&jsxc.otr.objects[bid].sm.abort()})},sendSmpReq:function(bid,sec,quest){jsxc.keepBusyAlive(),jsxc.otr.objects[bid].smpSecret(sec,quest||"")},toggleTransfer:function(bid){0===jsxc.storage.getUserItem("buddy",bid).msgstate?jsxc.otr.goEncrypt(bid):jsxc.otr.goPlain(bid)},goEncrypt:function(bid){jsxc.master?jsxc.otr.objects[bid].sendQueryMsg():jsxc.storage.updateUserItem("buddy",bid,"transferReq",1)},goPlain:function(bid,cb){jsxc.master?(jsxc.otr.objects[bid].endOtr.call(jsxc.otr.objects[bid],cb),jsxc.otr.objects[bid].init.call(jsxc.otr.objects[bid]),jsxc.otr.backup(bid)):jsxc.storage.updateUserItem("buddy",bid,"transferReq",0)},backup:function(bid){var o=jsxc.otr.objects[bid],r={};if(null!==o){var i,savekey=["jid","our_instance_tag","msgstate","authstate","fragment","their_y","their_old_y","their_keyid","their_instance_tag","our_dh","our_old_dh","our_keyid","sessKeys","storedMgs","oldMacKeys","trust","transmittedRS","ssid","receivedPlaintext","authstate","send_interval"];for(i=0;i<savekey.length;i++)r[savekey[i]]=JSON.stringify(o[savekey[i]]);null!==o.their_priv_pk&&(r.their_priv_pk=JSON.stringify(o.their_priv_pk.packPublic())),o.ake.otr_version&&""!==o.ake.otr_version&&(r.otr_version=JSON.stringify(o.ake.otr_version)),jsxc.storage.setUserItem("otr",bid,r)}},restore:function(bid){var o=jsxc.otr.objects[bid],d=jsxc.storage.getUserItem("otr",bid);if(null!==o||null!==d){var key;for(key in d)if(d.hasOwnProperty(key)){var val=JSON.parse(d[key]);"their_priv_pk"===key&&null!==val&&(val=DSA.parsePublic(val)),"otr_version"===key&&null!==val?o.ake.otr_version=val:o[key]=val}jsxc.otr.objects[bid]=o,1===o.msgstate&&null!==o.their_priv_pk&&o._smInit.call(jsxc.otr.objects[bid])}jsxc.otr.enable(bid)},createDSA:function(){if(!jsxc.options.otr.priv)if(null===jsxc.storage.getUserItem("key")){var msg=jsxc.l.Creating_your_private_key_,worker=null;if(Worker)try{worker=new Worker(jsxc.options.root+"/lib/otr/build/dsa-webworker.js")}catch(err){jsxc.warn("Couldn't create web-worker.",err)}jsxc.otr.dsaFallback=null===worker,jsxc.otr.dsaFallback?(jsxc.gui.dialog.open(jsxc.gui.template.get("waitAlert",null,msg),{noClose:!0}),jsxc.debug("DSA key creation started."),setTimeout(function(){var dsa=new DSA;jsxc.otr.DSAready(dsa)},500)):(jsxc._onMaster(),worker.onmessage=function(e){var type=e.data.type,val=e.data.val;"debug"===type?jsxc.debug(val):"data"===type&&jsxc.otr.DSAready(DSA.parsePrivate(val))},worker.postMessage({imports:[jsxc.options.root+"/lib/otr/vendor/salsa20.js",jsxc.options.root+"/lib/otr/vendor/bigint.js",jsxc.options.root+"/lib/otr/vendor/crypto.js",jsxc.options.root+"/lib/otr/vendor/eventemitter.js",jsxc.options.root+"/lib/otr/lib/const.js",jsxc.options.root+"/lib/otr/lib/helpers.js",jsxc.options.root+"/lib/otr/lib/dsa.js"],seed:BigInt.getSeed(),debug:!0}))}else jsxc.debug("DSA key loaded"),jsxc.options.otr.priv=DSA.parsePrivate(jsxc.storage.getUserItem("key")),jsxc.otr._createDSA()},_createDSA:function(){jsxc.storage.setUserItem("priv_fingerprint",jsxc.options.otr.priv.fingerprint()),jsxc.otr.dsaFallback!==!1&&jsxc._onMaster()},DSAready:function(dsa){jsxc.storage.setUserItem("key",dsa.packPrivate()),jsxc.options.otr.priv=dsa,jsxc.otr.dsaFallback?jsxc.gui.dialog.close():$.each(jsxc.storage.getUserItem("windowlist"),function(index,val){jsxc.otr.create(val)}),jsxc.otr._createDSA()},enable:function(bid){jsxc.gui.window.get(bid).find(".jsxc_otr").removeClass("jsxc_disabled")}},jsxc.notification={audio:null,init:function(){$(document).on("postmessagein.jsxc",function(event,bid,msg){msg=msg.match(/^\?OTR/)?jsxc.translate("%%Encrypted message%%"):msg;var data=jsxc.storage.getUserItem("buddy",bid);jsxc.notification.notify(jsxc.translate("%%New message from%% ")+data.name,msg,void 0,void 0,jsxc.CONST.SOUNDS.MSG)}),$(document).on("callincoming.jingle",function(){jsxc.notification.playSound(jsxc.CONST.SOUNDS.CALL,!0,!0)}),$(document).on("accept.call.jsxc reject.call.jsxc",function(){jsxc.notification.stopSound()})},notify:function(title,msg,d,force,soundFile,loop){jsxc.options.notification&&jsxc.notification.hasPermission()&&(jsxc.isHidden()||force)&&(jsxc.toNotification=setTimeout(function(){"string"==typeof soundFile&&jsxc.notification.playSound(soundFile,loop,force);var popup=new Notification(jsxc.translate(title),{body:jsxc.translate(msg),icon:jsxc.options.root+"/img/XMPP_logo.png"}),duration=d||jsxc.options.popupDuration;duration>0&&setTimeout(function(){popup.close()},duration)},jsxc.toNotificationDelay))},hasSupport:function(){if(window.webkitNotifications){window.Notification=function(title,opt){var popup=window.webkitNotifications.createNotification(null,title,opt.body);return popup.show(),popup.close=function(){popup.cancel()},popup};var permission;switch(window.webkitNotifications.checkPermission()){case 0:permission=jsxc.CONST.NOTIFICATION_GRANTED;break;case 2:permission=jsxc.CONST.NOTIFICATION_DENIED;break;default:permission=jsxc.CONST.NOTIFICATION_DEFAULT}return window.Notification.permission=permission,window.Notification.requestPermission=function(func){window.webkitNotifications.requestPermission(func)},!0}return window.Notification?!0:!1},prepareRequest:function(){$(document).one("postmessagein.jsxc",function(){jsxc.switchEvents({"notificationready.jsxc":function(){jsxc.gui.dialog.close(),jsxc.notification.init(),jsxc.storage.setUserItem("notification",!0)},"notificationfailure.jsxc":function(){jsxc.gui.dialog.close(),jsxc.options.notification=!1,jsxc.storage.setUserItem("notification",!1)}}),setTimeout(function(){jsxc.notice.add("%%Notifications%%?","%%Should_we_notify_you_%%","gui.showRequestNotification")},1e3)})},requestPermission:function(){window.Notification.requestPermission(function(status){window.Notification.permission!==status&&(window.Notification.permission=status),$(document).trigger(jsxc.notification.hasPermission()?"notificationready.jsxc":"notificationfailure.jsxc")})},hasPermission:function(){return window.Notification.permission===jsxc.CONST.NOTIFICATION_GRANTED},playSound:function(soundFile,loop,force){if(jsxc.master&&!jsxc.options.get("muteNotification")&&"dnd"!==jsxc.storage.getUserItem("presence")&&(jsxc.isHidden()||force)){jsxc.notification.stopSound();var audio=new Audio(jsxc.options.root+"/sound/"+soundFile);audio.loop=loop||!1,audio.play(),jsxc.notification.audio=audio}},stopSound:function(){var audio=jsxc.notification.audio;"undefined"!=typeof audio&&null!==audio&&(audio.pause(),jsxc.notification.audio=null)},muteSound:function(external){$("#jsxc_menu .jsxc_muteNotification").text(jsxc.translate("%%Unmute%%")),external!==!0&&jsxc.options.set("muteNotification",!0)},unmuteSound:function(external){$("#jsxc_menu .jsxc_muteNotification").text(jsxc.translate("%%Mute%%")),external!==!0&&jsxc.options.set("muteNotification",!1)}},jsxc.notice={_num:0,load:function(){$("#jsxc_notice ul li").remove(),$("#jsxc_notice > span").text(""),jsxc.notice._num=0;var saved=jsxc.storage.getUserItem("notices")||[],key=null;for(key in saved)if(saved.hasOwnProperty(key)){var val=saved[key];jsxc.notice.add(val.msg,val.description,val.fnName,val.fnParams,key)}},add:function(msg,description,fnName,fnParams,id){var nid=id||Date.now(),list=$("#jsxc_notice ul"),notice=$("<li/>");if(notice.click(function(){jsxc.notice.remove(nid);var i,fnList=fnName.split("."),fn=jsxc[fnList[0]];for(i=1;i<fnList.length;i++)fn=fn[fnList[i]];return"function"==typeof fn&&fn.apply(null,fnParams),!1}),notice.text(jsxc.translate(msg)),notice.attr("title",jsxc.translate(description)||""),notice.attr("data-nid",nid),list.append(notice),$("#jsxc_notice > span").text(++jsxc.notice._num),!id){var saved=jsxc.storage.getUserItem("notices")||{};saved[nid]={msg:msg,description:description,fnName:fnName,fnParams:fnParams},jsxc.storage.setUserItem("notices",saved),jsxc.notification.notify(msg,description||"",null,!0,jsxc.CONST.SOUNDS.NOTICE)}},remove:function(nid){var el=$("#jsxc_notice li[data-nid="+nid+"]");el.remove(),$("#jsxc_notice > span").text(--jsxc.notice._num||"");var s=jsxc.storage.getUserItem("notices");delete s[nid],jsxc.storage.setUserItem("notices",s)}},jsxc.l10n={en:{Logging_in:"Logging in…",your_connection_is_unencrypted:"Your connection is unencrypted.",your_connection_is_encrypted:"Your connection is encrypted.",your_buddy_closed_the_private_connection:"Your buddy closed the private connection.",start_private:"Start private",close_private:"Close private",your_buddy_is_verificated:"Your buddy is verified.",you_have_only_a_subscription_in_one_way:"You only have a one-way subscription.",authentication_query_sent:"Authentication query sent.",your_message_wasnt_send_please_end_your_private_conversation:"Your message was not sent. Please end your private conversation.",unencrypted_message_received:"Unencrypted message received:",your_message_wasnt_send_because_you_have_no_valid_subscription:"Your message was not sent because you have no valid subscription.",not_available:"Not available",no_connection:"No connection!",relogin:"relogin",trying_to_start_private_conversation:"Trying to start private conversation!",Verified:"Verified",Unverified:"Unverified",private_conversation_started:"Private conversation started.",private_conversation_aborted:"Private conversation aborted!",your_buddy_closed_the_private_conversation_you_should_do_the_same:"Your buddy closed the private conversation! You should do the same.",conversation_is_now_verified:"Conversation is now verified.",authentication_failed:"Authentication failed.",your_buddy_is_attempting_to_determine_:"You buddy is attempting to determine if he or she is really talking to you.",to_authenticate_to_your_buddy:"To authenticate to your buddy, ",enter_the_answer_and_click_answer:"enter the answer and click Answer.",enter_the_secret:"enter the secret.",Creating_your_private_key_:"Creating your private key; this may take a while.",Authenticating_a_buddy_helps_:"Authenticating a buddy helps ensure that the person you are talking to is really the one he or she claims to be.",How_do_you_want_to_authenticate_your_buddy:"How do you want to authenticate {{bid_name}} (<b>{{bid_jid}}</b>)?",Select_method:"Select method...",Manual:"Manual",Question:"Question",Secret:"Secret",To_verify_the_fingerprint_:"To verify the fingerprint, contact your buddy via some other trustworthy channel, such as the telephone.",Your_fingerprint:"Your fingerprint",Buddy_fingerprint:"Buddy fingerprint",Close:"Close",Compared:"Compared",To_authenticate_using_a_question_:"To authenticate using a question, pick a question whose answer is known only you and your buddy.",Ask:"Ask",To_authenticate_pick_a_secret_:"To authenticate, pick a secret known only to you and your buddy.",Compare:"Compare",Fingerprints:"Fingerprints",Authentication:"Authentication",Message:"Message",Add_buddy:"Add buddy",rename_buddy:"rename buddy",delete_buddy:"delete buddy",Login:"Login",Username:"Username",Password:"Password",Cancel:"Cancel",Connect:"Connect",Type_in_the_full_username_:"Type in the full username and an optional alias.",Alias:"Alias",Add:"Add",Subscription_request:"Subscription request",You_have_a_request_from:"You have a request from",Deny:"Deny",Approve:"Approve",Remove_buddy:"Remove buddy",You_are_about_to_remove_:"You are about to remove {{bid_name}} (<b>{{bid_jid}}</b>) from your buddy list. All related chats will be closed.",Continue_without_chat:"Continue without chat",Please_wait:"Please wait",Login_failed:"Chat login failed",Sorry_we_cant_authentikate_:"Authentication failed with the chat server. Maybe the password is wrong?",Retry:"Back",clear_history:"Clear history",New_message_from:"New message from",Should_we_notify_you_:"Should we notify you about new messages in the future?",Please_accept_:'Please click the "Allow" button at the top.',Hide_offline:"Hide offline contacts",Show_offline:"Show offline contacts",About:"About",dnd:"Do Not Disturb",Mute:"Mute",Unmute:"Unmute",Subscription:"Subscription",both:"both",Status:"Status",online:"online",chat:"chat",away:"away",xa:"extended away",offline:"offline",none:"none",Unknown_instance_tag:"Unknown instance tag.",Not_one_of_our_latest_keys:"Not one of our latest keys.",Received_an_unreadable_encrypted_message:"Received an unreadable encrypted message.",Online:"Online",Chatty:"Chatty",Away:"Away",Extended_away:"Extended away",Offline:"Offline",Friendship_request:"Friendship request",Confirm:"Confirm",Dismiss:"Dismiss",Remove:"Remove",Online_help:"Online help",FN:"Full name",N:" ",FAMILY:"Family name",GIVEN:"Given name",NICKNAME:"Nickname",URL:"URL",ADR:"Address",STREET:"Street Address",EXTADD:"Extended Address",LOCALITY:"Locality",REGION:"Region",PCODE:"Postal Code",CTRY:"Country",TEL:"Telephone",NUMBER:"Number",EMAIL:"Email",USERID:" ",ORG:"Organization",ORGNAME:"Name",ORGUNIT:"Unit",TITLE:"Job title",ROLE:"Role",BDAY:"Birthday",DESC:"Description",PHOTO:" ",send_message:"Send message",get_info:"Show information",Settings:"Settings",Priority:"Priority",Save:"Save",User_settings:"User settings",A_fingerprint_:"A fingerprint is used to make sure that the person you are talking to is who he or she is saying.",Your_roster_is_empty_add_a:"Your roster is empty, add a ",new_buddy:"new buddy",is:"is",Login_options:"Login options",BOSH_url:"BOSH URL",Domain:"Domain",Resource:"Resource",On_login:"On login",Received_an_unencrypted_message:"Received an unencrypted message",Sorry_your_buddy_doesnt_provide_any_information:"Sorry, your buddy does not provide any information.",Info_about:"Info about",Authentication_aborted:"Authentication aborted.",Authentication_request_received:"Authentication request received.",Do_you_want_to_display_them:"Do you want to display them?",Log_in_without_chat:"Log in without chat",has_come_online:"has come online",Unknown_sender:"Unknown sender",You_received_a_message_from_an_unknown_sender:"You received a message from an unknown sender"},de:{Logging_in:"Login läuft…",your_connection_is_unencrypted:"Deine Verbindung ist UNverschlüsselt.",your_connection_is_encrypted:"Deine Verbindung ist verschlüsselt.",your_buddy_closed_the_private_connection:"Dein Freund hat die private Verbindung getrennt.",start_private:"Privat starten",close_private:"Privat abbrechen",your_buddy_is_verificated:"Dein Freund ist verifiziert.",you_have_only_a_subscription_in_one_way:"Die Freundschaft ist nur einseitig.",authentication_query_sent:"Authentifizierungsanfrage gesendet.",your_message_wasnt_send_please_end_your_private_conversation:"Deine Nachricht wurde nicht gesendet. Bitte beende die private Konversation.",unencrypted_message_received:"Unverschlüsselte Nachricht erhalten.",your_message_wasnt_send_because_you_have_no_valid_subscription:"Deine Nachricht wurde nicht gesandt, da die Freundschaft einseitig ist.",not_available:"Nicht verfügbar.",no_connection:"Keine Verbindung.",relogin:"Neu anmelden.",trying_to_start_private_conversation:"Versuche private Konversation zu starten.",Verified:"Verifiziert",Unverified:"Unverifiziert",private_conversation_started:"Private Konversation gestartet.",private_conversation_aborted:"Private Konversation abgebrochen.",your_buddy_closed_the_private_conversation_you_should_do_the_same:"Dein Freund hat die private Konversation beendet. Das solltest du auch tun!",conversation_is_now_verified:"Konversation ist jetzt verifiziert",authentication_failed:"Authentifizierung fehlgeschlagen.",your_buddy_is_attempting_to_determine_:"Dein Freund versucht herauszufinden ob er wirklich mit dir redet.",to_authenticate_to_your_buddy:"Um dich gegenüber deinem Freund zu verifizieren ",enter_the_answer_and_click_answer:"gib die Antwort ein und klick auf Antworten.",enter_the_secret:"gib das Geheimnis ein.",Creating_your_private_key_:"Wir werden jetzt deinen privaten Schlüssel generieren. Das kann einige Zeit in Anspruch nehmen.",Authenticating_a_buddy_helps_:"Einen Freund zu authentifizieren hilft sicher zustellen, dass die Person mit der du sprichst auch die ist die sie sagt.",How_do_you_want_to_authenticate_your_buddy:"Wie willst du {{bid_name}} (<b>{{bid_jid}}</b>) authentifizieren?",Select_method:"Wähle...",Manual:"Manual",Question:"Frage",Secret:"Geheimnis",To_verify_the_fingerprint_:"Um den Fingerprint zu verifizieren kontaktiere dein Freund über einen anderen Kommunikationsweg. Zum Beispiel per Telefonanruf.",Your_fingerprint:"Dein Fingerprint",Buddy_fingerprint:"Sein/Ihr Fingerprint",Close:"Schließen",Compared:"Verglichen",To_authenticate_using_a_question_:"Um die Authentifizierung per Frage durchzuführen, wähle eine Frage bei welcher nur dein Freund die Antwort weiß.",Ask:"Frage",To_authenticate_pick_a_secret_:"Um deinen Freund zu authentifizieren, wähle ein Geheimnis welches nur deinem Freund und dir bekannt ist.",Compare:"Vergleiche",Fingerprints:"Fingerprints",Authentication:"Authentifizierung",Message:"Nachricht",Add_buddy:"Freund hinzufügen",rename_buddy:"Freund umbenennen",delete_buddy:"Freund löschen",Login:"Anmeldung",Username:"Benutzername",Password:"Passwort",Cancel:"Abbrechen",Connect:"Verbinden",Type_in_the_full_username_:"Gib bitte den vollen Benutzernamen und optional ein Alias an.",Alias:"Alias",Add:"Hinzufügen",Subscription_request:"Freundschaftsanfrage",You_have_a_request_from:"Du hast eine Anfrage von",Deny:"Ablehnen",Approve:"Bestätigen",Remove_buddy:"Freund entfernen",You_are_about_to_remove_:"Du bist gerade dabei {{bid_name}} (<b>{{bid_jid}}</b>) von deiner Kontaktliste zu entfernen. Alle Chats werden geschlossen.",Continue_without_chat:"Weiter ohne Chat",Please_wait:"Bitte warten",Login_failed:"Chat-Anmeldung fehlgeschlagen",Sorry_we_cant_authentikate_:"Der Chatserver hat die Anmeldung abgelehnt. Falsches Passwort?",Retry:"Zurück",clear_history:"Lösche Verlauf",New_message_from:"Neue Nachricht von",Should_we_notify_you_:"Sollen wir dich in Zukunft über eingehende Nachrichten informieren, auch wenn dieser Tab nicht im Vordergrund ist?",Please_accept_:'Bitte klick auf den "Zulassen" Button oben.',Menu:"Menü",Hide_offline:"Offline ausblenden",Show_offline:"Offline einblenden",About:"Über",dnd:"Beschäftigt",Mute:"Ton aus",Unmute:"Ton an",Subscription:"Bezug",both:"beidseitig",Status:"Status",online:"online",chat:"chat",away:"abwesend",xa:"länger abwesend",offline:"offline",none:"keine",Unknown_instance_tag:"Unbekannter instance tag.",Not_one_of_our_latest_keys:"Nicht einer unserer letzten Schlüssel.",Received_an_unreadable_encrypted_message:"Eine unlesbare verschlüsselte Nachricht erhalten.",Online:"Online",Chatty:"Gesprächig",Away:"Abwesend",Extended_away:"Länger abwesend",Offline:"Offline",Friendship_request:"Freundschaftsanfrage",Confirm:"Bestätigen",Dismiss:"Ablehnen",Remove:"Löschen",Online_help:"Online Hilfe",FN:"Name",N:" ",FAMILY:"Familienname",GIVEN:"Vorname",NICKNAME:"Spitzname",URL:"URL",ADR:"Adresse",STREET:"Straße",EXTADD:"Zusätzliche Adresse",LOCALITY:"Ortschaft",REGION:"Region",PCODE:"Postleitzahl",CTRY:"Land",TEL:"Telefon",NUMBER:"Nummer",EMAIL:"E-Mail",USERID:" ",ORG:"Organisation",ORGNAME:"Name",ORGUNIT:"Abteilung",TITLE:"Titel",ROLE:"Rolle",BDAY:"Geburtstag",DESC:"Beschreibung",PHOTO:" ",send_message:"Sende Nachricht",get_info:"Benutzerinformationen",Settings:"Einstellungen",Priority:"Priorität",Save:"Speichern",User_settings:"Benutzereinstellungen",A_fingerprint_:"Ein Fingerabdruck wird dazu benutzt deinen Gesprächspartner zu identifizieren.",Your_roster_is_empty_add_a:"Deine Freundesliste ist leer, füge einen neuen Freund ",new_buddy:"hinzu",is:"ist",Login_options:"Anmeldeoptionen",BOSH_url:"BOSH url",Domain:"Domain",Resource:"Ressource",On_login:"Beim Anmelden",Received_an_unencrypted_message:"Unverschlüsselte Nachricht empfangen",Sorry_your_buddy_doesnt_provide_any_information:"Dein Freund stellt leider keine Informationen bereit.",Info_about:"Info über",Authentication_aborted:"Authentifizierung abgebrochen.",Authentication_request_received:"Authentifizierunganfrage empfangen.",Log_in_without_chat:"Anmelden ohne Chat",Do_you_want_to_display_them:"Möchtest du sie sehen?",has_come_online:"ist online gekommen",Unknown_sender:"Unbekannter Sender",You_received_a_message_from_an_unknown_sender:"Du hast eine Nachricht von einem unbekannten Sender erhalten"},es:{Logging_in:"Por favor, espere...",your_connection_is_unencrypted:"Su conexión no está cifrada.",your_connection_is_encrypted:"Su conexión está cifrada.",your_buddy_closed_the_private_connection:"Su amigo ha cerrado la conexión privada.",start_private:"Iniciar privado",close_private:"Cerrar privado",your_buddy_is_verificated:"Tu amigo está verificado.",you_have_only_a_subscription_in_one_way:"Sólo tienes una suscripción de un modo.",authentication_query_sent:"Consulta de verificación enviada.",your_message_wasnt_send_please_end_your_private_conversation:"Su mensaje no fue enviado. Por favor, termine su conversación privada.",unencrypted_message_received:"Mensaje no cifrado recibido:",your_message_wasnt_send_because_you_have_no_valid_subscription:"Su mensaje no se ha enviado, porque usted no tiene suscripción válida.",not_available:"No disponible",no_connection:"Sin conexión!",relogin:"iniciar sesión nuevamente",trying_to_start_private_conversation:"Intentando iniciar una conversación privada!",Verified:"Verificado",Unverified:"No verificado",private_conversation_started:"se inició una conversación privada.",private_conversation_aborted:"Conversación privada abortada!",your_buddy_closed_the_private_conversation_you_should_do_the_same:"Su amigo cerró la conversación privada! Usted debería hacer lo mismo.",conversation_is_now_verified:"La conversación es ahora verificada.",authentication_failed:"Fallo la verificación.",your_buddy_is_attempting_to_determine_:"Tu amigo está tratando de determinar si él o ella está realmente hablando con usted.",to_authenticate_to_your_buddy:"Para autenticar a su amigo, ",enter_the_answer_and_click_answer:"introduce la respuesta y haga clic en Contestar.",enter_the_secret:"especifique el secreto.",Creating_your_private_key_:"Ahora vamos a crear su clave privada. Esto puede tomar algún tiempo.",Authenticating_a_buddy_helps_:"Autenticación de un amigo ayuda a garantizar que la persona que está hablando es quien él o ella está diciendo.",How_do_you_want_to_authenticate_your_buddy:"¿Cómo desea autenticar {{bid_name}} (<b>{{bid_jid}}</b>)?",Select_method:"Escoja un método...",Manual:"Manual",Question:"Pregunta",Secret:"Secreto",To_verify_the_fingerprint_:"Para verificar la firma digital, póngase en contacto con su amigo a través de algún otro canal autenticado, como el teléfono.",Your_fingerprint:"Tu firma digital",Buddy_fingerprint:"firma digital de tu amigo",Close:"Cerrar",Compared:"Comparado",To_authenticate_using_a_question_:"Para autenticar mediante una pregunta, elegir una pregunta cuya respuesta se conoce sólo usted y su amigo.",Ask:"Preguntar",To_authenticate_pick_a_secret_:"Para autenticar, elija un secreto conocido sólo por usted y su amigo.",Compare:"Comparar",Fingerprints:"Firmas digitales",Authentication:"Autenticación",Message:"Mensaje",Add_buddy:"Añadir amigo",rename_buddy:"renombrar amigo",delete_buddy:"eliminar amigo",Login:"Iniciar Sesión",Username:"Usuario",Password:"Contraseña",Cancel:"Cancelar",Connect:"Conectar",Type_in_the_full_username_:"Escriba el usuario completo y un alias opcional.",Alias:"Alias",Add:"Añadir",Subscription_request:"Solicitud de suscripción",You_have_a_request_from:"Tienes una petición de",Deny:"Rechazar",Approve:"Aprobar",Remove_buddy:"Eliminar amigo",You_are_about_to_remove_:"Vas a eliminar a {{bid_name}} (<b>{{bid_jid}}</b>) de tu lista de amigos. Todas las conversaciones relacionadas serán cerradas.",Continue_without_chat:"Continuar",Please_wait:"Espere por favor",Login_failed:"Fallo el inicio de sesión",Sorry_we_cant_authentikate_:"Lo sentimos, no podemos autentificarlo en nuestro servidor de chat. ¿Tal vez la contraseña es incorrecta?",Retry:"Reintentar",clear_history:"Borrar el historial",New_message_from:"Nuevo mensaje de",Should_we_notify_you_:"¿Debemos notificarle sobre nuevos mensajes en el futuro?",Please_accept_:'Por favor, haga clic en el botón "Permitir" en la parte superior.',dnd:"No Molestar",Mute:"Desactivar sonido",Unmute:"Activar sonido",Subscription:"Suscripción",both:"ambos",Status:"Estado",online:"en línea",chat:"chat",away:"ausente",xa:"mas ausente",offline:"desconectado",none:"nadie",Unknown_instance_tag:"Etiqueta de instancia desconocida.",Not_one_of_our_latest_keys:"No de nuestra ultima tecla.",Received_an_unreadable_encrypted_message:"Se recibió un mensaje cifrado ilegible.",Online:"En linea",Chatty:"Hablador",Away:"Ausente",Extended_away:"Mas ausente",Offline:"Desconectado",Friendship_request:"Solicitud de amistad",Confirm:"Confirmar",Dismiss:"Rechazar",Remove:"Eliminar",Online_help:"Ayuda en línea",FN:"Nombre completo ",N:" ",FAMILY:"Apellido",GIVEN:"Nombre",NICKNAME:"Apodar",URL:"URL",ADR:"Dirección",STREET:"Calle",EXTADD:"Extendido dirección",LOCALITY:"Población",REGION:"Región",PCODE:"Código postal",CTRY:"País",TEL:"Teléfono",NUMBER:"Número",EMAIL:"Emilio",USERID:" ",ORG:"Organización",ORGNAME:"Nombre",ORGUNIT:"Departamento",TITLE:"Título",ROLE:"Rol",BDAY:"Cumpleaños",DESC:"Descripción",PHOTO:" ",send_message:"mandar un texto",get_info:"obtener información",Settings:"Ajustes",Priority:"Prioridad",Save:"Guardar",User_settings:"Configuración de usuario",A_fingerprint_:"La huella digital se utiliza para que puedas estar seguro que la persona con la que estas hablando es quien realmente dice ser",Your_roster_is_empty_add_a:"Tu lista de amigos esta vacia",new_buddy:"Nuevo amigo",is:"es",Login_options:"Opciones de login",BOSH_url:"BOSH url",Domain:"Dominio",Resource:"Recurso",On_login:"Iniciar sesión",Received_an_unencrypted_message:"Recibe un mensaje no cifrado"}}
+var jsxc;!function($){"use strict";jsxc={version:"1.1.0-beta",master:!1,role_allocation:!1,to:null,toBusy:null,toNotification:null,toNotificationDelay:500,keepalive:null,restore:!1,restoreCompleted:!1,triggeredFromBox:!1,triggeredFromElement:!1,triggeredFromLogout:!1,ls:[],storageNotConform:null,toSNC:null,bid:null,CONST:{NOTIFICATION_DEFAULT:"default",NOTIFICATION_GRANTED:"granted",NOTIFICATION_DENIED:"denied",STATUS:["offline","dnd","xa","away","chat","online"],SOUNDS:{MSG:"incomingMessage.wav",CALL:"Rotary-Phone6.mp3",NOTICE:"Ping1.mp3"},REGEX:{JID:new RegExp("\\b[^\"&'\\/:<>@\\s]+@[\\w-_.]+\\b","ig"),URL:new RegExp(/((?:https?:\/\/|www\.|([\w\-]+\.[a-zA-Z]{2,3})(?=\b))(?:(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\)([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|])?)|(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|]))?)/gi)},NS:{CARBONS:"urn:xmpp:carbons:2",FORWARD:"urn:xmpp:forward:0"}},getFormattedTime:function(unixtime){var msgDate=new Date(parseInt(unixtime)),date=("0"+msgDate.getDate()).slice(-2),month=("0"+(msgDate.getMonth()+1)).slice(-2),year=msgDate.getFullYear(),hours=("0"+msgDate.getHours()).slice(-2),minutes=("0"+msgDate.getMinutes()).slice(-2),dateNow=new Date,time=hours+":"+minutes;return dateNow.setHours(0,0,0,0),msgDate.setHours(0,0,0,0),dateNow.getTime()!==msgDate.getTime()?date+"."+month+"."+year+" "+time:time},debug:function(msg,data,level){if(level&&(msg="["+level+"] "+msg),data){jsxc.storage.getItem("debug")===!0&&console.log(msg,data);var d;try{d=$("<span>").prepend($(data).clone()).html()}catch(err){try{d=JSON.stringify(data)}catch(err2){d="see js console"}}jsxc.log=jsxc.log+msg+": "+d+"\n"}else console.log(msg),jsxc.log=jsxc.log+msg+"\n"},warn:function(msg,data){jsxc.debug(msg,data,"WARN")},error:function(msg,data){jsxc.debug(msg,data,"ERROR")},log:"",init:function(options){options&&$.extend(!0,jsxc.options,options),jsxc.options.get=function(key){var local=jsxc.storage.getUserItem("options")||{};return local[key]||jsxc.options[key]},jsxc.options.set=function(key,value){jsxc.storage.updateItem("options",key,value,!0)},jsxc.storageNotConform=jsxc.storage.getItem("storageNotConform"),null===jsxc.storageNotConform&&(jsxc.storageNotConform=2);var lang;if(lang=null!==jsxc.storage.getItem("lang")?jsxc.storage.getItem("lang"):jsxc.options.autoLang&&navigator.language?navigator.language.substr(0,2):jsxc.options.defaultLang,jsxc.l=jsxc.l10n.en,$.extend(jsxc.l,jsxc.l10n[lang]),"undefined"==typeof localStorage)return void jsxc.debug("Browser doesn't support localStorage.");jsxc.storage.getItem("debug")===!0&&(jsxc.options.otr.debug=!0),window.addEventListener("storage",jsxc.storage.onStorage,!1);var lastActivity=jsxc.storage.getItem("lastActivity")||0;if((new Date).getTime()-lastActivity<jsxc.options.loginTimeout&&(jsxc.restore=!0),jsxc.storage.getItem("rid")&&jsxc.storage.getItem("sid")&&jsxc.restore)jsxc.bid=jsxc.jidToBid(jsxc.storage.getItem("jid")),jsxc.gui.init(),null!==jsxc.options.logoutElement&&jsxc.options.logoutElement.length>0&&jsxc.options.logoutElement.one("click",function(){return jsxc.options.logoutElement=$(this),jsxc.triggeredFromLogout=!0,jsxc.xmpp.logout()}),"undefined"!=typeof jsxc.storage.getItem("alive")&&jsxc.restore?jsxc.checkMaster():jsxc.onMaster();else{if(!jsxc.options.loginForm.form||!(jsxc.el_exists(jsxc.options.loginForm.form)&&jsxc.el_exists(jsxc.options.loginForm.jid)&&jsxc.el_exists(jsxc.options.loginForm.pass)))return void(jsxc.options.displayRosterMinimized()&&(jsxc.storage.setUserItem("roster","hidden"),jsxc.gui.roster.init(),jsxc.gui.roster.noConnection()));"function"==typeof jsxc.options.formFound&&jsxc.options.formFound.call();var form=jsxc.options.loginForm.form=$(jsxc.options.loginForm.form),events=form.data("events")||{submit:[]},submits=[];$.each(events.submit,function(index,val){submits.push(val.handler)}),form.data("submits",submits),form.off("submit"),form.submit(function(){var settings=jsxc.prepareLogin();return settings===!1||"true"!==settings.xmpp.onlogin&&settings.xmpp.onlogin!==!0?!0:(jsxc.options.loginForm.triggered=!0,jsxc.xmpp.login(),!1)})}},prepareLogin:function(){var username=$(jsxc.options.loginForm.jid).val(),password=$(jsxc.options.loginForm.pass).val();if("function"!=typeof jsxc.options.loadSettings)return void jsxc.error("No loadSettings function given. Abort.");jsxc.gui.showWaitAlert(jsxc.l.Logging_in);var settings=jsxc.options.loadSettings.call(this,username,password);if(settings===!1||null===settings||"undefined"==typeof settings)return jsxc.warn("No settings provided"),!1;"string"==typeof settings.xmpp.username&&(username=settings.xmpp.username);var jid,resource=settings.xmpp.resource?"/"+settings.xmpp.resource:"",domain=settings.xmpp.domain;return jid=username.match(/@(.*)$/)?username.match(/\/(.*)$/)?username:username+resource:username+"@"+domain+resource,"function"==typeof jsxc.options.loginForm.preJid&&(jid=jsxc.options.loginForm.preJid(jid)),jsxc.bid=jsxc.jidToBid(jid),settings.xmpp.username=jid.split("@")[0],settings.xmpp.domain=jid.split("@")[1].split("/")[0],settings.xmpp.resource=jid.split("@")[1].split("/")[1]||"",$.each(settings,function(key,val){jsxc.options.set(key,val)}),jsxc.options.xmpp.jid=jid,jsxc.options.xmpp.password=password,settings},onSlave:function(){jsxc.debug("I am the slave."),jsxc.role_allocation=!0,jsxc.restoreRoster(),jsxc.restoreWindows(),jsxc.restoreCompleted=!0,$(document).trigger("restoreCompleted.jsxc")},onMaster:function(){jsxc.debug("I am master."),jsxc.master=!0,jsxc.storage.setItem("alive",0),jsxc.storage.setItem("alive_busy",0),jsxc.storage.getUserItem("windowlist")||jsxc.storage.setUserItem("windowlist",[]),jsxc.startKeepAlive(),jsxc.options.get("otr").enable?jsxc.otr.createDSA():jsxc._onMaster()},_onMaster:function(){if(jsxc.role_allocation&&$.each(jsxc.storage.getUserItem("windowlist"),function(index,val){jsxc.otr.create(val)}),jsxc.role_allocation=!0,jsxc.restore&&!jsxc.restoreCompleted&&(jsxc.restoreRoster(),jsxc.restoreWindows(),jsxc.restoreCompleted=!0,$(document).trigger("restoreCompleted.jsxc")),jsxc.restore){var noti=jsxc.storage.getUserItem("notification")||2;jsxc.options.notification&&noti>0&&jsxc.notification.hasSupport()?jsxc.notification.hasPermission()?jsxc.notification.init():jsxc.notification.prepareRequest():jsxc.options.notification=!1}$(document).on("connectionReady.jsxc",function(){jsxc.gui.updateAvatar($("#jsxc_avatar"),jsxc.storage.getItem("jid"),"own")}),jsxc.xmpp.login()},checkMaster:function(){jsxc.debug("check master"),jsxc.to=window.setTimeout(jsxc.onMaster,1e3),jsxc.storage.ink("alive")},startKeepAlive:function(){jsxc.keepalive=window.setInterval(jsxc.keepAlive,jsxc.options.timeout-1e3)},keepAlive:function(){jsxc.storage.ink("alive"),jsxc.role_allocation&&jsxc.storage.setItem("lastActivity",(new Date).getTime())},keepBusyAlive:function(){jsxc.toBusy&&window.clearTimeout(jsxc.toBusy),jsxc.keepalive&&window.clearInterval(jsxc.keepalive),jsxc.storage.ink("alive_busy"),jsxc.toBusy=window.setTimeout(jsxc.startKeepAlive,jsxc.options.busyTimeout-1e3)},random:function(max){return Math.floor(Math.random()*max)},el_exists:function(selector){return $(selector).length>0},jidToCid:function(jid){jsxc.warn("jsxc.jidToCid is deprecated!");var cid=Strophe.getBareJidFromJid(jid).replace("@","-").replace(/\./g,"-").toLowerCase();return cid},jidToBid:function(jid){return Strophe.getBareJidFromJid(jid).toLowerCase()},restoreRoster:function(){var buddies=jsxc.storage.getUserItem("buddylist");return buddies&&0!==buddies.length?($.each(buddies,function(index,value){jsxc.gui.roster.add(value)}),void $(document).trigger("cloaded.roster.jsxc")):(jsxc.debug("No saved buddylist."),void jsxc.gui.roster.empty())},restoreWindows:function(){var windows=jsxc.storage.getUserItem("windowlist");null!==windows&&$.each(windows,function(index,bid){var window=jsxc.storage.getUserItem("window",bid);return window?(jsxc.gui.window.init(bid),window.minimize?jsxc.gui.window.hide(bid):jsxc.gui.window.show(bid),void jsxc.gui.window.setText(bid,window.text)):(jsxc.debug("Associated window-element is missing: "+bid),!0)})},submitLoginForm:function(){var form=jsxc.options.loginForm.form.off("submit"),submits=form.data("submits")||[];$.each(submits,function(index,val){form.submit(val)}),form.find("#submit").length>0?form.find("#submit").click():form.submit()},escapeHTML:function(text){return text=text.replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">"),text.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},removeHTML:function(text){return $("<span>").html(text).text()},switchEvents:function(obj){var ns=Math.random().toString(36).substr(2,12),self=this;return $.each(obj,function(key,val){$(document).one(key+"."+ns,function(){$(document).off("."+ns),val.apply(self,arguments)})}),ns},isHidden:function(){var hidden=!1;return"undefined"!=typeof document.hidden?hidden=document.hidden:"undefined"!=typeof document.webkitHidden?hidden=document.webkitHidden:"undefined"!=typeof document.mozHidden?hidden=document.mozHidden:"undefined"!=typeof document.msHidden&&(hidden=document.msHidden),hidden&&jsxc.master?jsxc.storage.ink("hidden",0):hidden||jsxc.master||jsxc.storage.ink("hidden"),hidden},translate:function(text){return text.replace(/%%([a-zA-Z0-9_-}{ .!,?/'@]+)%%/g,function(s,key){var k=key.replace(/ /gi,"_").replace(/[.!,?/'@]/g,"");return jsxc.l[k]||jsxc.warn("No translation for: "+k),jsxc.l[k]||key.replace(/_/g," ")})},exec:function(fnName,fnParams){var i,fnList=fnName.split("."),fn=jsxc[fnList[0]];for(i=1;i<fnList.length;i++)fn=fn[fnList[i]];return"function"==typeof fn?fn.apply(null,fnParams):void 0}},jsxc.options={app_name:"web applications",timeout:3e3,busyTimeout:15e3,otr:{enable:!0,ERROR_START_AKE:!1,debug:!1,SEND_WHITESPACE_TAG:!0,WHITESPACE_START_AKE:!0},xmpp:{url:null,jid:null,domain:null,password:null,overwrite:!1,onlogin:!0},priority:{online:0,chat:0,away:0,xa:0,dnd:0},loginForm:{form:null,jid:null,pass:null,preJid:function(jid){return jid},onConnected:"submit",onAuthFail:"submit"},logoutElement:null,numberOfMsg:10,defaultLang:"en",autoLang:!0,rosterAppend:"body",notification:!0,popupDuration:6e3,root:"",loginTimeout:6e5,displayRosterMinimized:function(){return!1},hideOffline:!1,muteNotification:!1,defaultAvatar:function(){},loadSettings:function(){},saveSettinsPermanent:function(){},carbons:{enable:!1}},jsxc.gui={emotions:[["O:-) O:)","angel"],[">:-( >:( &gt;:-( &gt;:(","angry"],[":-) :)","smile"],[":-D :D","grin"],[":-( :(","sad"],[";-) ;)","wink"],[":-P :P","tonguesmile"],["=-O","surprised"],[":kiss: :-*","kiss"],["8-) :cool:","sunglassess"],[":'-( :'( :&amp;apos;-(","crysad"],[":-/","doubt"],[":-X :X","zip"],[":yes:","thumbsup"],[":no:","thumbsdown"],[":beer:","beer"],[":devil:","devil"],[":kiss: :kissing:","kissing"],["@->-- :rose: @-&gt;--","rose"],[":music:","music"],[":love:","love"],[":zzz:","tired"]],queryActions:{message:function(jid,params){var win=jsxc.gui.window.open(jsxc.jidToBid(jid));params&&"string"==typeof params.body&&win.find(".jsxc_textinput").val(params.body)},remove:function(jid){jsxc.gui.showRemoveDialog(jsxc.jidToBid(jid))},subscribe:function(jid,params){jsxc.gui.showContactDialog(jid),params&&$("#jsxc_alias").val(params.name)},vcard:function(jid){jsxc.gui.showVcard(jid)}},init:function(){$("body").append($(jsxc.gui.template.get("windowList"))),$(window).resize(jsxc.gui.updateWindowListSB),$("#jsxc_windowList").resize(jsxc.gui.updateWindowListSB),$("#jsxc_windowListSB .jsxc_scrollLeft").click(function(){jsxc.gui.scrollWindowListBy(-200)}),$("#jsxc_windowListSB .jsxc_scrollRight").click(function(){jsxc.gui.scrollWindowListBy(200)}),$("#jsxc_windowList").on("wheel",function(ev){$("#jsxc_windowList").data("isOver")&&jsxc.gui.scrollWindowListBy(ev.originalEvent.wheelDelta>0?200:-200)}),jsxc.gui.tooltip("#jsxc_windowList"),jsxc.el_exists("#jsxc_roster")||jsxc.gui.roster.init(),$.each(jsxc.gui.emotions,function(i,val){var reg=val[0].replace(/(\/|\||\*|\.|\+|\?|\^|\$|\(|\)|\[|\]|\{|\})/g,"\\$1");reg="("+reg.split(" ").join("|")+")",jsxc.gui.emotions[i][2]=new RegExp(reg,"g")}),jsxc.gui.windowTemplate=$(jsxc.gui.template.get("chatWindow")),jsxc.gui.buddyTemplate=$(jsxc.gui.template.get("rosterBuddy"))},tooltip:function(selector){$(selector).tooltip({show:{delay:600},content:function(){return $(this).attr("title").replace(/\n/g,"<br />")}})},update:function(bid){var data=jsxc.storage.getUserItem("buddy",bid);if(!data)return void jsxc.debug("No data for "+bid);var ri=jsxc.gui.roster.getItem(bid),we=jsxc.gui.window.get(bid),ue=ri.add(we),spot=$('.jsxc_spot[data-bid="'+bid+'"]');switch(ri.data(data),ue.add(spot).removeClass("jsxc_"+jsxc.CONST.STATUS.join(" jsxc_")).addClass("jsxc_"+jsxc.CONST.STATUS[data.status]),ue.find(".jsxc_name").add(spot).text(data.name).attr("title",jsxc.l.is+" "+jsxc.CONST.STATUS[data.status]),data.msgstate){case 0:we.find(".jsxc_transfer").removeClass("jsxc_enc jsxc_fin").attr("title",jsxc.l.your_connection_is_unencrypted),we.find(".jsxc_settings .jsxc_verification").addClass("jsxc_disabled"),we.find(".jsxc_settings .jsxc_transfer").text(jsxc.l.start_private);break;case 1:we.find(".jsxc_transfer").addClass("jsxc_enc").attr("title",jsxc.l.your_connection_is_encrypted),we.find(".jsxc_settings .jsxc_verification").removeClass("jsxc_disabled"),we.find(".jsxc_settings .jsxc_transfer").text(jsxc.l.close_private);break;case 2:we.find(".jsxc_settings .jsxc_verification").addClass("jsxc_disabled"),we.find(".jsxc_transfer").removeClass("jsxc_enc").addClass("jsxc_fin").attr("title",jsxc.l.your_buddy_closed_the_private_connection),we.find(".jsxc_settings .jsxc_transfer").text(jsxc.l.close_private)}data.trust?we.find(".jsxc_transfer").addClass("jsxc_trust").attr("title",jsxc.l.your_buddy_is_verificated):we.find(".jsxc_transfer").removeClass("jsxc_trust"),data.sub&&"both"!==data.sub?ue.addClass("jsxc_oneway"):ue.removeClass("jsxc_oneway");var info="<b>"+Strophe.getBareJidFromJid(data.jid)+"</b>\n";info+=jsxc.translate("%%Subscription%%: %%"+data.sub+"%%\n"),info+=jsxc.translate("%%Status%%: %%"+jsxc.CONST.STATUS[data.status]+"%%"),ri.find(".jsxc_name").attr("title",info),data.avatar&&data.avatar.length>0?jsxc.gui.updateAvatar(ue,data.jid,data.avatar):jsxc.options.defaultAvatar.call(ue,data.jid)},updateAvatar:function(el,jid,aid){if("undefined"==typeof aid)return void("function"==typeof jsxc.options.defaultAvatar&&jsxc.options.defaultAvatar.call(el,jid));var avatarSrc=jsxc.storage.getUserItem("avatar",aid),setAvatar=function(src){return 0===src||"0"===src?void jsxc.options.defaultAvatar.call(el,jid):(el.find(".jsxc_avatar").removeAttr("style"),void el.find(".jsxc_avatar").css({"background-image":"url("+src+")","text-indent":"999px"}))};null!==avatarSrc?setAvatar(avatarSrc):jsxc.xmpp.conn.vcard.get(function(stanza){jsxc.debug("vCard",stanza);var src,vCard=$(stanza).find("vCard > PHOTO");if(0===vCard.length)jsxc.debug("No photo provided"),src="0";else if(vCard.find("EXTVAL").length>0)src=vCard.find("EXTVAL").text();else{var img=vCard.find("BINVAL").text(),type=vCard.find("TYPE").text();src="data:"+type+";base64,"+img}src=src.replace(/[\t\r\n\f]/gi,""),jsxc.storage.setUserItem("avatar",aid,src),setAvatar(src)},Strophe.getBareJidFromJid(jid),function(msg){jsxc.warn("Could not load vcard.",msg),jsxc.storage.setUserItem("avatar",aid,0),setAvatar(0)})},updateWindowListSB:function(){$("#jsxc_windowList>ul").width()>$("#jsxc_windowList").width()?$("#jsxc_windowListSB > div").removeClass("jsxc_disabled"):($("#jsxc_windowListSB > div").addClass("jsxc_disabled"),$("#jsxc_windowList>ul").css("right","0px"))},scrollWindowListBy:function(offset){var scrollWidth=$("#jsxc_windowList>ul").width(),width=$("#jsxc_windowList").width(),el=$("#jsxc_windowList>ul"),right=parseInt(el.css("right"))-offset,padding=$("#jsxc_windowListSB").width();width>scrollWidth||(right>0&&(right=0),width-scrollWidth-padding>right&&(right=width-scrollWidth-padding),el.css("right",right+"px"))},getWindow:function(bid){return jsxc.warn("jsxc.gui.getWindow is deprecated!"),jsxc.gui.window.get(bid)},toggleList:function(){var self=$(this);self.disableSelection();var ul=self.find("ul"),slideUp=null;slideUp=function(){ul.slideUp({complete:function(){self.removeClass("jsxc_opened")}}),$("body").off("click",null,slideUp)},$(this).click(function(){return ul.is(":hidden")?($("body").click(),$("body").one("click",slideUp)):$("body").off("click",null,slideUp),ul.slideToggle(),window.clearTimeout(ul.data("timer")),self.toggleClass("jsxc_opened"),!1}).mouseleave(function(){ul.data("timer",window.setTimeout(slideUp,2e3))}).mouseenter(function(){window.clearTimeout(ul.data("timer"))})},showLoginBox:function(){$(document).on("complete.dialog.jsxc",function(){$("#jsxc_password").focus()}),jsxc.gui.dialog.open(jsxc.gui.template.get("loginBox")),$("#jsxc_dialog").find("form").submit(function(){$(this).find("input[type=submit]").prop("disabled",!0),jsxc.options.loginForm.form=$(this),jsxc.options.loginForm.jid=$(this).find("#jsxc_username"),jsxc.options.loginForm.pass=$(this).find("#jsxc_password");var settings=jsxc.prepareLogin();return jsxc.triggeredFromBox=!0,jsxc.options.loginForm.triggered=!1,settings===!1?jsxc.gui.showAuthFail():jsxc.xmpp.login(),!1})},showFingerprints:function(bid){jsxc.gui.dialog.open(jsxc.gui.template.get("fingerprintsDialog",bid))},showVerification:function(bid){return $("#jsxc_dialog").length>0?void setTimeout(function(){jsxc.gui.showVerification(bid)},3e3):jsxc.storage.getUserItem("buddy",bid).msgstate!==OTR.CONST.MSGSTATE_ENCRYPTED?void jsxc.warn("Connection not encrypted"):(jsxc.gui.dialog.open(jsxc.gui.template.get("authenticationDialog",bid)),$("#jsxc_dialog > div:gt(0)").hide(),$("#jsxc_dialog select").change(function(){$("#jsxc_dialog > div:gt(0)").hide(),$("#jsxc_dialog > div:eq("+$(this).prop("selectedIndex")+")").slideDown({complete:function(){jsxc.gui.dialog.resize()}})}),$("#jsxc_dialog > div:eq(1) a.creation").click(function(){jsxc.master&&(jsxc.otr.objects[bid].trust=!0),jsxc.storage.updateUserItem("buddy",bid,"trust",!0),jsxc.gui.dialog.close(),jsxc.storage.updateUserItem("buddy",bid,"trust",!0),jsxc.gui.window.postMessage(bid,"sys",jsxc.l.conversation_is_now_verified),jsxc.gui.update(bid)}),$("#jsxc_dialog > div:eq(2) a.creation").click(function(){var div=$("#jsxc_dialog > div:eq(2)"),sec=div.find("#jsxc_secret2").val(),quest=div.find("#jsxc_quest").val();return""===sec||""===quest?void div.find('input[value=""]').addClass("jsxc_invalid").keyup(function(){$(this).val().match(/.*/)&&$(this).removeClass("jsxc_invalid")}):(jsxc.master?jsxc.otr.sendSmpReq(bid,sec,quest):jsxc.storage.setUserItem("smp_"+bid,{sec:sec,quest:quest}),jsxc.gui.dialog.close(),void jsxc.gui.window.postMessage(bid,"sys",jsxc.l.authentication_query_sent))}),void $("#jsxc_dialog > div:eq(3) .creation").click(function(){var div=$("#jsxc_dialog > div:eq(3)"),sec=div.find("#jsxc_secret").val();return""===sec?void div.find("#jsxc_secret").addClass("jsxc_invalid").keyup(function(){$(this).val().match(/.*/)&&$(this).removeClass("jsxc_invalid")}):(jsxc.master?jsxc.otr.sendSmpReq(bid,sec):jsxc.storage.setUserItem("smp_"+bid,{sec:sec,quest:null}),jsxc.gui.dialog.close(),void jsxc.gui.window.postMessage(bid,"sys",jsxc.l.authentication_query_sent))}))},showApproveDialog:function(from){jsxc.gui.dialog.open(jsxc.gui.template.get("approveDialog"),{noClose:!0}),$("#jsxc_dialog .jsxc_their_jid").text(Strophe.getBareJidFromJid(from)),$("#jsxc_dialog .jsxc_deny").click(function(ev){ev.stopPropagation(),jsxc.xmpp.resFriendReq(from,!1),jsxc.gui.dialog.close()}),$("#jsxc_dialog .jsxc_approve").click(function(ev){ev.stopPropagation();var data=jsxc.storage.getUserItem("buddy",jsxc.jidToBid(from));jsxc.xmpp.resFriendReq(from,!0),data&&"from"!==data.sub||$(document).one("close.dialog.jsxc",function(){jsxc.gui.showContactDialog(from)}),jsxc.gui.dialog.close()})},showContactDialog:function(username){jsxc.gui.dialog.open(jsxc.gui.template.get("contactDialog")),username&&$("#jsxc_username").val(username),$("#jsxc_dialog form").submit(function(){var username=$("#jsxc_username").val(),alias=$("#jsxc_alias").val();return username.match(/@(.*)$/)||(username+="@"+Strophe.getDomainFromJid(jsxc.storage.getItem("jid"))),username&&username.match(jsxc.CONST.REGEX.JID)?(jsxc.xmpp.addBuddy(username,alias),jsxc.gui.dialog.close(),!1):($("#jsxc_username").addClass("jsxc_invalid").keyup(function(){$(this).val().match(jsxc.CONST.REGEX.JID)&&$(this).removeClass("jsxc_invalid")}),!1)})},showRemoveDialog:function(bid){jsxc.gui.dialog.open(jsxc.gui.template.get("removeDialog",bid));var data=jsxc.storage.getUserItem("buddy",bid);$("#jsxc_dialog .creation").click(function(ev){ev.stopPropagation(),jsxc.master?jsxc.xmpp.removeBuddy(data.jid):jsxc.storage.setUserItem("deletebuddy",bid,{jid:data.jid}),jsxc.gui.dialog.close()})},showWaitAlert:function(msg){jsxc.gui.dialog.open(jsxc.gui.template.get("waitAlert",null,msg),{noClose:!0})},showAlert:function(msg){jsxc.gui.dialog.open(jsxc.gui.template.get("alert",null,msg))},showAuthFail:function(){jsxc.gui.dialog.open(jsxc.gui.template.get("authFailDialog")),jsxc.options.loginForm.triggered!==!1&&$("#jsxc_dialog .jsxc_cancel").hide(),$("#jsxc_dialog .creation").click(function(){jsxc.gui.dialog.close()}),$("#jsxc_dialog .jsxc_cancel").click(function(){jsxc.submitLoginForm()})},showConfirmDialog:function(msg,confirm,dismiss){jsxc.gui.dialog.open(jsxc.gui.template.get("confirmDialog",null,msg),{noClose:!0}),confirm&&$("#jsxc_dialog .creation").click(confirm),dismiss&&$("#jsxc_dialog .jsxc_cancel").click(dismiss)},showAboutDialog:function(){jsxc.gui.dialog.open(jsxc.gui.template.get("aboutDialog")),$("#jsxc_dialog .jsxc_debuglog").click(function(){jsxc.gui.showDebugLog()})},showDebugLog:function(){var userInfo="<h3>User information</h3>";if(navigator){var key;for(key in navigator)navigator.hasOwnProperty(key)&&"string"==typeof navigator[key]&&(userInfo+="<b>"+key+":</b> "+navigator[key]+"<br />")}window.screen&&(userInfo+="<b>Height:</b> "+window.screen.height+"<br />",userInfo+="<b>Width:</b> "+window.screen.width+"<br />"),userInfo+="<b>jsxc version:</b> "+jsxc.version+"<br />",jsxc.gui.dialog.open('<div class="jsxc_log">'+userInfo+"<h3>Log</h3><pre>"+jsxc.escapeHTML(jsxc.log)+"</pre></div>")},showVcard:function(jid){var bid=jsxc.jidToBid(jid);jsxc.gui.dialog.open(jsxc.gui.template.get("vCard",bid));var data=jsxc.storage.getUserItem("buddy",bid);if(data){var i,j,res,identities,cap,client,identity=null;for(i=0;i<data.res.length;i++){for(res=data.res[i],identities=[],cap=jsxc.xmpp.getCapabilitiesByJid(bid+"/"+res),null!==cap&&null!==cap.identities&&(identities=cap.identities),client="",j=0;j<identities.length;j++)identity=identities[j],"client"===identity.category&&(""!==client&&(client+=",\n"),client+=identity.name+" ("+identity.type+")");var status=jsxc.storage.getUserItem("res",bid)[res];$("#jsxc_dialog ul.jsxc_vCard").append('<li class="jsxc_sep"><strong>'+jsxc.translate("%%Resource%%")+":</strong> "+res+"</li>"),$("#jsxc_dialog ul.jsxc_vCard").append("<li><strong>"+jsxc.translate("%%Client%%")+":</strong> "+client+"</li>"),$("#jsxc_dialog ul.jsxc_vCard").append("<li>"+jsxc.translate("<strong>%%Status%%:</strong> %%"+jsxc.CONST.STATUS[status]+"%%")+"</li>")}}var printProp=function(el,depth){var content="";return el.each(function(){var item=$(this),children=$(this).children();content+="<li>";var prop=jsxc.translate("%%"+item[0].tagName+"%%");" "!==prop&&(content+="<strong>"+prop+":</strong> "),"PHOTO"===item[0].tagName||(children.length>0?(content+="<ul>",content+=printProp(children,depth+1),content+="</ul>"):""!==item.text()&&(content+=jsxc.escapeHTML(item.text()))),content+="</li>",0===depth&&$("#jsxc_dialog ul.jsxc_vCard").length>0&&($("#jsxc_dialog ul.jsxc_vCard li.jsxc_sep:first").length>0?$("#jsxc_dialog ul.jsxc_vCard li.jsxc_sep:first").before(content):$("#jsxc_dialog ul.jsxc_vCard").append(content),content="")}),depth>0?content:void 0},failedToLoad=function(){if(0!==$("#jsxc_dialog ul.jsxc_vCard").length){$("#jsxc_dialog p").remove();var content="<p>";content+=jsxc.translate("%%Sorry, your buddy doesn't provide any information.%%"),content+="</p>",$("#jsxc_dialog").append(content)}};jsxc.xmpp.loadVcard(bid,function(stanza){if(0!==$("#jsxc_dialog ul.jsxc_vCard").length){$("#jsxc_dialog p").remove();var photo=$(stanza).find("vCard > PHOTO");if(photo.length>0){var img=photo.find("BINVAL").text(),type=photo.find("TYPE").text(),src="data:"+type+";base64,"+img;photo.find("EXTVAL").length>0&&(src=photo.find("EXTVAL").text()),src=src.replace(/[\t\r\n\f]/gi,"");var img_el=$('<img class="jsxc_vCard" alt="avatar" />');img_el.attr("src",src),$("#jsxc_dialog h3").before(img_el)}return 0===$(stanza).find("vCard").length||1===$(stanza).find("vcard > *").length&&1===photo.length?void failedToLoad():void printProp($(stanza).find("vcard > *"),0)}},failedToLoad)},showSettings:function(){jsxc.gui.dialog.open(jsxc.gui.template.get("settings")),("false"===jsxc.options.get("xmpp").overwrite||jsxc.options.get("xmpp").overwrite===!1)&&$(".jsxc_fieldsetXmpp").hide(),$("#jsxc_dialog form").each(function(){var self=$(this);self.find('input[type!="submit"]').each(function(){var id=this.id.split("-"),prop=id[0],key=id[1],type=this.type,data=jsxc.options.get(prop);data&&"undefined"!=typeof data[key]&&("checkbox"===type?"false"!==data[key]&&data[key]!==!1&&(this.checked="checked"):$(this).val(data[key]))})}),$("#jsxc_dialog form").submit(function(){var self=$(this),data={};self.find('input[type!="submit"]').each(function(){var val,id=this.id.split("-"),prop=id[0],key=id[1],type=this.type;val="checkbox"===type?this.checked:$(this).val(),data[prop]||(data[prop]={}),data[prop][key]=val}),$.each(data,function(key,val){jsxc.options.set(key,val)});var err=jsxc.options.saveSettinsPermanent.call(this,data);return"string"==typeof self.attr("data-onsubmit")&&jsxc.exec(self.attr("data-onsubmit"),[err]),setTimeout(function(){self.find('input[type="submit"]').effect("highlight",{color:err?"green":"red"},4e3)},200),!1})},showRequestNotification:function(){jsxc.gui.showConfirmDialog(jsxc.translate("%%Should we notify you_%%"),function(){jsxc.gui.dialog.open(jsxc.gui.template.get("pleaseAccept"),{noClose:!0}),jsxc.notification.requestPermission()},function(){$(document).trigger("notificationfailure.jsxc")})},showUnknownSender:function(bid){jsxc.gui.showConfirmDialog(jsxc.translate("%%You_received_a_message_from_an_unknown_sender%% ("+bid+"). %%Do_you_want_to_display_them%%"),function(){jsxc.gui.dialog.close(),jsxc.storage.saveBuddy(bid,{jid:bid,name:bid,status:0,sub:"none",res:[]}),jsxc.gui.window.open(bid)},function(){jsxc.storage.removeUserItem("chat",bid)})},changePresence:function(pres,external){external!==!0&&jsxc.storage.setUserItem("presence",pres),jsxc.master&&jsxc.xmpp.sendPres(),$("#jsxc_presence > span").text($("#jsxc_presence > ul .jsxc_"+pres).text()),jsxc.gui.updatePresence("own",pres)},updatePresence:function(bid,pres){"own"===bid&&("dnd"===pres?($("#jsxc_menu .jsxc_muteNotification").addClass("jsxc_disabled"),jsxc.notification.muteSound(!0)):($("#jsxc_menu .jsxc_muteNotification").removeClass("jsxc_disabled"),jsxc.options.get("muteNotification")||jsxc.notification.unmuteSound(!0))),$('.jsxc_presence[data-bid="'+bid+'"]').removeClass("jsxc_"+jsxc.CONST.STATUS.join(" jsxc_")).addClass("jsxc_"+pres)},unreadMsg:function(bid){var win=jsxc.gui.window.get(bid);jsxc.gui.roster.getItem(bid).add(win).addClass("jsxc_unreadMsg"),jsxc.storage.updateUserItem("window",bid,"unread",!0)},readMsg:function(bid){var win=jsxc.gui.window.get(bid);win.hasClass("jsxc_unreadMsg")&&(jsxc.gui.roster.getItem(bid).add(win).removeClass("jsxc_unreadMsg"),jsxc.storage.updateUserItem("window",bid,"unread",!1))},detectUriScheme:function(container){container=$(container?container:"body"),container.find("a[href^='xmpp:']").each(function(){var action,element=$(this),href=element.attr("href").replace(/^xmpp:/,""),jid=href.split("?")[0],params={};if(href.indexOf("?")<0)action="message";else{var pairs=href.substring(href.indexOf("?")+1).split(";");action=pairs[0];var i,key,value;for(i=1;i<pairs.length;i++)key=pairs[i].split("=")[0],value=pairs[i].indexOf("=")>0?pairs[i].substring(pairs[i].indexOf("=")+1):null,params[decodeURIComponent(key)]=decodeURIComponent(value)}"function"==typeof jsxc.gui.queryActions[action]&&(element.addClass("jsxc_uriScheme jsxc_uriScheme_"+action),element.off("click").click(function(ev){return ev.stopPropagation(),jsxc.gui.queryActions[action].call(jsxc,jid,params),!1}))})},detectEmail:function(container){container=$(container?container:"body"),container.find('a[href^="mailto:"]').each(function(){var spot=$("<span>X</span>").addClass("jsxc_spot"),href=$(this).attr("href").replace(/^ *mailto:/,"").trim();if(""!==href&&href!==Strophe.getBareJidFromJid(jsxc.storage.getItem("jid"))){var bid=jsxc.jidToBid(href),self=$(this),s=self.prev();s.hasClass("jsxc_spot")||(s=spot.clone().attr("data-bid",bid),self.before(s)),s.off("click"),jsxc.storage.getUserItem("buddy",bid)?(jsxc.gui.update(bid),s.click(function(){return jsxc.gui.window.open(bid),!1})):s.click(function(){return jsxc.gui.showContactDialog(href),!1})}})}},jsxc.gui.roster={init:function(){$(jsxc.options.rosterAppend+":first").append($(jsxc.gui.template.get("roster"))),jsxc.options.get("hideOffline")&&($("#jsxc_menu .jsxc_hideOffline").text(jsxc.translate("%%Show offline%%")),$("#jsxc_buddylist").addClass("jsxc_hideOffline")),$("#jsxc_menu .jsxc_settings").click(function(){jsxc.gui.showSettings()}),$("#jsxc_menu .jsxc_hideOffline").click(function(){var hideOffline=!jsxc.options.get("hideOffline");hideOffline?$("#jsxc_buddylist").addClass("jsxc_hideOffline"):$("#jsxc_buddylist").removeClass("jsxc_hideOffline"),$(this).text(jsxc.translate(hideOffline?"%%Show offline%%":"%%Hide offline%%")),jsxc.options.set("hideOffline",hideOffline)}),jsxc.options.get("muteNotification")&&jsxc.notification.muteSound(),$("#jsxc_menu .jsxc_muteNotification").click(function(){if("dnd"!==jsxc.storage.getUserItem("presence")){var mute=!jsxc.options.get("muteNotification");mute?jsxc.notification.muteSound():jsxc.notification.unmuteSound()}}),$("#jsxc_roster .jsxc_addBuddy").click(function(){jsxc.gui.showContactDialog()}),$("#jsxc_roster .jsxc_onlineHelp").click(function(){window.open("http://www.jsxc.org/manual.html","onlineHelp")}),$("#jsxc_roster .jsxc_about").click(function(){jsxc.gui.showAboutDialog()}),$("#jsxc_toggleRoster").click(function(){jsxc.gui.roster.toggle()}),$("#jsxc_presence > ul > li").click(function(){var self=$(this);jsxc.gui.changePresence(self.data("pres"))}),$("#jsxc_buddylist").slimScroll({distance:"3px",height:$("#jsxc_roster").height()-31+"px",width:$("#jsxc_buddylist").width()+"px",color:"#fff",opacity:"0.5"}),$("#jsxc_roster > .jsxc_bottom > div").each(function(){jsxc.gui.toggleList.call($(this))}),"hidden"===jsxc.storage.getUserItem("roster")&&($("#jsxc_roster").css("right","-200px"),$("#jsxc_windowList > ul").css("paddingRight","10px"));var pres=jsxc.storage.getUserItem("presence")||"online";$("#jsxc_presence > span").text($("#jsxc_presence > ul .jsxc_"+pres).text()),jsxc.gui.updatePresence("own",pres),jsxc.gui.tooltip("#jsxc_roster"),jsxc.notice.load(),$(document).trigger("ready.roster.jsxc")},add:function(bid){var data=jsxc.storage.getUserItem("buddy",bid),bud=jsxc.gui.buddyTemplate.clone().attr("data-bid",bid).attr("data-type",data.type||"chat");jsxc.gui.roster.insert(bid,bud),bud.click(function(){jsxc.gui.window.open(bid)}),bud.find(".jsxc_chaticon").click(function(){jsxc.gui.window.open(bid)}),bud.find(".jsxc_rename").click(function(){return jsxc.gui.roster.rename(bid),!1}),bud.find(".jsxc_delete").click(function(){return jsxc.gui.showRemoveDialog(bid),!1});var expandClick=function(){return bud.trigger("extra.jsxc"),bud.toggleClass("jsxc_expand"),jsxc.gui.updateAvatar(bud,data.jid,data.avatar),!1};bud.find(".jsxc_control").click(expandClick),bud.dblclick(expandClick),bud.find(".jsxc_vcardicon").click(function(){return jsxc.gui.showVcard(data.jid),!1
+}),jsxc.gui.update(bid),$("#jsxc_buddylist").slimScroll({scrollTo:"0px"}),$(document).trigger("add.roster.jsxc",[bid,data,bud])},getItem:function(bid){return $("#jsxc_buddylist > li[data-bid='"+bid+"']")},insert:function(bid,li){var data=jsxc.storage.getUserItem("buddy",bid),listElements=$("#jsxc_buddylist > li"),insert=!1,status="both"===data.sub?data.status:-1;listElements.each(function(){var thisStatus="both"===$(this).data("sub")?$(this).data("status"):-1;return $(this).data("name").toLowerCase()>data.name.toLowerCase()&&thisStatus===status||status>thisStatus?($(this).before(li),insert=!0,!1):void 0}),insert||li.appendTo("#jsxc_buddylist")},reorder:function(bid){jsxc.gui.roster.insert(bid,jsxc.gui.roster.remove(bid))},remove:function(bid){return jsxc.gui.roster.getItem(bid).detach()},purge:function(bid){jsxc.master&&(jsxc.storage.removeUserItem("buddy",bid),jsxc.storage.removeUserItem("otr",bid),jsxc.storage.removeUserItem("otr_version_"+bid),jsxc.storage.removeUserItem("chat",bid),jsxc.storage.removeUserItem("window",bid),jsxc.storage.removeUserElement("buddylist",bid),jsxc.storage.removeUserElement("windowlist",bid)),jsxc.gui.window._close(bid),jsxc.gui.roster.remove(bid)},rename:function(bid){var name=jsxc.gui.roster.getItem(bid).find(".jsxc_name"),options=jsxc.gui.roster.getItem(bid).find(".jsxc_options, .jsxc_control"),input=$('<input type="text" name="name"/>');options.hide(),name=name.replaceWith(input),input.val(name.text()),input.keypress(function(ev){13===ev.which&&(options.show(),input.replaceWith(name),jsxc.gui.roster._rename(bid,$(this).val()),$("html").off("click"))}),input.click(function(){return!1}),$("html").one("click",function(){options.show(),input.replaceWith(name),jsxc.gui.roster._rename(bid,input.val())})},_rename:function(bid,newname){if(jsxc.master){var d=jsxc.storage.getUserItem("buddy",bid),iq=$iq({type:"set"}).c("query",{xmlns:"jabber:iq:roster"}).c("item",{jid:Strophe.getBareJidFromJid(d.jid),name:newname});jsxc.xmpp.conn.sendIQ(iq)}jsxc.storage.updateUserItem("buddy",bid,"name",newname),jsxc.gui.update(bid)},toggle:function(d){var duration=d||500,roster=$("#jsxc_roster"),wl=$("#jsxc_windowList"),roster_width=roster.innerWidth(),roster_right=parseFloat($("#jsxc_roster").css("right")),state=0>roster_right?"shown":"hidden";jsxc.storage.setUserItem("roster",state),roster.animate({right:-1*(roster_width+roster_right)+"px"},duration),wl.animate({right:10-roster_right+"px"},duration),$(document).trigger("toggle.roster.jsxc",[state,duration])},noConnection:function(){$("#jsxc_roster").addClass("jsxc_noConnection"),$("#jsxc_roster").append($("<p>"+jsxc.l.no_connection+"</p>").append(" <a>"+jsxc.l.relogin+"</a>").click(function(){jsxc.gui.showLoginBox()}))},empty:function(){var text=$("<p>"+jsxc.l.Your_roster_is_empty_add_a+"</p>"),link=$("<a>"+jsxc.l.new_buddy+"</a>");link.click(function(){jsxc.gui.showContactDialog()}),text.append(link),text.append("."),$("#jsxc_roster").prepend(text)}},jsxc.gui.dialog={open:function(data,o){var opt=o||{},options={};return options={onComplete:function(){$("#jsxc_dialog .jsxc_close").click(function(ev){ev.preventDefault(),jsxc.gui.dialog.close()}),options.closeButton===!1&&$("#cboxClose").hide(),$.colorbox.resize(),$(document).trigger("complete.dialog.jsxc")},onClosed:function(){$(document).trigger("close.dialog.jsxc")},onCleanup:function(){$(document).trigger("cleanup.dialog.jsxc")},opacity:.5},opt.noClose&&(options.overlayClose=!1,options.escKey=!1,options.closeButton=!1,delete opt.noClose),$.extend(options,opt),options.html='<div id="jsxc_dialog">'+data+"</div>",$.colorbox(options),$("#jsxc_dialog")},close:function(){jsxc.debug("close dialog"),$.colorbox.close()},resize:function(options){$.colorbox.resize(options)}},jsxc.gui.window={init:function(bid){if(jsxc.gui.window.get(bid).length>0)return jsxc.gui.window.get(bid);var win=jsxc.gui.windowTemplate.clone().attr("data-bid",bid).hide().appendTo("#jsxc_windowList > ul").show("slow"),data=jsxc.storage.getUserItem("buddy",bid);if(win.data("jid",data.jid),jsxc.gui.toggleList.call(win.find(".jsxc_settings")),win.find(".jsxc_verification").click(function(){jsxc.gui.showVerification(bid)}),win.find(".jsxc_fingerprints").click(function(){jsxc.gui.showFingerprints(bid)}),win.find(".jsxc_transfer").click(function(){jsxc.otr.toggleTransfer(bid)}),win.find(".jsxc_bar").click(function(){jsxc.gui.window.toggle(bid)}),win.find(".jsxc_close").click(function(){jsxc.gui.window.close(bid)}),win.find(".jsxc_clear").click(function(){jsxc.gui.window.clear(bid)}),win.find(".jsxc_tools").click(function(){return!1}),win.find(".jsxc_textinput").keyup(function(ev){var body=$(this).val();13===ev.which&&(body=""),jsxc.storage.updateUserItem("window",bid,"text",body),27===ev.which&&jsxc.gui.window.close(bid)}).keypress(function(ev){13===ev.which&&$(this).val()&&(jsxc.gui.window.postMessage(bid,"out",$(this).val()),$(this).val(""))}).focus(function(){jsxc.gui.readMsg(bid)}).mouseenter(function(){$("#jsxc_windowList").data("isOver",!0)}).mouseleave(function(){$("#jsxc_windowList").data("isOver",!1)}),win.find(".jsxc_textarea").click(function(){win.find(".jsxc_textinput").focus()}),win.find(".jsxc_textarea").slimScroll({height:"234px",distance:"3px"}),win.find(".jsxc_fade").hide(),win.find(".jsxc_name").disableSelection(),win.find(".slimScrollDiv").resizable({handles:"w, nw, n",minHeight:234,minWidth:250,resize:function(event,ui){win.width(ui.size.width),win.find(".jsxc_textarea").slimScroll({height:ui.size.height}),win.find(".jsxc_emoticons").css("top",ui.size.height+6+"px")}}),$.inArray(bid,jsxc.storage.getUserItem("windowlist"))<0){var wl=jsxc.storage.getUserItem("windowlist");wl.push(bid),jsxc.storage.setUserItem("windowlist",wl),jsxc.storage.setUserItem("window",bid,{minimize:!0,text:"",unread:!1})}else jsxc.storage.getUserItem("window",bid).unread&&jsxc.gui.unreadMsg(bid);return $.each(jsxc.gui.emotions,function(i,val){var ins=val[0].split(" ")[0],li=$('<li><div title="'+ins+'" class="jsxc_'+val[1]+'"/></li>');li.click(function(){win.find("input").val(win.find("input").val()+ins),win.find("input").focus()}),win.find(".jsxc_emoticons ul").append(li)}),jsxc.gui.toggleList.call(win.find(".jsxc_emoticons")),jsxc.gui.window.restoreChat(bid),jsxc.gui.update(bid),jsxc.gui.updateWindowListSB(),jsxc.master&&!jsxc.otr.objects[bid]?jsxc.otr.create(bid):jsxc.otr.enable(bid),$(document).trigger("init.window.jsxc",[win]),win},get:function(id){return $("li.jsxc_windowItem[data-bid='"+jsxc.jidToBid(id)+"']")},open:function(bid){var win=jsxc.gui.window.init(bid);jsxc.gui.window.show(bid),jsxc.gui.window.highlight(bid);var padding=$("#jsxc_windowListSB").width(),innerWidth=$("#jsxc_windowList>ul").width(),outerWidth=$("#jsxc_windowList").width()-padding;if(innerWidth>outerWidth){var offset=parseInt($("#jsxc_windowList>ul").css("right")),width=win.outerWidth(!0),right=innerWidth-win.position().left-width+offset,left=outerWidth-(innerWidth-win.position().left)-offset;0>left&&jsxc.gui.scrollWindowListBy(-1*left),0>right&&jsxc.gui.scrollWindowListBy(right)}return win},close:function(bid){return 0===jsxc.gui.window.get(bid).length?void jsxc.warn("Want to close a window, that is not open."):(jsxc.storage.removeUserElement("windowlist",bid),jsxc.storage.removeUserItem("window",bid),jsxc.storage.getUserItem("buddylist").indexOf(bid)<0&&(jsxc.storage.removeUserItem("buddy",bid),jsxc.storage.removeUserItem("chat",bid)),void jsxc.gui.window._close(bid))},_close:function(bid){jsxc.gui.window.get(bid).hide("slow",function(){$(this).remove(),jsxc.gui.updateWindowListSB()})},toggle:function(bid){var win=jsxc.gui.window.get(bid);0!==win.parents("#jsxc_windowList").length&&(win.find(".jsxc_fade").is(":hidden")?jsxc.gui.window.show(bid):jsxc.gui.window.hide(bid),jsxc.gui.updateWindowListSB())},show:function(bid){jsxc.storage.updateUserItem("window",bid,"minimize",!1),jsxc.gui.window._show(bid)},_show:function(bid){var win=jsxc.gui.window.get(bid);jsxc.gui.window.get(bid).find(".jsxc_fade").slideDown(),win.removeClass("jsxc_min"),jsxc.gui.window.scrollDown(bid),jsxc.restoreCompleted&&win.find(".jsxc_textinput").focus(),win.trigger("show.window.jsxc")},hide:function(bid){jsxc.storage.updateUserItem("window",bid,"minimize",!0),jsxc.gui.window._hide(bid)},_hide:function(bid){jsxc.gui.window.get(bid).addClass("jsxc_min").find(" .jsxc_fade").slideUp(),jsxc.gui.window.get(bid).trigger("hidden.window.jsxc")},highlight:function(bid){var el=jsxc.gui.window.get(bid).find(" .jsxc_bar");el.is(":animated")||el.effect("highlight",{color:"orange"},2e3)},scrollDown:function(bid){var chat=jsxc.gui.window.get(bid).find(".jsxc_textarea");0!==chat.length&&chat.slimScroll({scrollTo:chat.get(0).scrollHeight+"px"})},postMessage:function(bid,direction,msg,encrypted,forwarded,stamp){var data=jsxc.storage.getUserItem("buddy",bid),html_msg=msg;msg=jsxc.removeHTML(msg),msg=jsxc.escapeHTML(msg),"out"===direction&&data.msgstate===OTR.CONST.MSGSTATE_FINISHED&&forwarded!==!0&&(direction="sys",msg=jsxc.l.your_message_wasnt_send_please_end_your_private_conversation),"in"===direction&&data.msgstate===OTR.CONST.MSGSTATE_FINISHED&&(direction="sys",msg=jsxc.l.unencrypted_message_received+" "+msg),"out"===direction&&"from"===data.sub&&(direction="sys",msg=jsxc.l.your_message_wasnt_send_because_you_have_no_valid_subscription),encrypted=encrypted||data.msgstate===OTR.CONST.MSGSTATE_ENCRYPTED;var post=jsxc.storage.saveMessage(bid,direction,msg,encrypted,forwarded,stamp);"in"===direction&&$(document).trigger("postmessagein.jsxc",[bid,html_msg]),"out"===direction&&jsxc.master&&forwarded!==!0&&jsxc.xmpp.sendMessage(bid,html_msg,post.uid),jsxc.gui.window._postMessage(bid,post),"out"===direction&&"?"===msg&&jsxc.gui.window.postMessage(bid,"sys","42")},_postMessage:function(bid,post,restore){var win=jsxc.gui.window.get(bid),msg=post.msg,direction=post.direction,uid=post.uid;win.find(".jsxc_textinput").is(":not(:focus)")&&jsxc.restoreCompleted&&"in"===direction&&!restore&&jsxc.gui.window.highlight(bid),msg=msg.replace(jsxc.CONST.REGEX.URL,function(url){var href=url.match(/^https?:\/\//i)?url:"http://"+url;return'<a href="'+href+'" target="_blank">'+url+"</a>"}),msg=msg.replace(new RegExp("(xmpp:)?("+jsxc.CONST.REGEX.JID.source+")(\\?[^\\s]+\\b)?","i"),function(match,protocol,jid,action){return"xmpp:"===protocol?("string"==typeof action&&(jid+=action),'<a href="xmpp:'+jid+'">'+jid+"</a>"):'<a href="mailto:'+jid+'" target="_blank">'+jid+"</a>"}),$.each(jsxc.gui.emotions,function(i,val){msg=msg.replace(val[2],function(match,p1){var i,esc="";for(i=0;i<p1.length;i++)esc+="&#"+p1.charCodeAt(i)+";";return'<div title="'+esc+'" class="jsxc_emoticon jsxc_'+val[1]+'"/>'})});var msgDiv=$("<div>"),msgTsDiv=$("<div>");msgDiv.addClass("jsxc_chatmessage jsxc_"+direction),msgDiv.attr("id",uid),msgDiv.html("<div>"+msg+"</div>"),msgTsDiv.addClass("jsxc_timestamp"),msgTsDiv.html(jsxc.getFormattedTime(post.stamp)),post.received&&msgDiv.addClass("jsxc_received"),post.forwarded&&msgDiv.addClass("jsxc_forwarded"),post.encrypted&&msgDiv.addClass("jsxc_encrypted"),"sys"===direction?jsxc.gui.window.get(bid).find(".jsxc_textarea").append('<div style="clear:both"/>'):"undefined"!=typeof post.stamp&&msgDiv.append(msgTsDiv),win.find(".jsxc_textarea").append(msgDiv),jsxc.gui.detectUriScheme(win),jsxc.gui.detectEmail(win),jsxc.gui.window.scrollDown(bid),win.find(".jsxc_textinput").is(":focus")||!jsxc.restoreCompleted||restore||jsxc.gui.unreadMsg(bid)},setText:function(bid,text){jsxc.gui.window.get(bid).find(".jsxc_textinput").val(text)},restoreChat:function(bid){for(var chat=jsxc.storage.getUserItem("chat",bid);null!==chat&&chat.length>0;){var c=chat.pop();jsxc.gui.window._postMessage(bid,c,!0)}},clear:function(bid){jsxc.storage.setUserItem("chat",bid,[]),jsxc.gui.window.get(bid).find(".jsxc_textarea").empty()}},jsxc.gui.template={get:function(name,bid,msg){var ph={my_priv_fingerprint:jsxc.storage.getUserItem("priv_fingerprint")?jsxc.storage.getUserItem("priv_fingerprint").replace(/(.{8})/g,"$1 "):jsxc.l.not_available,my_jid:jsxc.storage.getItem("jid")||"",my_node:Strophe.getNodeFromJid(jsxc.storage.getItem("jid")||"")||"",root:jsxc.options.root,app_name:jsxc.options.app_name};if(bid){var data=jsxc.storage.getUserItem("buddy",bid);$.extend(ph,{bid_priv_fingerprint:data&&data.fingerprint?data.fingerprint.replace(/(.{8})/g,"$1 "):jsxc.l.not_available,bid_jid:bid,bid_name:data&&data.name?data.name:bid})}msg&&$.extend(ph,{msg:msg});var ret=jsxc.gui.template[name];return"string"==typeof ret?(ret=jsxc.translate(ret),ret=ret.replace(/\{\{([a-zA-Z0-9_\-]+)\}\}/g,function(s,key){return"string"==typeof ph[key]?ph[key]:s})):(jsxc.debug("Template not available: "+name),name)},authenticationDialog:'<h3>Verification</h3> <p>%%Authenticating_a_buddy_helps_%%</p> <div> <p style="margin:0px;">%%How_do_you_want_to_authenticate_your_buddy%%</p> <select size="1"> <option>%%Select_method%%</option> <option>%%Manual%%</option> <option>%%Question%%</option> <option>%%Secret%%</option> </select> </div> <div style="display:none"> <p class=".jsxc_explanation">%%To_verify_the_fingerprint_%%</p> <p><strong>%%Your_fingerprint%%</strong><br /> <span style="text-transform:uppercase">{{my_priv_fingerprint}}</span></p> <p><strong>%%Buddy_fingerprint%%</strong><br /> <span style="text-transform:uppercase">{{bid_priv_fingerprint}}</span></p><br /> <p class="jsxc_right"><a href="#" class="jsxc_close button">%%Close%%</a> <a href="#" class="button creation">%%Compared%%</a></p> </div> <div style="display:none"> <p class=".jsxc_explanation">%%To_authenticate_using_a_question_%%</p> <p><label for="jsxc_quest">%%Question%%:</label><input type="text" name="quest" id="jsxc_quest" /></p> <p><label for="jsxc_secret2">%%Secret%%:</label><input type="text" name="secret2" id="jsxc_secret2" /></p> <p class="jsxc_right"><a href="#" class="button jsxc_close">%%Close%%</a> <a href="#" class="button creation">%%Ask%%</a></p> </div> <div style="display:none"> <p class=".jsxc_explanation">%%To_authenticate_pick_a_secret_%%</p> <p><label for="jsxc_secret">%%Secret%%:</label><input type="text" name="secret" id="jsxc_secret" /></p> <p class="jsxc_right"><a href="#" class="button jsxc_close">%%Close%%</a> <a href="#" class="button creation">%%Compare%%</a></p> </div>',fingerprintsDialog:'<div> <p class="jsxc_maxWidth">%%A_fingerprint_%%</p> <p><strong>%%Your_fingerprint%%</strong><br /> <span style="text-transform:uppercase">{{my_priv_fingerprint}}</span></p> <p><strong>%%Buddy_fingerprint%%</strong><br /> <span style="text-transform:uppercase">{{bid_priv_fingerprint}}</span></p><br /> <p class="jsxc_right"><a href="#" class="button jsxc_close">%%Close%%</a></p> </div>',chatWindow:'<li class="jsxc_min jsxc_windowItem"> <div class="jsxc_window"> <div class="jsxc_bar"> <div class="jsxc_avatar">☺</div> <div class="jsxc_tools"> <div class="jsxc_settings"> <ul> <li class="jsxc_fingerprints jsxc_otr jsxc_disabled">%%Fingerprints%%</li> <li class="jsxc_verification">%%Authentication%%</li> <li class="jsxc_transfer jsxc_otr jsxc_disabled">%%start_private%%</li> <li class="jsxc_clear">%%clear_history%%</li> </ul> </div> <div class="jsxc_transfer jsxc_otr jsxc_disabled"/> <div class="jsxc_close">×</div> </div> <div class="jsxc_name"/> <div class="jsxc_cycle"/> </div> <div class="jsxc_fade"> <div class="jsxc_gradient"/> <div class="jsxc_textarea"/> <div class="jsxc_emoticons"><ul/></div> <input type="text" class="jsxc_textinput" placeholder="...%%Message%%" /> </div> </div> </li>',roster:'<div id="jsxc_roster"> <ul id="jsxc_buddylist"></ul> <div class="jsxc_bottom jsxc_presence" data-bid="own"> <div id="jsxc_avatar"> <div class="jsxc_avatar">☺</div> </div> <div id="jsxc_menu"> <span></span> <ul> <li class="jsxc_settings">%%Settings%%</li> <li class="jsxc_muteNotification">%%Mute%%</li> <li class="jsxc_addBuddy">%%Add_buddy%%</li> <li class="jsxc_hideOffline">%%Hide offline%%</li> <li class="jsxc_onlineHelp">%%Online help%%</li> <li class="jsxc_about">%%About%%</li> </ul> </div> <div id="jsxc_notice"> <span></span> <ul></ul> </div> <div id="jsxc_presence"> <span>%%Online%%</span> <ul> <li data-pres="online" class="jsxc_online">%%Online%%</li> <li data-pres="chat" class="jsxc_chat">%%Chatty%%</li> <li data-pres="away" class="jsxc_away">%%Away%%</li> <li data-pres="xa" class="jsxc_xa">%%Extended away%%</li> <li data-pres="dnd" class="jsxc_dnd">%%dnd%%</li> <!-- <li data-pres="offline" class="jsxc_offline">%%Offline%%</li> --> </ul> </div> </div> <div id="jsxc_toggleRoster"></div> </div>',windowList:'<div id="jsxc_windowList"> <ul></ul> </div> <div id="jsxc_windowListSB"> <div class="jsxc_scrollLeft jsxc_disabled">&lt;</div> <div class="jsxc_scrollRight jsxc_disabled">&gt;</div> </div>',rosterBuddy:'<li> <div class="jsxc_avatar">☺</div> <div class="jsxc_control"></div> <div class="jsxc_name"/> <div class="jsxc_options jsxc_right"> <div class="jsxc_rename" title="%%rename_buddy%%">✎</div> <div class="jsxc_delete" title="%%delete_buddy%%">✘</div> </div> <div class="jsxc_options jsxc_left"> <div class="jsxc_chaticon" title="%%send_message%%"/> <div class="jsxc_vcardicon" title="%%get_info%%">i</div> </div> </li>',loginBox:'<h3>%%Login%%</h3> <form> <p><label for="jsxc_username">%%Username%%:</label> <input type="text" name="username" id="jsxc_username" required="required" value="{{my_node}}"/></p> <p><label for="jsxc_password">%%Password%%:</label> <input type="password" name="password" required="required" id="jsxc_password" /></p> <div class="bottom_submit_section"> <input type="reset" class="button jsxc_close" name="clear" value="%%Cancel%%"/> <input type="submit" class="button creation" name="commit" value="%%Connect%%"/> </div> </form>',contactDialog:'<h3>%%Add_buddy%%</h3> <p class=".jsxc_explanation">%%Type_in_the_full_username_%%</p> <form> <p><label for="jsxc_username">* %%Username%%:</label> <input type="text" name="username" id="jsxc_username" pattern="^[^\\x22&\'\\/:<>@\\s]+(@[.\\-_\\w]+)?" required="required" /></p> <p><label for="jsxc_alias">%%Alias%%:</label> <input type="text" name="alias" id="jsxc_alias" /></p> <p class="jsxc_right"> <input class="button" type="submit" value="%%Add%%" /> </p> <form>',approveDialog:'<h3>%%Subscription_request%%</h3> <p>%%You_have_a_request_from%% <b class="jsxc_their_jid"></b>.</p> <p class="jsxc_right"><a href="#" class="button jsxc_deny">%%Deny%%</a> <a href="#" class="button creation jsxc_approve">%%Approve%%</a></p>',removeDialog:'<h3>%%Remove buddy%%</h3> <p class="jsxc_maxWidth">%%You_are_about_to_remove_%%</p> <p class="jsxc_right"><a href="#" class="button jsxc_cancel jsxc_close">%%Cancel%%</a> <a href="#" class="button creation">%%Remove%%</a></p>',waitAlert:'<h3>{{msg}}</h3> <p>%%Please_wait%%</p> <p class="jsxc_center"><img src="{{root}}/img/loading.gif" alt="wait" width="32px" height="32px" /></p>',alert:'<h3>%%Alert%%</h3> <p>{{msg}}</p> <p class="jsxc_right"><a href="#" class="button jsxc_close jsxc_cancel">%%Ok%%</a></p>',authFailDialog:'<h3>%%Login_failed%%</h3> <p>%%Sorry_we_cant_authentikate_%%</p> <p class="jsxc_right"> <a class="button jsxc_cancel">%%Continue_without_chat%%</a> <a class="button creation">%%Retry%%</a> </p>',confirmDialog:'<p>{{msg}}</p> <p class="jsxc_right"> <a class="button jsxc_cancel jsxc_close">%%Dismiss%%</a> <a class="button creation">%%Confirm%%</a> </p>',pleaseAccept:"<p>%%Please_accept_%%</p>",aboutDialog:"<h3>JavaScript XMPP Chat</h3> <p><b>Version: </b>"+jsxc.version+'<br /> <a href="http://jsxc.org/" target="_blank">www.jsxc.org</a><br /> <br /> <i>Released under the MIT license</i><br /> <br /> Real-time chat app for {{app_name}} and more.<br /> Requires an external <a href="https://xmpp.org/xmpp-software/servers/" target="_blank">XMPP server</a>.<br /> <br /> <b>Credits: </b> <a href="http://www.beepzoid.com/old-phones/" target="_blank">David English (Ringtone)</a>, <a href="https://soundcloud.com/freefilmandgamemusic/ping-1?in=freefilmandgamemusic/sets/free-notification-sounds-and" target="_blank">CameronMusic (Ping)</a></p> <p class="jsxc_right"><a class="button jsxc_debuglog" href="#">Show debug log</a></p>',vCard:'<h3>%%Info_about%% {{bid_name}}</h3> <ul class="jsxc_vCard"></ul> <p><img src="{{root}}/img/loading.gif" alt="wait" width="32px" height="32px" /> %%Please_wait%%...</p>',settings:'<h3>%%User_settings%%</h3> <p></p> <form> <fieldset class="jsxc_fieldsetXmpp jsxc_fieldset"> <legend>%%Login options%%</legend> <label for="xmpp-url">%%BOSH url%%</label><input type="text" id="xmpp-url" readonly="readonly"/><br /> <label for="xmpp-username">%%Username%%</label><input type="text" id="xmpp-username"/><br /> <label for="xmpp-domain">%%Domain%%</label><input type="text" id="xmpp-domain"/><br /> <label for="xmpp-resource">%%Resource%%</label><input type="text" id="xmpp-resource"/><br /> <label for="xmpp-onlogin">%%On login%%</label><input type="checkbox" id="xmpp-onlogin" /><br /> <input type="submit" value="%%Save%%"/> </fieldset> </form> <p></p> <form> <fieldset class="jsxc_fieldsetPriority jsxc_fieldset"> <legend>%%Priority%%</legend> <label for="priority-online">%%Online%%</label><input type="number" value="0" id="priority-online" min="-128" max="127" step="1" required="required"/><br /> <label for="priority-chat">%%Chatty%%</label><input type="number" value="0" id="priority-chat" min="-128" max="127" step="1" required="required"/><br /> <label for="priority-away">%%Away%%</label><input type="number" value="0" id="priority-away" min="-128" max="127" step="1" required="required"/><br /> <label for="priority-xa">%%Extended_away%%</label><input type="number" value="0" id="priority-xa" min="-128" max="127" step="1" required="required"/><br /> <label for="priority-dnd">%%dnd%%</label><input type="number" value="0" id="priority-dnd" min="-128" max="127" step="1" required="required"/><br /> <input type="submit" value="%%Save%%"/> </fieldset> </form> <p></p> <form data-onsubmit="xmpp.carbons.refresh"> <fieldset class="jsxc_fieldsetCarbons jsxc_fieldset"> <legend>%%Carbon copy%%</legend> <label for="carbons-enable">%%Enable%%</label><input type="checkbox" id="carbons-enable" /><br /> <input type="submit" value="%%Save%%"/> </fieldset> </form>'},jsxc.xmpp={conn:null,login:function(){if(!jsxc.xmpp.conn||!jsxc.xmpp.conn.connected){var jid=null,password=null,sid=null,rid=null;switch(arguments.length){case 2:jid=arguments[0],password=arguments[1];break;case 3:jid=arguments[0],sid=arguments[1],rid=arguments[2];break;default:jid=jsxc.storage.getItem("jid"),sid=jsxc.storage.getItem("sid"),rid=jsxc.storage.getItem("rid")}var url=jsxc.options.get("xmpp").url;$(document).on("connected.jsxc",jsxc.xmpp.connected),$(document).on("attached.jsxc",jsxc.xmpp.attached),$(document).on("disconnected.jsxc",jsxc.xmpp.disconnected),$(document).on("ridChange",jsxc.xmpp.onRidChange),$(document).on("connfail.jsxc",jsxc.xmpp.onConnfail),$(document).on("authfail.jsxc",jsxc.xmpp.onAuthFail),Strophe.addNamespace("RECEIPTS","urn:xmpp:receipts"),jsxc.xmpp.conn=new Strophe.Connection(url);var stropheGetUniqueId=jsxc.xmpp.conn.getUniqueId;jsxc.xmpp.conn.getUniqueId=function(suffix){var uid=stropheGetUniqueId.call(jsxc.xmpp.conn,suffix);return jsxc.storage.setItem("_uniqueId",jsxc.xmpp.conn._uniqueId),uid},jsxc.storage.getItem("debug")===!0&&(jsxc.xmpp.conn.xmlInput=function(data){console.log("<",data)},jsxc.xmpp.conn.xmlOutput=function(data){console.log(">",data)});var callback=function(status,condition){switch(jsxc.debug(Object.getOwnPropertyNames(Strophe.Status)[status]+": "+condition),status){case Strophe.Status.CONNECTED:jsxc.bid=jsxc.jidToBid(jsxc.xmpp.conn.jid.toLowerCase()),$(document).trigger("connected.jsxc");break;case Strophe.Status.ATTACHED:$(document).trigger("attached.jsxc");break;case Strophe.Status.DISCONNECTED:$(document).trigger("disconnected.jsxc");break;case Strophe.Status.CONNFAIL:$(document).trigger("connfail.jsxc");break;case Strophe.Status.AUTHFAIL:$(document).trigger("authfail.jsxc")}};jsxc.xmpp.conn.caps&&(jsxc.xmpp.conn.caps.node="http://jsxc.org/"),jsxc.restore&&sid&&rid?(jsxc.debug("Try to attach"),jsxc.debug("SID: "+sid),jsxc.xmpp.conn.attach(jid,sid,rid,callback)):(jsxc.debug("New connection"),jsxc.xmpp.conn.caps&&jsxc.xmpp.conn._addSysHandler(function(stanza){var from=jsxc.xmpp.conn.domain,c=stanza.querySelector("c"),ver=c.getAttribute("ver"),node=c.getAttribute("node"),_jidNodeIndex=JSON.parse(localStorage.getItem("strophe.caps._jidNodeIndex"))||{};jsxc.xmpp.conn.caps._jidVerIndex[from]=ver,_jidNodeIndex[from]=node,localStorage.setItem("strophe.caps._jidVerIndex",JSON.stringify(jsxc.xmpp.conn.caps._jidVerIndex)),localStorage.setItem("strophe.caps._jidNodeIndex",JSON.stringify(_jidNodeIndex))},Strophe.NS.CAPS),jsxc.xmpp.conn.connect(jid||jsxc.options.xmpp.jid,password||jsxc.options.xmpp.password,callback))}},logout:function(){if(jsxc.storage.removeItem("sid"),jsxc.storage.removeUserItem("buddylist"),jsxc.storage.removeUserItem("windowlist"),jsxc.storage.removeItem("_uniqueId"),!jsxc.master)return $("#jsxc_roster").remove(),$("#jsxc_windowlist").remove(),!0;if(null===jsxc.xmpp.conn)return!0;$("body").click(),jsxc.triggeredFromElement=!0,$.each(jsxc.storage.getUserItem("otrlist")||{},function(i,val){jsxc.otr.create(val)});var numOtr=Object.keys(jsxc.otr.objects||{}).length+1,disReady=function(){--numOtr<=0&&(jsxc.xmpp.conn.flush(),setTimeout(function(){jsxc.xmpp.conn.disconnect()},600))};return $.each(jsxc.otr.objects||{},function(key,obj){obj.msgstate===OTR.CONST.MSGSTATE_ENCRYPTED?obj.endOtr.call(obj,function(){obj.init.call(obj),jsxc.otr.backup(key),disReady()}):disReady()}),disReady(),!1},connected:function(){jsxc.xmpp.conn.pause();var nomJid=Strophe.getBareJidFromJid(jsxc.xmpp.conn.jid).toLowerCase()+"/"+Strophe.getResourceFromJid(jsxc.xmpp.conn.jid);if(jsxc.storage.setItem("sid",jsxc.xmpp.conn._proto.sid),jsxc.storage.setItem("jid",nomJid),jsxc.storage.setItem("lastActivity",(new Date).getTime()),jsxc.storage.removeUserItem("buddylist"),jsxc.storage.removeUserItem("windowlist"),jsxc.storage.removeUserItem("own"),jsxc.storage.removeUserItem("avatar","own"),jsxc.storage.removeUserItem("otrlist"),jsxc.options.loginForm.triggered)switch(jsxc.options.loginForm.onConnected||"submit"){case"submit":jsxc.submitLoginForm();case!1:return void jsxc.xmpp.connectionReady()}jsxc.gui.init(),$("#jsxc_roster").removeClass("jsxc_noConnection"),jsxc.onMaster(),jsxc.xmpp.conn.resume(),jsxc.gui.dialog.close(),$(document).trigger("attached.jsxc")},attached:function(){jsxc.xmpp.conn.addHandler(jsxc.xmpp.onRosterChanged,"jabber:iq:roster","iq","set"),jsxc.xmpp.conn.addHandler(jsxc.xmpp.onMessage,null,"message","chat"),jsxc.xmpp.conn.addHandler(jsxc.xmpp.onReceived,null,"message"),jsxc.xmpp.conn.addHandler(jsxc.xmpp.onPresence,null,"presence");var caps=jsxc.xmpp.conn.caps,domain=jsxc.xmpp.conn.domain;if(caps&&jsxc.options.get("carbons").enable){var conditionalEnable=function(){jsxc.xmpp.conn.caps.hasFeatureByJid(domain,jsxc.CONST.NS.CARBONS)&&jsxc.xmpp.carbons.enable()};if("undefined"==typeof caps._knownCapabilities[caps._jidVerIndex[domain]]){var _jidNodeIndex=JSON.parse(localStorage.getItem("strophe.caps._jidNodeIndex"))||{};$(document).on("caps.strophe",function onCaps(ev,from){from===domain&&(conditionalEnable(),$(document).off("caps.strophe",onCaps))}),caps._requestCapabilities(jsxc.xmpp.conn.domain,_jidNodeIndex[domain],caps._jidVerIndex[domain])}else conditionalEnable()}if(jsxc.restore&&jsxc.storage.getUserItem("buddylist"))jsxc.xmpp.sendPres();else{$(document).one("cloaded.roster.jsxc",jsxc.xmpp.sendPres),$("#jsxc_roster > p:first").remove();var iq=$iq({type:"get"}).c("query",{xmlns:"jabber:iq:roster"});jsxc.xmpp.conn.sendIQ(iq,jsxc.xmpp.onRoster)}jsxc.xmpp.connectionReady()},connectionReady:function(){jsxc.xmpp.conn._uniqueId=jsxc.storage.getItem("_uniqueId")||(new Date).getTime(),$(document).trigger("connectionReady.jsxc")},sendPres:function(){jsxc.xmpp.conn.disco&&(jsxc.xmpp.conn.disco.addIdentity("client","web","JSXC"),jsxc.xmpp.conn.disco.addFeature(Strophe.NS.DISCO_INFO),jsxc.xmpp.conn.disco.addFeature(Strophe.NS.RECEIPTS));var pres=$pres();jsxc.xmpp.conn.caps&&pres.c("c",jsxc.xmpp.conn.caps.generateCapsAttrs()).up();var presState=jsxc.storage.getUserItem("presence")||"online";"online"!==presState&&pres.c("show").t(presState).up();var priority=jsxc.options.get("priority");priority&&"undefined"!=typeof priority[presState]&&0!==parseInt(priority[presState])&&pres.c("priority").t(priority[presState]).up(),jsxc.debug("Send presence",pres.toString()),jsxc.xmpp.conn.send(pres)},disconnected:function(){jsxc.debug("disconnected"),jsxc.storage.removeItem("sid"),jsxc.storage.removeItem("rid"),jsxc.storage.removeItem("lastActivity"),jsxc.storage.removeItem("hidden"),jsxc.storage.removeUserItem("avatar","own"),jsxc.storage.removeUserItem("otrlist"),$(document).off("connected.jsxc",jsxc.xmpp.connected),$(document).off("attached.jsxc",jsxc.xmpp.attached),$(document).off("disconnected.jsxc",jsxc.xmpp.disconnected),$(document).off("ridChange",jsxc.xmpp.onRidChange),$(document).off("connfail.jsxc",jsxc.xmpp.onConnfail),$(document).off("authfail.jsxc",jsxc.xmpp.onAuthFail),jsxc.xmpp.conn=null,$("#jsxc_windowList").remove(),jsxc.triggeredFromElement?($("#jsxc_roster").remove(),jsxc.triggeredFromLogout&&(window.location=jsxc.options.logoutElement.attr("href"))):jsxc.gui.roster.noConnection(),window.clearInterval(jsxc.keepalive)},onConnfail:function(ev,condition){jsxc.debug("XMPP connection failed: "+condition),jsxc.options.loginForm.triggered&&jsxc.submitLoginForm()
+},onAuthFail:function(){if(jsxc.options.loginForm.triggered)switch(jsxc.options.loginForm.onAuthFail||"ask"){case"ask":jsxc.gui.showAuthFail();break;case"submit":jsxc.submitLoginForm()}},onRoster:function(iq){jsxc.debug("Load roster",iq);var buddies=[];$(iq).find("item").each(function(){var jid=$(this).attr("jid"),name=$(this).attr("name")||jid,bid=jsxc.jidToBid(jid),sub=$(this).attr("subscription");buddies.push(bid),jsxc.storage.removeUserItem("res",bid),jsxc.storage.saveBuddy(bid,{jid:jid,name:name,status:0,sub:sub,res:[]}),jsxc.gui.roster.add(bid)}),0===buddies.length&&jsxc.gui.roster.empty(),jsxc.storage.setUserItem("buddylist",buddies),jsxc.debug("Roster loaded"),$(document).trigger("cloaded.roster.jsxc")},onRosterChanged:function(iq){return jsxc.debug("onRosterChanged",iq),$(iq).find("item").each(function(){var jid=$(this).attr("jid"),name=$(this).attr("name")||jid,bid=jsxc.jidToBid(jid),sub=$(this).attr("subscription");if("remove"===sub)jsxc.gui.roster.purge(bid);else{var bl=jsxc.storage.getUserItem("buddylist");bl.indexOf(bid)<0&&(bl.push(bid),jsxc.storage.setUserItem("buddylist",bl));var temp=jsxc.storage.saveBuddy(bid,{jid:jid,name:name,sub:sub});"updated"===temp?(jsxc.gui.update(bid),jsxc.gui.roster.reorder(bid)):jsxc.gui.roster.add(bid)}if("from"===sub||"both"===sub){var notice,notices=jsxc.storage.getUserItem("notices"),noticeKey=null;for(noticeKey in notices)notice=notices[noticeKey],"gui.showApproveDialog"===notice.fnName&&notice.fnParams[0]===jid&&(jsxc.debug("Remove notice with key "+noticeKey),jsxc.notice.remove(noticeKey))}}),jsxc.storage.getUserItem("buddylist")&&0!==jsxc.storage.getUserItem("buddylist").length?$("#jsxc_roster > p:first").remove():jsxc.gui.roster.empty(),!0},onPresence:function(presence){jsxc.debug("onPresence",presence);var ptype=$(presence).attr("type"),from=$(presence).attr("from"),jid=Strophe.getBareJidFromJid(from).toLowerCase(),r=Strophe.getResourceFromJid(from),bid=jsxc.jidToBid(jid),data=jsxc.storage.getUserItem("buddy",bid),res=jsxc.storage.getUserItem("res",bid)||{},status=null,xVCard=$(presence).find('x[xmlns="vcard-temp:x:update"]');if(jid===Strophe.getBareJidFromJid(jsxc.storage.getItem("jid")))return!0;if("error"===ptype)return jsxc.error("[XMPP] "+$(presence).attr("code")),!0;if("subscribe"===ptype)return jsxc.storage.setUserItem("friendReq",{jid:jid,approve:-1}),jsxc.notice.add("%%Friendship request%%","%%from%% "+jid,"gui.showApproveDialog",[jid]),!0;if("unavailable"===ptype||"unsubscribed"===ptype)status=jsxc.CONST.STATUS.indexOf("offline");else{var show=$(presence).find("show").text();status=jsxc.CONST.STATUS.indexOf(""===show?"online":show)}0===status?delete res[r]:res[r]=status;var maxVal=[],max=0,prop=null;for(prop in res)res.hasOwnProperty(prop)&&max<=res[prop]&&(max!==res[prop]&&(maxVal=[],max=res[prop]),maxVal.push(prop));if(0===data.status&&max>0&&jsxc.notification.notify(data.name,jsxc.translate("%%has come online%%.")),data.status=max,data.res=maxVal,data.jid=jid,xVCard.length>0){var photo=xVCard.find("photo");photo.length>0&&photo.text()!==data.avatar&&(jsxc.storage.removeUserItem("avatar",data.avatar),data.avatar=photo.text())}return jsxc.gui.window.get(bid).length>0&&jsxc.gui.window.get(bid).data("jid",jid),jsxc.storage.setUserItem("buddy",bid,data),jsxc.storage.setUserItem("res",bid,res),jsxc.debug("Presence ("+from+"): "+status),jsxc.gui.update(bid),jsxc.gui.roster.reorder(bid),$(document).trigger("presence.jsxc",[from,status,presence]),!0},onMessage:function(stanza){var message,carbon,forwarded=$(stanza).find('forwarded[xmlns="'+jsxc.CONST.NS.FORWARD+'"]');forwarded.length>0?(message=forwarded.find("> message"),forwarded=!0,carbon=$(stanza).find('> [xmlns="'+jsxc.CONST.NS.CARBONS+'"]'),0===carbon.length&&(carbon=!1),jsxc.debug("Incoming forwarded message",message)):(message=stanza,forwarded=!1,carbon=!1,jsxc.debug("Incoming message",message));var body=$(message).find("body:first").text();if(!body||body.match(/\?OTR/i)&&forwarded)return!0;var bid,type=$(message).attr("type"),from=$(message).attr("from"),mid=$(message).attr("id"),delay=$(message).find('delay[xmlns="urn:xmpp:delay"]'),stamp=delay.length>0?new Date(delay.attr("stamp")):new Date;if(stamp=stamp.getTime(),carbon){var direction="sent"===carbon.prop("tagName")?"out":"in";return bid=jsxc.jidToBid("out"===direction?$(message).attr("to"):from),jsxc.gui.window.postMessage(bid,direction,body,!1,forwarded,stamp),!0}forwarded&&(body=from+jsxc.translate(" %%to%% ")+$(stanza).attr("to")+'"'+body+'"',from=$(stanza).attr("from"));var jid=Strophe.getBareJidFromJid(from);bid=jsxc.jidToBid(jid);var data=jsxc.storage.getUserItem("buddy",bid),request=$(message).find("request[xmlns='urn:xmpp:receipts']");if(null===data){var chat=jsxc.storage.getUserItem("chat",bid)||[];0===chat.length&&jsxc.notice.add("%%Unknown sender%%","%%You received a message from an unknown sender%% ("+bid+").","gui.showUnknownSender",[bid]);var msg=jsxc.removeHTML(body);return msg=jsxc.escapeHTML(msg),jsxc.storage.saveMessage(bid,"in",msg,!1,forwarded,stamp),!0}var win=jsxc.gui.window.init(bid);return"chat"===type&&(win.data("jid",from),jsxc.storage.updateUserItem("buddy",bid,{jid:from})),$(document).trigger("message.jsxc",[from,body]),jsxc.master&&!jsxc.otr.objects[bid]&&jsxc.otr.create(bid),forwarded||null===mid||!request.length||null===data||"both"!==data.sub&&"from"!==data.sub||"chat"!==type||jsxc.xmpp.conn.send($msg({to:from}).c("received",{xmlns:"urn:xmpp:receipts",id:mid})),jsxc.otr.objects.hasOwnProperty(bid)?jsxc.otr.objects[bid].receiveMsg(body,stamp):jsxc.gui.window.postMessage(bid,"in",body,!1,forwarded,stamp),!0},onRidChange:function(ev,data){jsxc.storage.setItem("rid",data.rid)},resFriendReq:function(from,approve){jsxc.master?(jsxc.xmpp.conn.send($pres({to:from,type:approve?"subscribed":"unsubscribed"})),jsxc.storage.removeUserItem("friendReq"),jsxc.gui.dialog.close()):jsxc.storage.updateUserItem("friendReq","approve",approve)},addBuddy:function(username,alias){var bid=jsxc.jidToBid(username);if(jsxc.master){var iq=$iq({type:"set"}).c("query",{xmlns:"jabber:iq:roster"}).c("item",{jid:username,name:alias||""});jsxc.xmpp.conn.sendIQ(iq),jsxc.xmpp.conn.send($pres({to:username,type:"subscribe"})),jsxc.storage.removeUserItem("add_"+bid)}else jsxc.storage.setUserItem("add_"+bid,{username:username,alias:alias||null})},removeBuddy:function(jid){var bid=jsxc.jidToBid(jid),iq=$iq({type:"set"}).c("query",{xmlns:"jabber:iq:roster"}).c("item",{jid:Strophe.getBareJidFromJid(jid),subscription:"remove"});jsxc.xmpp.conn.sendIQ(iq),jsxc.gui.roster.purge(bid)},onReceived:function(message){var from=$(message).attr("from"),jid=Strophe.getBareJidFromJid(from),bid=jsxc.jidToBid(jid),received=$(message).find("received[xmlns='urn:xmpp:receipts']");if(received.length){var i,receivedId=received.attr("id").replace(/:/,"-"),chat=jsxc.storage.getUserItem("chat",bid);for(i=chat.length-1;i>=0;i--)if(chat[i].uid===receivedId){chat[i].received=!0,$("#"+receivedId).addClass("jsxc_received"),jsxc.storage.setUserItem("chat",bid,chat);break}}return!0},sendMessage:function(bid,msg,uid){jsxc.otr.objects.hasOwnProperty(bid)?jsxc.otr.objects[bid].sendMsg(msg,uid):jsxc.xmpp._sendMessage(jsxc.gui.window.get(bid).data("jid"),msg,uid)},_sendMessage:function(jid,msg,uid){var data=jsxc.storage.getUserItem("buddy",jsxc.jidToBid(jid))||{},isBar=Strophe.getBareJidFromJid(jid)===jid,type=data.type||"chat",xmlMsg=$msg({to:jid,type:type,id:uid}).c("body").t(msg);jsxc.xmpp.carbons.enabled&&msg.match(/^\?OTR/)&&xmlMsg.up().c("private",{xmlns:jsxc.CONST.NS.CARBONS}),"chat"===type&&(isBar||jsxc.xmpp.conn.caps.hasFeatureByJid(jid,Strophe.NS.RECEIPTS))&&xmlMsg.up().c("request",{xmlns:"urn:xmpp:receipts"}),jsxc.xmpp.conn.send(xmlMsg)},loadVcard:function(bid,cb,error_cb){jsxc.master?jsxc.xmpp.conn.vcard.get(cb,bid,error_cb):(jsxc.storage.setUserItem("vcard",bid,"request:"+(new Date).getTime()),$(document).one("loaded.vcard.jsxc",function(ev,result){result&&"success"===result.state?cb($(result.data).get(0)):error_cb()}))},getCapabilitiesByJid:function(jid){if(jsxc.xmpp.conn)return jsxc.xmpp.conn.caps.getCapabilitiesByJid(jid);var jidVerIndex=JSON.parse(localStorage.getItem("strophe.caps._jidVerIndex"))||{},knownCapabilities=JSON.parse(localStorage.getItem("strophe.caps._knownCapabilities"))||{};return jidVerIndex[jid]?knownCapabilities[jidVerIndex[jid]]:null}},jsxc.xmpp.carbons={enabled:!1,enable:function(cb){var iq=$iq({type:"set"}).c("enable",{xmlns:jsxc.CONST.NS.CARBONS});jsxc.xmpp.conn.sendIQ(iq,function(){jsxc.xmpp.carbons.enabled=!0,jsxc.debug("Carbons enabled"),cb&&cb.call(this)},function(stanza){jsxc.warn("Could not enable carbons",stanza)})},disable:function(cb){var iq=$iq({type:"set"}).c("disable",{xmlns:jsxc.CONST.NS.CARBONS});jsxc.xmpp.conn.sendIQ(iq,function(){jsxc.xmpp.carbons.enabled=!1,jsxc.debug("Carbons disabled"),cb&&cb.call(this)},function(stanza){jsxc.warn("Could not disable carbons",stanza)})},refresh:function(err){return err!==!1?jsxc.options.get("carbons").enable?jsxc.xmpp.carbons.enable():jsxc.xmpp.carbons.disable():void 0}},jsxc.storage={PREFIX:"jsxc",SEP:":",getPrefix:function(uk){var self=jsxc.storage;return self.PREFIX+self.SEP+(uk&&jsxc.bid?jsxc.bid+self.SEP:"")},setItem:function(key,value,uk){jsxc.storageNotConform>0&&"rid"!==key&&"lastActivity"!==key&&(jsxc.storageNotConform>1&&null===jsxc.toSNC&&(jsxc.toSNC=window.setTimeout(function(){jsxc.storageNotConform=0,jsxc.storage.setItem("storageNotConform",0)},1e3)),jsxc.ls.push(JSON.stringify({key:key,value:value}))),"object"==typeof value&&(value=JSON.stringify(value)),localStorage.setItem(jsxc.storage.getPrefix(uk)+key,value)},setUserItem:function(type,key,value){var self=jsxc.storage;return 2===arguments.length?(value=key,key=type,type=""):3===arguments.length&&(key=type+self.SEP+key),jsxc.storage.setItem(key,value,!0)},getItem:function(key,uk){key=jsxc.storage.getPrefix(uk)+key;var value=localStorage.getItem(key);try{return JSON.parse(value)}catch(e){return value}},getUserItem:function(type,key){var self=jsxc.storage;return 1===arguments.length?key=type:2===arguments.length&&(key=type+self.SEP+key),jsxc.storage.getItem(key,!0)},removeItem:function(key,uk){jsxc.storageNotConform&&"rid"!==key&&"lastActivity"!==key&&jsxc.ls.push(JSON.stringify({key:jsxc.storage.prefix+key,value:""})),localStorage.removeItem(jsxc.storage.getPrefix(uk)+key)},removeUserItem:function(type,key){var self=jsxc.storage;1===arguments.length?key=type:2===arguments.length&&(key=type+self.SEP+key),jsxc.storage.removeItem(key,!0)},updateItem:function(key,variable,value,uk){var data=jsxc.storage.getItem(key,uk)||{};"object"==typeof variable?$.each(variable,function(key,val){"undefined"==typeof data[key]&&jsxc.debug("Variable "+key+" doesn't exist in "+variable+". It was created."),data[key]=val}):("undefined"==typeof data[variable]&&jsxc.debug("Variable "+variable+" doesn't exist. It was created."),data[variable]=value),jsxc.storage.setItem(key,data,uk)},updateUserItem:function(type,key,variable,value){var self=jsxc.storage;return 4===arguments.length||3===arguments.length&&"object"==typeof variable?key=type+self.SEP+key:(value=variable,variable=key,key=type),jsxc.storage.updateItem(key,variable,value,!0)},ink:function(key,uk){jsxc.storage.setItem(key,Number(jsxc.storage.getItem(key,uk))+1,uk)},removeElement:function(key,name,uk){var item=jsxc.storage.getItem(key,uk);$.isArray(item)?item=$.grep(item,function(e){return e!==name}):"object"==typeof item&&delete item[name],jsxc.storage.setItem(key,item,uk)},removeUserElement:function(type,key,name){var self=jsxc.storage;return 2===arguments.length?(name=key,key=type):3===arguments.length&&(key=type+self.SEP+key),jsxc.storage.removeElement(key,name,!0)},onStorage:function(e){if(e.key!==jsxc.storage.PREFIX+jsxc.storage.SEP+"rid"&&e.key!==jsxc.storage.PREFIX+jsxc.storage.SEP+"lastActivity"){var re=new RegExp("^"+jsxc.storage.PREFIX+jsxc.storage.SEP+"(?:[^"+jsxc.storage.SEP+"]+@[^"+jsxc.storage.SEP+"]+"+jsxc.storage.SEP+")?(.*)","i"),key=e.key.replace(re,"$1");if(jsxc.storageNotConform>0&&jsxc.ls.length>0){var val=e.newValue;try{val=JSON.parse(val)}catch(err){}var index=$.inArray(JSON.stringify({key:key,value:val}),jsxc.ls);if(index>=0)return jsxc.storageNotConform>1&&(window.clearTimeout(jsxc.toSNC),jsxc.storageNotConform=1,jsxc.storage.setItem("storageNotConform",1)),void jsxc.ls.splice(index,1)}if(e.oldValue!==e.newValue){var n,o,bid=key.replace(new RegExp("[^"+jsxc.storage.SEP+"]+"+jsxc.storage.SEP+"(.*)","i"),"$1");if(jsxc.master&&"alive"===key)return jsxc.debug("Master request."),void jsxc.storage.ink("alive");if(!(jsxc.master||"alive"!==key&&"alive_busy"!==key||jsxc.triggeredFromElement))return window.clearTimeout(jsxc.to),jsxc.to=window.setTimeout(jsxc.checkMaster,("alive"===key?jsxc.options.timeout:jsxc.options.busyTimeout)+jsxc.random(60)),void(jsxc.role_allocation||jsxc.onSlave());if(key.match(/^notices/)&&jsxc.notice.load(),key.match(/^presence/)&&jsxc.gui.changePresence(e.newValue,!0),key.match(/^options/)&&e.newValue&&(n=JSON.parse(e.newValue),"undefined"!=typeof n.muteNotification&&n.muteNotification?jsxc.notification.muteSound(!0):jsxc.notification.unmuteSound(!0)),key.match(/^hidden/)&&(jsxc.master?clearTimeout(jsxc.toNotification):jsxc.isHidden()),key.match(new RegExp("^chat"+jsxc.storage.SEP)))for(var data,el,posts=JSON.parse(e.newValue);posts.length>0;)data=posts.pop(),el=$("#"+data.uid),0===el.length?(jsxc.master&&"out"===data.direction&&jsxc.xmpp.sendMessage(bid,data.msg,data.uid),jsxc.gui.window._postMessage(bid,data)):data.received&&el.addClass("jsxc_received");else{if(key.match(new RegExp("^window"+jsxc.storage.SEP)))return e.newValue?e.oldValue?(n=JSON.parse(e.newValue),n.minimize?jsxc.gui.window._hide(bid):jsxc.gui.window._show(bid),void jsxc.gui.window.setText(bid,n.text)):void jsxc.gui.window.open(bid):void jsxc.gui.window._close(bid);if(key.match(new RegExp("^smp"+jsxc.storage.SEP))){if(!e.newValue)return jsxc.gui.dialog.close(),void(jsxc.master&&jsxc.otr.objects[bid].sm.abort());n=JSON.parse(e.newValue),"undefined"!=typeof n.data?jsxc.otr.onSmpQuestion(bid,n.data):jsxc.master&&n.sec&&(jsxc.gui.dialog.close(),jsxc.otr.sendSmpReq(bid,n.sec,n.quest))}if(!jsxc.master&&key.match(new RegExp("^buddy"+jsxc.storage.SEP))){if(!e.newValue)return void jsxc.gui.roster.purge(bid);if(!e.oldValue)return void jsxc.gui.roster.add(bid);n=JSON.parse(e.newValue),o=JSON.parse(e.oldValue),jsxc.gui.update(bid),(o.status!==n.status||o.sub!==n.sub)&&jsxc.gui.roster.reorder(bid)}if(jsxc.master&&key.match(new RegExp("^deletebuddy"+jsxc.storage.SEP))&&e.newValue&&(n=JSON.parse(e.newValue),jsxc.xmpp.removeBuddy(n.jid),jsxc.storage.removeUserItem(key)),jsxc.master&&key.match(new RegExp("^buddy"+jsxc.storage.SEP))&&(n=JSON.parse(e.newValue),o=JSON.parse(e.oldValue),o.transferReq!==n.transferReq&&(jsxc.storage.updateUserItem("buddy",bid,"transferReq",-1),0===n.transferReq&&jsxc.otr.goPlain(bid),1===n.transferReq&&jsxc.otr.goEncrypt(bid)),o.name!==n.name&&jsxc.gui.roster._rename(bid,n.name)),"sid"===key)return void(e.newValue||jsxc.xmpp.logout());"friendReq"===key&&(n=JSON.parse(e.newValue),jsxc.master&&n.approve>=0&&jsxc.xmpp.resFriendReq(n.jid,n.approve)),jsxc.master&&key.match(new RegExp("^add"+jsxc.storage.SEP))&&(n=JSON.parse(e.newValue),jsxc.xmpp.addBuddy(n.username,n.alias)),"roster"===key&&jsxc.gui.roster.toggle(),jsxc.master&&key.match(new RegExp("^vcard"+jsxc.storage.SEP))&&null!==e.newValue&&e.newValue.match(/^request:/)&&jsxc.xmpp.loadVcard(bid,function(stanza){jsxc.storage.setUserItem("vcard",bid,{state:"success",data:$("<div>").append(stanza).html()})},function(){jsxc.storage.setUserItem("vcard",bid,{state:"error"})}),jsxc.master||!key.match(new RegExp("^vcard"+jsxc.storage.SEP))||null===e.newValue||e.newValue.match(/^request:/)||(n=JSON.parse(e.newValue),"undefined"!=typeof n.state&&$(document).trigger("loaded.vcard.jsxc",n),jsxc.storage.removeUserItem("vcard",bid))}}}},saveMessage:function(bid,direction,msg,encrypted,forwarded,stamp){var chat=jsxc.storage.getUserItem("chat",bid)||[],uid=(new Date).getTime()+":msg";chat.length>jsxc.options.get("numberOfMsg")&&chat.pop();var post={direction:direction,msg:msg,uid:uid.replace(/:/,"-"),received:!1,encrypted:encrypted||!1,forwarded:forwarded||!1,stamp:stamp||(new Date).getTime()};return chat.unshift(post),jsxc.storage.setUserItem("chat",bid,chat),post},saveBuddy:function(bid,data){return jsxc.storage.getUserItem("buddy",bid)?(jsxc.storage.updateUserItem("buddy",bid,data),"updated"):(jsxc.storage.setUserItem("buddy",bid,$.extend({jid:"",name:"",status:0,sub:"none",msgstate:0,transferReq:-1,trust:!1,fingerprint:null,res:[],type:"chat"},data)),"created")}},jsxc.otr={objects:{},dsaFallback:null,receiveMessage:function(bid,msg,encrypted,stamp){jsxc.otr.objects[bid].msgstate!==OTR.CONST.MSGSTATE_PLAINTEXT&&jsxc.otr.backup(bid),jsxc.otr.objects[bid].msgstate===OTR.CONST.MSGSTATE_PLAINTEXT||encrypted?jsxc.gui.window.postMessage(bid,"in",msg,encrypted,stamp):jsxc.gui.window.postMessage(bid,"sys",jsxc.translate("%%Received an unencrypted message.%% [")+msg+"]",encrypted,stamp)},sendMessage:function(jid,msg,uid){0!==jsxc.otr.objects[jsxc.jidToBid(jid)].msgstate&&jsxc.otr.backup(jsxc.jidToBid(jid)),jsxc.xmpp._sendMessage(jid,msg,uid)},create:function(bid){if(!jsxc.otr.objects.hasOwnProperty(bid)&&jsxc.options.otr.priv){var ol=jsxc.storage.getUserItem("otrlist")||[];ol.indexOf(bid)<0&&(ol.push(bid),jsxc.storage.setUserItem("otrlist",ol)),jsxc.otr.objects[bid]=new OTR(jsxc.options.otr),jsxc.options.otr.SEND_WHITESPACE_TAG&&(jsxc.otr.objects[bid].SEND_WHITESPACE_TAG=!0),jsxc.options.otr.WHITESPACE_START_AKE&&(jsxc.otr.objects[bid].WHITESPACE_START_AKE=!0),jsxc.otr.objects[bid].on("status",function(status){var data=jsxc.storage.getUserItem("buddy",bid);if(null!==data){switch(status){case OTR.CONST.STATUS_SEND_QUERY:jsxc.gui.window.postMessage(bid,"sys",jsxc.l.trying_to_start_private_conversation);break;case OTR.CONST.STATUS_AKE_SUCCESS:data.fingerprint=jsxc.otr.objects[bid].their_priv_pk.fingerprint(),data.msgstate=OTR.CONST.MSGSTATE_ENCRYPTED;var msg=(jsxc.otr.objects[bid].trust?jsxc.l.Verified:jsxc.l.Unverified)+" "+jsxc.l.private_conversation_started;jsxc.gui.window.postMessage(bid,"sys",msg);break;case OTR.CONST.STATUS_END_OTR:data.fingerprint=null,jsxc.otr.objects[bid].msgstate===OTR.CONST.MSGSTATE_PLAINTEXT?(data.msgstate=OTR.CONST.MSGSTATE_PLAINTEXT,jsxc.gui.window.postMessage(bid,"sys",jsxc.l.private_conversation_aborted)):(data.msgstate=OTR.CONST.MSGSTATE_FINISHED,jsxc.gui.window.postMessage(bid,"sys",jsxc.l.your_buddy_closed_the_private_conversation_you_should_do_the_same));break;case OTR.CONST.STATUS_SMP_HANDLE:jsxc.keepBusyAlive()}jsxc.storage.setUserItem("buddy",bid,data),jsxc.gui.update(bid)}}),jsxc.otr.objects[bid].on("smp",function(type,data){switch(type){case"question":if(jsxc.gui.window.postMessage(bid,"sys",jsxc.l.Authentication_request_received),$("#jsxc_dialog").length>0){jsxc.otr.objects[bid].sm.abort();break}jsxc.otr.onSmpQuestion(bid,data),jsxc.storage.setUserItem("smp_"+bid,{data:data||null});break;case"trust":jsxc.otr.objects[bid].trust=data,jsxc.storage.updateUserItem("buddy",bid,"trust",data),jsxc.otr.backup(bid),jsxc.gui.update(bid),data?jsxc.gui.window.postMessage(bid,"sys",jsxc.l.conversation_is_now_verified):jsxc.gui.window.postMessage(bid,"sys",jsxc.l.authentication_failed),jsxc.storage.removeUserItem("smp_"+bid),jsxc.gui.dialog.close();break;case"abort":jsxc.gui.window.postMessage(bid,"sys",jsxc.l.Authentication_aborted);break;default:jsxc.debug("[OTR] sm callback: Unknown type: "+type)}}),jsxc.otr.objects[bid].on("ui",function(msg,encrypted,stamp){jsxc.otr.receiveMessage(bid,msg,encrypted===!0,stamp)}),jsxc.otr.objects[bid].on("io",function(msg,uid){var jid=jsxc.gui.window.get(bid).data("jid")||jsxc.otr.objects[bid].jid;jsxc.otr.objects[bid].jid=jid,jsxc.otr.sendMessage(jid,msg,uid)}),jsxc.otr.objects[bid].on("error",function(err){"Received an unencrypted message."!==err&&jsxc.gui.window.postMessage(bid,"sys","[OTR] "+jsxc.translate("%%"+err+"%%")),jsxc.error("[OTR] "+err)}),jsxc.otr.restore(bid)}},onSmpQuestion:function(bid,data){jsxc.gui.showVerification(bid),$("#jsxc_dialog select").prop("selectedIndex",data?2:3).change(),$("#jsxc_dialog > div:eq(0)").hide(),data?($("#jsxc_dialog > div:eq(2)").find("#jsxc_quest").val(data).prop("disabled",!0),$("#jsxc_dialog > div:eq(2)").find(".creation").text("Answer"),$("#jsxc_dialog > div:eq(2)").find(".jsxc_explanation").text(jsxc.l.your_buddy_is_attempting_to_determine_+" "+jsxc.l.to_authenticate_to_your_buddy+jsxc.l.enter_the_answer_and_click_answer)):$("#jsxc_dialog > div:eq(3)").find(".jsxc_explanation").text(jsxc.l.your_buddy_is_attempting_to_determine_+" "+jsxc.l.to_authenticate_to_your_buddy+jsxc.l.enter_the_secret),$("#jsxc_dialog .jsxc_close").click(function(){jsxc.storage.removeUserItem("smp_"+bid),jsxc.master&&jsxc.otr.objects[bid].sm.abort()})},sendSmpReq:function(bid,sec,quest){jsxc.keepBusyAlive(),jsxc.otr.objects[bid].smpSecret(sec,quest||"")},toggleTransfer:function(bid){0===jsxc.storage.getUserItem("buddy",bid).msgstate?jsxc.otr.goEncrypt(bid):jsxc.otr.goPlain(bid)},goEncrypt:function(bid){jsxc.master?jsxc.otr.objects[bid].sendQueryMsg():jsxc.storage.updateUserItem("buddy",bid,"transferReq",1)},goPlain:function(bid,cb){jsxc.master?(jsxc.otr.objects[bid].endOtr.call(jsxc.otr.objects[bid],cb),jsxc.otr.objects[bid].init.call(jsxc.otr.objects[bid]),jsxc.otr.backup(bid)):jsxc.storage.updateUserItem("buddy",bid,"transferReq",0)},backup:function(bid){var o=jsxc.otr.objects[bid],r={};if(null!==o){var i,savekey=["jid","our_instance_tag","msgstate","authstate","fragment","their_y","their_old_y","their_keyid","their_instance_tag","our_dh","our_old_dh","our_keyid","sessKeys","storedMgs","oldMacKeys","trust","transmittedRS","ssid","receivedPlaintext","authstate","send_interval"];for(i=0;i<savekey.length;i++)r[savekey[i]]=JSON.stringify(o[savekey[i]]);null!==o.their_priv_pk&&(r.their_priv_pk=JSON.stringify(o.their_priv_pk.packPublic())),o.ake.otr_version&&""!==o.ake.otr_version&&(r.otr_version=JSON.stringify(o.ake.otr_version)),jsxc.storage.setUserItem("otr",bid,r)}},restore:function(bid){var o=jsxc.otr.objects[bid],d=jsxc.storage.getUserItem("otr",bid);if(null!==o||null!==d){var key;for(key in d)if(d.hasOwnProperty(key)){var val=JSON.parse(d[key]);"their_priv_pk"===key&&null!==val&&(val=DSA.parsePublic(val)),"otr_version"===key&&null!==val?o.ake.otr_version=val:o[key]=val}jsxc.otr.objects[bid]=o,1===o.msgstate&&null!==o.their_priv_pk&&o._smInit.call(jsxc.otr.objects[bid])}jsxc.otr.enable(bid)},createDSA:function(){if(!jsxc.options.otr.priv)if(null===jsxc.storage.getUserItem("key")){var msg=jsxc.l.Creating_your_private_key_,worker=null;if(Worker)try{worker=new Worker(jsxc.options.root+"/lib/otr/build/dsa-webworker.js")}catch(err){jsxc.warn("Couldn't create web-worker.",err)}jsxc.otr.dsaFallback=null===worker,jsxc.otr.dsaFallback?(jsxc.gui.dialog.open(jsxc.gui.template.get("waitAlert",null,msg),{noClose:!0}),jsxc.debug("DSA key creation started."),setTimeout(function(){var dsa=new DSA;jsxc.otr.DSAready(dsa)},500)):(jsxc._onMaster(),worker.onmessage=function(e){var type=e.data.type,val=e.data.val;"debug"===type?jsxc.debug(val):"data"===type&&jsxc.otr.DSAready(DSA.parsePrivate(val))},worker.postMessage({imports:[jsxc.options.root+"/lib/otr/vendor/salsa20.js",jsxc.options.root+"/lib/otr/vendor/bigint.js",jsxc.options.root+"/lib/otr/vendor/crypto.js",jsxc.options.root+"/lib/otr/vendor/eventemitter.js",jsxc.options.root+"/lib/otr/lib/const.js",jsxc.options.root+"/lib/otr/lib/helpers.js",jsxc.options.root+"/lib/otr/lib/dsa.js"],seed:BigInt.getSeed(),debug:!0}))}else jsxc.debug("DSA key loaded"),jsxc.options.otr.priv=DSA.parsePrivate(jsxc.storage.getUserItem("key")),jsxc.otr._createDSA()},_createDSA:function(){jsxc.storage.setUserItem("priv_fingerprint",jsxc.options.otr.priv.fingerprint()),jsxc.otr.dsaFallback!==!1&&jsxc._onMaster()},DSAready:function(dsa){jsxc.storage.setUserItem("key",dsa.packPrivate()),jsxc.options.otr.priv=dsa,jsxc.otr.dsaFallback?jsxc.gui.dialog.close():$.each(jsxc.storage.getUserItem("windowlist"),function(index,val){jsxc.otr.create(val)}),jsxc.otr._createDSA()},enable:function(bid){jsxc.gui.window.get(bid).find(".jsxc_otr").removeClass("jsxc_disabled")}},jsxc.notification={audio:null,init:function(){$(document).on("postmessagein.jsxc",function(event,bid,msg){msg=msg.match(/^\?OTR/)?jsxc.translate("%%Encrypted message%%"):msg;var data=jsxc.storage.getUserItem("buddy",bid);jsxc.notification.notify(jsxc.translate("%%New message from%% ")+data.name,msg,void 0,void 0,jsxc.CONST.SOUNDS.MSG)}),$(document).on("callincoming.jingle",function(){jsxc.notification.playSound(jsxc.CONST.SOUNDS.CALL,!0,!0)}),$(document).on("accept.call.jsxc reject.call.jsxc",function(){jsxc.notification.stopSound()})},notify:function(title,msg,d,force,soundFile,loop){jsxc.options.notification&&jsxc.notification.hasPermission()&&(jsxc.isHidden()||force)&&(jsxc.toNotification=setTimeout(function(){"string"==typeof soundFile&&jsxc.notification.playSound(soundFile,loop,force);var popup=new Notification(jsxc.translate(title),{body:jsxc.translate(msg),icon:jsxc.options.root+"/img/XMPP_logo.png"}),duration=d||jsxc.options.popupDuration;duration>0&&setTimeout(function(){popup.close()},duration)},jsxc.toNotificationDelay))},hasSupport:function(){if(window.webkitNotifications){window.Notification=function(title,opt){var popup=window.webkitNotifications.createNotification(null,title,opt.body);return popup.show(),popup.close=function(){popup.cancel()},popup};var permission;switch(window.webkitNotifications.checkPermission()){case 0:permission=jsxc.CONST.NOTIFICATION_GRANTED;break;case 2:permission=jsxc.CONST.NOTIFICATION_DENIED;break;default:permission=jsxc.CONST.NOTIFICATION_DEFAULT}return window.Notification.permission=permission,window.Notification.requestPermission=function(func){window.webkitNotifications.requestPermission(func)},!0}return window.Notification?!0:!1},prepareRequest:function(){$(document).one("postmessagein.jsxc",function(){jsxc.switchEvents({"notificationready.jsxc":function(){jsxc.gui.dialog.close(),jsxc.notification.init(),jsxc.storage.setUserItem("notification",!0)},"notificationfailure.jsxc":function(){jsxc.gui.dialog.close(),jsxc.options.notification=!1,jsxc.storage.setUserItem("notification",!1)}}),setTimeout(function(){jsxc.notice.add("%%Notifications%%?","%%Should_we_notify_you_%%","gui.showRequestNotification")},1e3)})},requestPermission:function(){window.Notification.requestPermission(function(status){window.Notification.permission!==status&&(window.Notification.permission=status),$(document).trigger(jsxc.notification.hasPermission()?"notificationready.jsxc":"notificationfailure.jsxc")})},hasPermission:function(){return window.Notification.permission===jsxc.CONST.NOTIFICATION_GRANTED},playSound:function(soundFile,loop,force){if(jsxc.master&&!jsxc.options.get("muteNotification")&&"dnd"!==jsxc.storage.getUserItem("presence")&&(jsxc.isHidden()||force)){jsxc.notification.stopSound();var audio=new Audio(jsxc.options.root+"/sound/"+soundFile);audio.loop=loop||!1,audio.play(),jsxc.notification.audio=audio}},stopSound:function(){var audio=jsxc.notification.audio;"undefined"!=typeof audio&&null!==audio&&(audio.pause(),jsxc.notification.audio=null)},muteSound:function(external){$("#jsxc_menu .jsxc_muteNotification").text(jsxc.translate("%%Unmute%%")),external!==!0&&jsxc.options.set("muteNotification",!0)},unmuteSound:function(external){$("#jsxc_menu .jsxc_muteNotification").text(jsxc.translate("%%Mute%%")),external!==!0&&jsxc.options.set("muteNotification",!1)}},jsxc.notice={_num:0,load:function(){$("#jsxc_notice ul li").remove(),$("#jsxc_notice > span").text(""),jsxc.notice._num=0;var saved=jsxc.storage.getUserItem("notices")||[],key=null;for(key in saved)if(saved.hasOwnProperty(key)){var val=saved[key];jsxc.notice.add(val.msg,val.description,val.fnName,val.fnParams,key)}},add:function(msg,description,fnName,fnParams,id){var nid=id||Date.now(),list=$("#jsxc_notice ul"),notice=$("<li/>");if(notice.click(function(){return jsxc.notice.remove(nid),jsxc.exec(fnName,fnParams),!1}),notice.text(jsxc.translate(msg)),notice.attr("title",jsxc.translate(description)||""),notice.attr("data-nid",nid),list.append(notice),$("#jsxc_notice > span").text(++jsxc.notice._num),!id){var saved=jsxc.storage.getUserItem("notices")||{};saved[nid]={msg:msg,description:description,fnName:fnName,fnParams:fnParams},jsxc.storage.setUserItem("notices",saved),jsxc.notification.notify(msg,description||"",null,!0,jsxc.CONST.SOUNDS.NOTICE)}},remove:function(nid){var el=$("#jsxc_notice li[data-nid="+nid+"]");el.remove(),$("#jsxc_notice > span").text(--jsxc.notice._num||"");var s=jsxc.storage.getUserItem("notices");delete s[nid],jsxc.storage.setUserItem("notices",s)}},jsxc.l10n={en:{Logging_in:"Logging in…",your_connection_is_unencrypted:"Your connection is unencrypted.",your_connection_is_encrypted:"Your connection is encrypted.",your_buddy_closed_the_private_connection:"Your buddy closed the private connection.",start_private:"Start private",close_private:"Close private",your_buddy_is_verificated:"Your buddy is verified.",you_have_only_a_subscription_in_one_way:"You only have a one-way subscription.",authentication_query_sent:"Authentication query sent.",your_message_wasnt_send_please_end_your_private_conversation:"Your message was not sent. Please end your private conversation.",unencrypted_message_received:"Unencrypted message received:",your_message_wasnt_send_because_you_have_no_valid_subscription:"Your message was not sent because you have no valid subscription.",not_available:"Not available",no_connection:"No connection!",relogin:"relogin",trying_to_start_private_conversation:"Trying to start private conversation!",Verified:"Verified",Unverified:"Unverified",private_conversation_started:"Private conversation started.",private_conversation_aborted:"Private conversation aborted!",your_buddy_closed_the_private_conversation_you_should_do_the_same:"Your buddy closed the private conversation! You should do the same.",conversation_is_now_verified:"Conversation is now verified.",authentication_failed:"Authentication failed.",your_buddy_is_attempting_to_determine_:"You buddy is attempting to determine if he or she is really talking to you.",to_authenticate_to_your_buddy:"To authenticate to your buddy, ",enter_the_answer_and_click_answer:"enter the answer and click Answer.",enter_the_secret:"enter the secret.",Creating_your_private_key_:"Creating your private key; this may take a while.",Authenticating_a_buddy_helps_:"Authenticating a buddy helps ensure that the person you are talking to is really the one he or she claims to be.",How_do_you_want_to_authenticate_your_buddy:"How do you want to authenticate {{bid_name}} (<b>{{bid_jid}}</b>)?",Select_method:"Select method...",Manual:"Manual",Question:"Question",Secret:"Secret",To_verify_the_fingerprint_:"To verify the fingerprint, contact your buddy via some other trustworthy channel, such as the telephone.",Your_fingerprint:"Your fingerprint",Buddy_fingerprint:"Buddy fingerprint",Close:"Close",Compared:"Compared",To_authenticate_using_a_question_:"To authenticate using a question, pick a question whose answer is known only you and your buddy.",Ask:"Ask",To_authenticate_pick_a_secret_:"To authenticate, pick a secret known only to you and your buddy.",Compare:"Compare",Fingerprints:"Fingerprints",Authentication:"Authentication",Message:"Message",Add_buddy:"Add buddy",rename_buddy:"rename buddy",delete_buddy:"delete buddy",Login:"Login",Username:"Username",Password:"Password",Cancel:"Cancel",Connect:"Connect",Type_in_the_full_username_:"Type in the full username and an optional alias.",Alias:"Alias",Add:"Add",Subscription_request:"Subscription request",You_have_a_request_from:"You have a request from",Deny:"Deny",Approve:"Approve",Remove_buddy:"Remove buddy",You_are_about_to_remove_:"You are about to remove {{bid_name}} (<b>{{bid_jid}}</b>) from your buddy list. All related chats will be closed.",Continue_without_chat:"Continue without chat",Please_wait:"Please wait",Login_failed:"Chat login failed",Sorry_we_cant_authentikate_:"Authentication failed with the chat server. Maybe the password is wrong?",Retry:"Back",clear_history:"Clear history",New_message_from:"New message from",Should_we_notify_you_:"Should we notify you about new messages in the future?",Please_accept_:'Please click the "Allow" button at the top.',Hide_offline:"Hide offline contacts",Show_offline:"Show offline contacts",About:"About",dnd:"Do Not Disturb",Mute:"Mute",Unmute:"Unmute",Subscription:"Subscription",both:"both",Status:"Status",online:"online",chat:"chat",away:"away",xa:"extended away",offline:"offline",none:"none",Unknown_instance_tag:"Unknown instance tag.",Not_one_of_our_latest_keys:"Not one of our latest keys.",Received_an_unreadable_encrypted_message:"Received an unreadable encrypted message.",Online:"Online",Chatty:"Chatty",Away:"Away",Extended_away:"Extended away",Offline:"Offline",Friendship_request:"Friendship request",Confirm:"Confirm",Dismiss:"Dismiss",Remove:"Remove",Online_help:"Online help",FN:"Full name",N:" ",FAMILY:"Family name",GIVEN:"Given name",NICKNAME:"Nickname",URL:"URL",ADR:"Address",STREET:"Street Address",EXTADD:"Extended Address",LOCALITY:"Locality",REGION:"Region",PCODE:"Postal Code",CTRY:"Country",TEL:"Telephone",NUMBER:"Number",EMAIL:"Email",USERID:" ",ORG:"Organization",ORGNAME:"Name",ORGUNIT:"Unit",TITLE:"Job title",ROLE:"Role",BDAY:"Birthday",DESC:"Description",PHOTO:" ",send_message:"Send message",get_info:"Show information",Settings:"Settings",Priority:"Priority",Save:"Save",User_settings:"User settings",A_fingerprint_:"A fingerprint is used to make sure that the person you are talking to is who he or she is saying.",Your_roster_is_empty_add_a:"Your roster is empty, add a ",new_buddy:"new buddy",is:"is",Login_options:"Login options",BOSH_url:"BOSH URL",Domain:"Domain",Resource:"Resource",On_login:"On login",Received_an_unencrypted_message:"Received an unencrypted message",Sorry_your_buddy_doesnt_provide_any_information:"Sorry, your buddy does not provide any information.",Info_about:"Info about",Authentication_aborted:"Authentication aborted.",Authentication_request_received:"Authentication request received.",Do_you_want_to_display_them:"Do you want to display them?",Log_in_without_chat:"Log in without chat",has_come_online:"has come online",Unknown_sender:"Unknown sender",You_received_a_message_from_an_unknown_sender:"You received a message from an unknown sender"},de:{Logging_in:"Login läuft…",your_connection_is_unencrypted:"Deine Verbindung ist UNverschlüsselt.",your_connection_is_encrypted:"Deine Verbindung ist verschlüsselt.",your_buddy_closed_the_private_connection:"Dein Freund hat die private Verbindung getrennt.",start_private:"Privat starten",close_private:"Privat abbrechen",your_buddy_is_verificated:"Dein Freund ist verifiziert.",you_have_only_a_subscription_in_one_way:"Die Freundschaft ist nur einseitig.",authentication_query_sent:"Authentifizierungsanfrage gesendet.",your_message_wasnt_send_please_end_your_private_conversation:"Deine Nachricht wurde nicht gesendet. Bitte beende die private Konversation.",unencrypted_message_received:"Unverschlüsselte Nachricht erhalten.",your_message_wasnt_send_because_you_have_no_valid_subscription:"Deine Nachricht wurde nicht gesandt, da die Freundschaft einseitig ist.",not_available:"Nicht verfügbar.",no_connection:"Keine Verbindung.",relogin:"Neu anmelden.",trying_to_start_private_conversation:"Versuche private Konversation zu starten.",Verified:"Verifiziert",Unverified:"Unverifiziert",private_conversation_started:"Private Konversation gestartet.",private_conversation_aborted:"Private Konversation abgebrochen.",your_buddy_closed_the_private_conversation_you_should_do_the_same:"Dein Freund hat die private Konversation beendet. Das solltest du auch tun!",conversation_is_now_verified:"Konversation ist jetzt verifiziert",authentication_failed:"Authentifizierung fehlgeschlagen.",your_buddy_is_attempting_to_determine_:"Dein Freund versucht herauszufinden ob er wirklich mit dir redet.",to_authenticate_to_your_buddy:"Um dich gegenüber deinem Freund zu verifizieren ",enter_the_answer_and_click_answer:"gib die Antwort ein und klick auf Antworten.",enter_the_secret:"gib das Geheimnis ein.",Creating_your_private_key_:"Wir werden jetzt deinen privaten Schlüssel generieren. Das kann einige Zeit in Anspruch nehmen.",Authenticating_a_buddy_helps_:"Einen Freund zu authentifizieren hilft sicher zustellen, dass die Person mit der du sprichst auch die ist die sie sagt.",How_do_you_want_to_authenticate_your_buddy:"Wie willst du {{bid_name}} (<b>{{bid_jid}}</b>) authentifizieren?",Select_method:"Wähle...",Manual:"Manual",Question:"Frage",Secret:"Geheimnis",To_verify_the_fingerprint_:"Um den Fingerprint zu verifizieren kontaktiere dein Freund über einen anderen Kommunikationsweg. Zum Beispiel per Telefonanruf.",Your_fingerprint:"Dein Fingerprint",Buddy_fingerprint:"Sein/Ihr Fingerprint",Close:"Schließen",Compared:"Verglichen",To_authenticate_using_a_question_:"Um die Authentifizierung per Frage durchzuführen, wähle eine Frage bei welcher nur dein Freund die Antwort weiß.",Ask:"Frage",To_authenticate_pick_a_secret_:"Um deinen Freund zu authentifizieren, wähle ein Geheimnis welches nur deinem Freund und dir bekannt ist.",Compare:"Vergleiche",Fingerprints:"Fingerprints",Authentication:"Authentifizierung",Message:"Nachricht",Add_buddy:"Freund hinzufügen",rename_buddy:"Freund umbenennen",delete_buddy:"Freund löschen",Login:"Anmeldung",Username:"Benutzername",Password:"Passwort",Cancel:"Abbrechen",Connect:"Verbinden",Type_in_the_full_username_:"Gib bitte den vollen Benutzernamen und optional ein Alias an.",Alias:"Alias",Add:"Hinzufügen",Subscription_request:"Freundschaftsanfrage",You_have_a_request_from:"Du hast eine Anfrage von",Deny:"Ablehnen",Approve:"Bestätigen",Remove_buddy:"Freund entfernen",You_are_about_to_remove_:"Du bist gerade dabei {{bid_name}} (<b>{{bid_jid}}</b>) von deiner Kontaktliste zu entfernen. Alle Chats werden geschlossen.",Continue_without_chat:"Weiter ohne Chat",Please_wait:"Bitte warten",Login_failed:"Chat-Anmeldung fehlgeschlagen",Sorry_we_cant_authentikate_:"Der Chatserver hat die Anmeldung abgelehnt. Falsches Passwort?",Retry:"Zurück",clear_history:"Lösche Verlauf",New_message_from:"Neue Nachricht von",Should_we_notify_you_:"Sollen wir dich in Zukunft über eingehende Nachrichten informieren, auch wenn dieser Tab nicht im Vordergrund ist?",Please_accept_:'Bitte klick auf den "Zulassen" Button oben.',Menu:"Menü",Hide_offline:"Offline ausblenden",Show_offline:"Offline einblenden",About:"Über",dnd:"Beschäftigt",Mute:"Ton aus",Unmute:"Ton an",Subscription:"Bezug",both:"beidseitig",Status:"Status",online:"online",chat:"chat",away:"abwesend",xa:"länger abwesend",offline:"offline",none:"keine",Unknown_instance_tag:"Unbekannter instance tag.",Not_one_of_our_latest_keys:"Nicht einer unserer letzten Schlüssel.",Received_an_unreadable_encrypted_message:"Eine unlesbare verschlüsselte Nachricht erhalten.",Online:"Online",Chatty:"Gesprächig",Away:"Abwesend",Extended_away:"Länger abwesend",Offline:"Offline",Friendship_request:"Freundschaftsanfrage",Confirm:"Bestätigen",Dismiss:"Ablehnen",Remove:"Löschen",Online_help:"Online Hilfe",FN:"Name",N:" ",FAMILY:"Familienname",GIVEN:"Vorname",NICKNAME:"Spitzname",URL:"URL",ADR:"Adresse",STREET:"Straße",EXTADD:"Zusätzliche Adresse",LOCALITY:"Ortschaft",REGION:"Region",PCODE:"Postleitzahl",CTRY:"Land",TEL:"Telefon",NUMBER:"Nummer",EMAIL:"E-Mail",USERID:" ",ORG:"Organisation",ORGNAME:"Name",ORGUNIT:"Abteilung",TITLE:"Titel",ROLE:"Rolle",BDAY:"Geburtstag",DESC:"Beschreibung",PHOTO:" ",send_message:"Sende Nachricht",get_info:"Benutzerinformationen",Settings:"Einstellungen",Priority:"Priorität",Save:"Speichern",User_settings:"Benutzereinstellungen",A_fingerprint_:"Ein Fingerabdruck wird dazu benutzt deinen Gesprächspartner zu identifizieren.",Your_roster_is_empty_add_a:"Deine Freundesliste ist leer, füge einen neuen Freund ",new_buddy:"hinzu",is:"ist",Login_options:"Anmeldeoptionen",BOSH_url:"BOSH url",Domain:"Domain",Resource:"Ressource",On_login:"Beim Anmelden",Received_an_unencrypted_message:"Unverschlüsselte Nachricht empfangen",Sorry_your_buddy_doesnt_provide_any_information:"Dein Freund stellt leider keine Informationen bereit.",Info_about:"Info über",Authentication_aborted:"Authentifizierung abgebrochen.",Authentication_request_received:"Authentifizierunganfrage empfangen.",Log_in_without_chat:"Anmelden ohne Chat",Do_you_want_to_display_them:"Möchtest du sie sehen?",has_come_online:"ist online gekommen",Unknown_sender:"Unbekannter Sender",You_received_a_message_from_an_unknown_sender:"Du hast eine Nachricht von einem unbekannten Sender erhalten"},es:{Logging_in:"Por favor, espere...",your_connection_is_unencrypted:"Su conexión no está cifrada.",your_connection_is_encrypted:"Su conexión está cifrada.",your_buddy_closed_the_private_connection:"Su amigo ha cerrado la conexión privada.",start_private:"Iniciar privado",close_private:"Cerrar privado",your_buddy_is_verificated:"Tu amigo está verificado.",you_have_only_a_subscription_in_one_way:"Sólo tienes una suscripción de un modo.",authentication_query_sent:"Consulta de verificación enviada.",your_message_wasnt_send_please_end_your_private_conversation:"Su mensaje no fue enviado. Por favor, termine su conversación privada.",unencrypted_message_received:"Mensaje no cifrado recibido:",your_message_wasnt_send_because_you_have_no_valid_subscription:"Su mensaje no se ha enviado, porque usted no tiene suscripción válida.",not_available:"No disponible",no_connection:"Sin conexión!",relogin:"iniciar sesión nuevamente",trying_to_start_private_conversation:"Intentando iniciar una conversación privada!",Verified:"Verificado",Unverified:"No verificado",private_conversation_started:"se inició una conversación privada.",private_conversation_aborted:"Conversación privada abortada!",your_buddy_closed_the_private_conversation_you_should_do_the_same:"Su amigo cerró la conversación privada! Usted debería hacer lo mismo.",conversation_is_now_verified:"La conversación es ahora verificada.",authentication_failed:"Fallo la verificación.",your_buddy_is_attempting_to_determine_:"Tu amigo está tratando de determinar si él o ella está realmente hablando con usted.",to_authenticate_to_your_buddy:"Para autenticar a su amigo, ",enter_the_answer_and_click_answer:"introduce la respuesta y haga clic en Contestar.",enter_the_secret:"especifique el secreto.",Creating_your_private_key_:"Ahora vamos a crear su clave privada. Esto puede tomar algún tiempo.",Authenticating_a_buddy_helps_:"Autenticación de un amigo ayuda a garantizar que la persona que está hablando es quien él o ella está diciendo.",How_do_you_want_to_authenticate_your_buddy:"¿Cómo desea autenticar {{bid_name}} (<b>{{bid_jid}}</b>)?",Select_method:"Escoja un método...",Manual:"Manual",Question:"Pregunta",Secret:"Secreto",To_verify_the_fingerprint_:"Para verificar la firma digital, póngase en contacto con su amigo a través de algún otro canal autenticado, como el teléfono.",Your_fingerprint:"Tu firma digital",Buddy_fingerprint:"firma digital de tu amigo",Close:"Cerrar",Compared:"Comparado",To_authenticate_using_a_question_:"Para autenticar mediante una pregunta, elegir una pregunta cuya respuesta se conoce sólo usted y su amigo.",Ask:"Preguntar",To_authenticate_pick_a_secret_:"Para autenticar, elija un secreto conocido sólo por usted y su amigo.",Compare:"Comparar",Fingerprints:"Firmas digitales",Authentication:"Autenticación",Message:"Mensaje",Add_buddy:"Añadir amigo",rename_buddy:"renombrar amigo",delete_buddy:"eliminar amigo",Login:"Iniciar Sesión",Username:"Usuario",Password:"Contraseña",Cancel:"Cancelar",Connect:"Conectar",Type_in_the_full_username_:"Escriba el usuario completo y un alias opcional.",Alias:"Alias",Add:"Añadir",Subscription_request:"Solicitud de suscripción",You_have_a_request_from:"Tienes una petición de",Deny:"Rechazar",Approve:"Aprobar",Remove_buddy:"Eliminar amigo",You_are_about_to_remove_:"Vas a eliminar a {{bid_name}} (<b>{{bid_jid}}</b>) de tu lista de amigos. Todas las conversaciones relacionadas serán cerradas.",Continue_without_chat:"Continuar",Please_wait:"Espere por favor",Login_failed:"Fallo el inicio de sesión",Sorry_we_cant_authentikate_:"Lo sentimos, no podemos autentificarlo en nuestro servidor de chat. ¿Tal vez la contraseña es incorrecta?",Retry:"Reintentar",clear_history:"Borrar el historial",New_message_from:"Nuevo mensaje de",Should_we_notify_you_:"¿Debemos notificarle sobre nuevos mensajes en el futuro?",Please_accept_:'Por favor, haga clic en el botón "Permitir" en la parte superior.',dnd:"No Molestar",Mute:"Desactivar sonido",Unmute:"Activar sonido",Subscription:"Suscripción",both:"ambos",Status:"Estado",online:"en línea",chat:"chat",away:"ausente",xa:"mas ausente",offline:"desconectado",none:"nadie",Unknown_instance_tag:"Etiqueta de instancia desconocida.",Not_one_of_our_latest_keys:"No de nuestra ultima tecla.",Received_an_unreadable_encrypted_message:"Se recibió un mensaje cifrado ilegible.",Online:"En linea",Chatty:"Hablador",Away:"Ausente",Extended_away:"Mas ausente",Offline:"Desconectado",Friendship_request:"Solicitud de amistad",Confirm:"Confirmar",Dismiss:"Rechazar",Remove:"Eliminar",Online_help:"Ayuda en línea",FN:"Nombre completo ",N:" ",FAMILY:"Apellido",GIVEN:"Nombre",NICKNAME:"Apodar",URL:"URL",ADR:"Dirección",STREET:"Calle",EXTADD:"Extendido dirección",LOCALITY:"Población",REGION:"Región",PCODE:"Código postal",CTRY:"País",TEL:"Teléfono",NUMBER:"Número",EMAIL:"Emilio",USERID:" ",ORG:"Organización",ORGNAME:"Nombre",ORGUNIT:"Departamento",TITLE:"Título",ROLE:"Rol",BDAY:"Cumpleaños",DESC:"Descripción",PHOTO:" ",send_message:"mandar un texto",get_info:"obtener información",Settings:"Ajustes",Priority:"Prioridad",Save:"Guardar",User_settings:"Configuración de usuario",A_fingerprint_:"La huella digital se utiliza para que puedas estar seguro que la persona con la que estas hablando es quien realmente dice ser",Your_roster_is_empty_add_a:"Tu lista de amigos esta vacia",new_buddy:"Nuevo amigo",is:"es",Login_options:"Opciones de login",BOSH_url:"BOSH url",Domain:"Dominio",Resource:"Recurso",On_login:"Iniciar sesión",Received_an_unencrypted_message:"Recibe un mensaje no cifrado"}}
}(jQuery);/*!
- * jsxc v1.0.0 - 2014-11-06
+ * jsxc v1.1.0-beta - 2015-02-03
*
- * Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
+ * Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
*
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0
+ * @version 1.1.0-beta
* @license MIT
*/
-var RTC=null,RTCPeerconnection=null;jsxc.gui.template.incomingCall='<h3>%%Incoming_call%%</h3> <p>%%Do_you_want_to_accept_the_call_from%% {{bid_name}}?</p> <p class="jsxc_right"> <a href="#" class="button jsxc_reject">%%Reject%%</a> <a href="#" class="button creation jsxc_accept">%%Accept%%</a> </p>',jsxc.gui.template.allowMediaAccess="<p>%%Please_allow_access_to_microphone_and_camera%%</p>",jsxc.gui.template.videoWindow='<div class="jsxc_webrtc"> <div class="jsxc_chatarea"> <ul></ul> </div> <div class="jsxc_videoContainer"> <video class="jsxc_localvideo" autoplay></video> <video class="jsxc_remotevideo" autoplay></video> <div class="jsxc_status"></div> <div class="bubblingG"> <span id="bubblingG_1"> </span> <span id="bubblingG_2"> </span> <span id="bubblingG_3"> </span> </div> <div class="jsxc_noRemoteVideo"> <div> <div></div> <p>%%No_video_signal%%</p> <div></div> </div> </div> </div> <div class="jsxc_controlbar"> <button type="button" class="jsxc_hangUp">%%hang_up%%</button> <input type="range" class="jsxc_volume" min="0.0" max="1.0" step="0.05" value="0.5" /> <div class="jsxc_buttongroup"> <button type="button" class="jsxc_snapshot">%%snapshot%%</button><button type="button" class="jsxc_snapshots">&#9660;</button> </div> <!-- <button type="button" class="jsxc_mute_local">%%mute_my_audio%%</button> <button type="button" class="jsxc_pause_local">%%pause_my_video%%</button> --> <button type="button" class="jsxc_showchat">%%chat%%</button> <button type="button" class="jsxc_fullscreen">%%fullscreen%%</button> <button type="button" class="jsxc_info">%%Info%%</button> </div> <div class="jsxc_multi"> <div class="jsxc_snapshotbar"> <p>No pictures yet!</p> </div>\n <!--<div class="jsxc_chatarea"> <ul></ul> </div>--> <div class="jsxc_infobar"></div> </div> </div>',function($){"use strict";jsxc.webrtc={conn:null,localStream:null,remoteStream:null,last_caller:null,AUTO_ACCEPT:!1,reqVideoFeatures:["urn:xmpp:jingle:apps:rtp:video","urn:xmpp:jingle:apps:rtp:audio","urn:xmpp:jingle:transports:ice-udp:1","urn:xmpp:jingle:apps:dtls:0"],chatJids:{},init:function(){var self=jsxc.webrtc;return self.conn=jsxc.xmpp.conn,"firefox"===RTC.browser&&(self.conn.jingle.media_constraints.mandatory.MozDontOfferDataChannel=!0),self.conn.jingle?(self.conn.jingle.PRANSWER=!1,self.conn.jingle.AUTOACCEPT=!1,self.conn.jingle.ice_config=jsxc.storage.getUserItem("iceConfig"),self.conn.jingle.MULTIPARTY=!1,self.conn.jingle.pc_constraints=RTC.pc_constraints,$(document).on("message.jsxc",$.proxy(self.onMessage,self)),$(document).on("presence.jsxc",$.proxy(self.onPresence,self)),$(document).on("mediaready.jingle",$.proxy(self.onMediaReady,self)),$(document).on("mediafailure.jingle",$.proxy(self.onMediaFailure,self)),$(document).on("callincoming.jingle",$.proxy(self.onCallIncoming,self)),$(document).on("callterminated.jingle",$.proxy(self.onCallTerminated,self)),$(document).on("ringing.jingle",$.proxy(self.onCallRinging,self)),$(document).on("remotestreamadded.jingle",$.proxy(self.onRemoteStreamAdded,self)),$(document).on("remotestreamremoved.jingle",$.proxy(self.onRemoteStreamRemoved,self)),$(document).on("iceconnectionstatechange.jingle",$.proxy(self.onIceConnectionStateChanged,self)),$(document).on("nostuncandidates.jingle",$.proxy(self.noStunCandidates,self)),$(document).on("error.jingle",function(ev,sid,error){jsxc.error("[JINGLE]",error)}),self.conn.disco&&self.conn.disco.addFeature("urn:xmpp:jingle:apps:dtls:0"),self.conn.caps&&$(document).on("caps.strophe",$.proxy(self.onCaps,self)),void self.getTurnCrendentials()):void jsxc.error("No jingle plugin found!")},getTurnCrendentials:function(){if(!jsxc.options.turnCredentialsPath)return void jsxc.debug("No path for TURN credentials defined!");var ttl=(jsxc.storage.getUserItem("iceValidity")||0)-(new Date).getTime();return ttl>0?void window.setTimeout(jsxc.webrtc.getTurnCrendentials,ttl+500):void $.ajax(jsxc.options.turnCredentialsPath,{async:!0,success:function(data){var iceConfig={iceServers:[{url:"turn:"+data.url,credential:data.credential,username:data.username}]};jsxc.webrtc.conn.jingle.ice_config=iceConfig,jsxc.storage.setUserItem("iceConfig",iceConfig),jsxc.storage.setUserItem("iceValidity",(new Date).getTime()+1e3*data.ttl)},dataType:"json"})},getCapableRes:function(jid){var self=jsxc.webrtc,bid=jsxc.jidToBid(jid),res=jsxc.storage.getUserItem("res",bid)||[],available=[];return $.each(res,function(r){self.conn.caps.hasFeatureByJid(bid+"/"+r,self.reqVideoFeatures)&&available.push(r)}),available},onAddRosterItem:function(event,bid,data,el){var self=jsxc.webrtc;if(!self.conn)return void $(document).one("connectionReady.jsxc",function(){self.onAddRosterItem(null,bid,data,el)});var videoIcon=$('<div class="jsxc_video jsxc_disabled" title="'+jsxc.l.Start_video_call+'"></div>');videoIcon.click(function(){return self.startCall(data.jid),!1}),el.find(".jsxc_options.jsxc_left").append(videoIcon),el.on("extra.jsxc",function(){self.updateIcon(bid)})},initWindow:function(event,win){var self=jsxc.webrtc;if(jsxc.debug("webrtc.initWindow"),!self.conn)return void $(document).one("connectionReady.jsxc",function(){self.initWindow(null,win)});var div=$("<div>").addClass("jsxc_video");win.find(".jsxc_transfer:eq(1)").after(div),self.updateIcon(jsxc.jidToBid(win.data("jid")))},updateIcon:function(bid){jsxc.debug("Update icon",bid);var self=jsxc.webrtc,win=jsxc.gui.window.get(bid),jid=win.data("jid")||jsxc.storage.getUserItem("buddy",bid).jid,el=win.find(".jsxc_video").add(jsxc.gui.roster.getItem(bid).find(".jsxc_video")),capableRes=self.getCapableRes(jid),targetRes=Strophe.getResourceFromJid(jid);null===targetRes&&$.each(jsxc.storage.getUserItem("buddy",bid).res,function(index,val){return capableRes.indexOf(val)>-1?(targetRes=val,!1):void 0}),el.off("click"),capableRes.indexOf(targetRes)>-1?(el.click(function(){self.startCall(jid+"/"+targetRes)}),el.removeClass("jsxc_disabled"),el.attr("title",jsxc.translate("%%Start video call%%"))):(el.addClass("jsxc_disabled"),el.attr("title",jsxc.translate("%%Video call not possible.%%")))},onMessage:function(e,from){var self=jsxc.webrtc,bid=jsxc.jidToBid(from);jsxc.debug("webrtc.onmessage",from),self.chatJids[bid]!==from&&(self.updateIcon(bid),self.chatJids[bid]=from)},onPresence:function(ev,jid){var self=jsxc.webrtc;jsxc.debug("webrtc.onpresence",jid),self.updateIcon(jsxc.jidToBid(jid))},setStatus:function(txt,d){var status=$(".jsxc_webrtc .jsxc_status"),duration="undefined"==typeof d||null===d?4e3:d;if(jsxc.debug("[Webrtc]",txt),status.html()&&(txt=status.html()+"<br />"+txt),status.html(txt),status.css({"margin-left":"-"+status.width()/2+"px",opacity:0,display:"block"}),status.stop().animate({opacity:1}),clearTimeout(status.data("timeout")),0!==duration){var to=setTimeout(function(){status.stop().animate({opacity:0},function(){status.html("")})},duration);status.data("timeout",to)}},onCaps:function(event,jid){var self=jsxc.webrtc;self.updateIcon(jsxc.jidToBid(jid))},onMediaReady:function(event,stream){jsxc.debug("media ready");var self=jsxc.webrtc;self.localStream=stream,self.conn.jingle.localStream=stream,jsxc.gui.showVideoWindow(self.last_caller);var i;for(i=0;i<stream.getAudioTracks().length;i++)self.setStatus(stream.getAudioTracks().length>0?"Use local audio device.":"No local audio device."),jsxc.debug('using audio device "'+stream.getAudioTracks()[i].label+'"');for(i=0;i<stream.getVideoTracks().length;i++)self.setStatus(stream.getVideoTracks().length>0?"Use local video device.":"No local video device."),jsxc.debug('using video device "'+stream.getVideoTracks()[i].label+'"'),$("#jsxc_dialog .jsxc_localvideo").show();$(document).one("cleanup.dialog.jsxc",$.proxy(self.hangUp,self)),$(document).trigger("finish.mediaready.jsxc")},onMediaFailure:function(ev,err){this.setStatus("media failure"),jsxc.gui.window.postMessage(jsxc.jidToBid(jsxc.webrtc.last_caller),"sys",jsxc.translate("%%Media failure%%: ")+err.name),jsxc.debug("media failure: "+err.name)},onCallIncoming:function(event,sid){jsxc.debug("incoming call"+sid);var self=this,sess=this.conn.jingle.sessions[sid],bid=jsxc.jidToBid(sess.peerjid);if(jsxc.gui.window.postMessage(bid,"sys",jsxc.translate("%%Incoming call.%%")),jsxc.notification.notify(jsxc.translate("%%Incoming call%%"),jsxc.translate("%%from%% "+bid)),sess.sendRinging(),jsxc.webrtc.last_caller=sess.peerjid,jsxc.switchEvents({"mediaready.jingle":function(event,stream){self.setStatus("Accept call"),sess.localStream=stream,sess.peerconnection.addStream(stream),sess.sendAnswer(),sess.accept()},"mediafailure.jingle":function(){sess.sendTerminate("decline"),sess.terminate()}}),jsxc.webrtc.AUTO_ACCEPT)return void self.reqUserMedia();var dialog=jsxc.gui.dialog.open(jsxc.gui.template.get("incomingCall",bid),{noClose:!0});dialog.find(".jsxc_accept").click(function(){$(document).trigger("accept.call.jsxc"),self.reqUserMedia()}),dialog.find(".jsxc_reject").click(function(){jsxc.gui.dialog.close(),$(document).trigger("reject.call.jsxc"),sess.sendTerminate("decline"),sess.terminate()})},onCallTerminated:function(event,sid,reason,text){this.setStatus("call terminated "+sid+(reason?": "+reason+" "+text:""));var bid=jsxc.jidToBid(jsxc.webrtc.last_caller);this.localStream&&this.localStream.stop(),$(".jsxc_videoContainer").length&&($(".jsxc_remotevideo")[0].src="",$(".jsxc_localvideo")[0].src=""),this.conn.jingle.localStream=null,this.localStream=null,this.remoteStream=null;var win=$("#jsxc_dialog .jsxc_chatarea > ul > li");$("#jsxc_windowList > ul").prepend(win.detach()),win.find(".slimScrollDiv").resizable("enable"),$(document).off("cleanup.dialog.jsxc"),$(document).off("error.jingle"),jsxc.gui.dialog.close(),jsxc.gui.window.postMessage(bid,"sys",jsxc.translate("%%Call terminated%%"+(reason?": %%"+reason+"%%":"")+"."))},onCallRinging:function(){this.setStatus("ringing...",0)},onRemoteStreamAdded:function(event,data,sid){this.setStatus("Remote stream for session "+sid+" added.");var stream=data.stream;this.remoteStream=stream;var sess=this.conn.jingle.sessions[sid],isVideoDevice=stream.getVideoTracks().length>0,isAudioDevice=stream.getAudioTracks().length>0;sess.remoteDevices={video:isVideoDevice,audio:isAudioDevice},this.setStatus(isVideoDevice?"Use remote video device.":"No remote video device"),this.setStatus(isAudioDevice?"Use remote audio device.":"No remote audio device"),$(".jsxc_remotevideo").length&&(RTC.attachMediaStream($("#jsxc_dialog .jsxc_remotevideo"),stream),$("#jsxc_dialog .jsxc_"+(isVideoDevice?"remotevideo":"noRemoteVideo")).addClass("jsxc_deviceAvailable"))},onRemoteStreamRemoved:function(event,data,sid){this.setStatus("Remote stream for session "+sid+" removed.")},onIceConnectionStateChanged:function(event,sid,sess){var sigState=sess.peerconnection.signalingState,iceCon=sess.peerconnection.iceConnectionState;if(jsxc.debug("iceGat state for "+sid,sess.peerconnection.iceGatheringState),jsxc.debug("iceCon state for "+sid,iceCon),jsxc.debug("sig state for "+sid,sigState),"stable"!==sigState||"connected"!==iceCon&&"completed"!==iceCon)"failed"===iceCon&&(jsxc.gui.window.postMessage(jsxc.jidToBid(sess.peerjid),"sys",jsxc.translate("%%ICE connection failure%%.")),$(document).off("cleanup.dialog.jsxc"),sess.sendTerminate("failed-transport"),sess.terminate(),$(document).trigger("callterminated.jingle"));else{$("#jsxc_dialog .jsxc_deviceAvailable").show(),$("#jsxc_dialog .bubblingG").hide();var localSDP=sess.peerconnection.localDescription.sdp,remoteSDP=sess.peerconnection.remoteDescription.sdp;sess.local_fp=SDPUtil.parse_fingerprint(SDPUtil.find_line(localSDP,"a=fingerprint:")).fingerprint,sess.remote_fp=SDPUtil.parse_fingerprint(SDPUtil.find_line(remoteSDP,"a=fingerprint:")).fingerprint;var ip_regex="(\\d{1,3}\\.\\d{1,3}.\\d{1,3}\\.\\d{1,3}) \\d+ typ host";sess.remote_ip=remoteSDP.match(new RegExp(ip_regex))[1],sess.local_ip=localSDP.match(new RegExp(ip_regex))[1];for(var match,regex=new RegExp(ip_regex,"g");null!==(match=regex.exec(remoteSDP));)if(match[1]!==sess.remote_ip)return void alert("!!! WARNING !!!\n\nPossible Man-in-the-middle attack detected!\n\nYou should close the connection.");var text="<p>";text+="<b>"+jsxc.translate("%%Local IP%%: ")+"</b>"+sess.local_ip+"<br />",text+="<b>"+jsxc.translate("%%Remote IP%%: ")+"</b>"+sess.remote_ip+"<br />",text+="<b>"+jsxc.translate("%%Local Fingerprint%%: ")+"</b>"+sess.local_fp+"<br />",text+="<b>"+jsxc.translate("%%Remote Fingerprint%%: ")+"</b>"+sess.remote_fp,text+="</p>",$("#jsxc_dialog .jsxc_infobar").html(text)}},noStunCandidates:function(){},startCall:function(jid,um){var self=this;return null===Strophe.getResourceFromJid(jid)?void jsxc.debug("We need a full jid"):(self.last_caller=jid,jsxc.switchEvents({"finish.mediaready.jsxc":function(){self.setStatus("Initiate call"),jsxc.gui.window.postMessage(jsxc.jidToBid(jid),"sys",jsxc.translate("%%Call started.%%")),$(document).one("error.jingle",function(e,sid,error){"offer"===error.source&&($(document).off("cleanup.dialog.jsxc"),setTimeout(function(){jsxc.gui.showAlert("Sorry, we couldn't establish a connection. Maybe your buddy is offline.")},500))}),self.conn.jingle.initiate(jid,self.conn.jid.toLowerCase())},"mediafailure.jingle":function(){jsxc.gui.dialog.close()}}),void self.reqUserMedia(um))},hangUp:function(reason,text){$(document).off("cleanup.dialog.jsxc"),jsxc.webrtc.conn.jingle.terminate(null,reason,text),$(document).trigger("callterminated.jingle")},reqUserMedia:function(um){return this.localStream?void $(document).trigger("mediaready.jingle",[this.localStream]):(um=um||["video","audio"],jsxc.gui.dialog.open(jsxc.gui.template.get("allowMediaAccess"),{noClose:!0}),this.setStatus("please allow access to microphone and camera"),void("undefined"!=typeof MediaStreamTrack&&"undefined"!=typeof MediaStreamTrack.getSources?MediaStreamTrack.getSources(function(sourceInfo){var availableDevices=sourceInfo.map(function(el){return el.kind});um=um.filter(function(el){return-1!==availableDevices.indexOf(el)}),getUserMediaWithConstraints(um)}):getUserMediaWithConstraints(um)))},snapshot:function(video){video||jsxc.debug("Missing video element"),$(".jsxc_snapshotbar p").remove();var canvas=$("<canvas/>").css("display","none").appendTo("body").attr({width:video.width(),height:video.height()}).get(0),ctx=canvas.getContext("2d");ctx.drawImage(video[0],0,0);var img=$("<img/>"),url=null;try{url=canvas.toDataURL("image/jpeg")}catch(err){return void jsxc.warn("Error",err)}img[0].src=url;var link=$("<a/>").attr({target:"_blank",href:url});link.append(img),$(".jsxc_snapshotbar").append(link),canvas.remove()}},jsxc.gui.showVideoWindow=function(jid){var self=jsxc.webrtc;$(document).one("complete.dialog.jsxc",function(){$("#jsxc_dialog .jsxc_localvideo")[0].muted=!0,$("#jsxc_dialog .jsxc_localvideo")[0].volume=0;var rv=$("#jsxc_dialog .jsxc_remotevideo"),lv=$("#jsxc_dialog .jsxc_localvideo");lv.draggable({containment:"parent"}),RTC.attachMediaStream(lv,self.localStream);var w_dialog=$("#jsxc_dialog").width(),w_remote=rv.width();if(w_remote>w_dialog){var scale=w_dialog/w_remote,new_h=rv.height()*scale,new_w=w_dialog,vc=$("#jsxc_dialog .jsxc_videoContainer");rv.height(new_h),rv.width(new_w),vc.height(new_h),vc.width(new_w),lv.height(lv.height()*scale),lv.width(lv.width()*scale)}self.remoteStream&&(RTC.attachMediaStream(rv,self.remoteStream),$("#jsxc_dialog .jsxc_"+(self.remoteStream.getVideoTracks().length>0?"remotevideo":"noRemoteVideo")).addClass("jsxc_deviceAvailable"));var toggleMulti=function(elem,open){$("#jsxc_dialog .jsxc_multi > div").not(elem).slideUp();var opt={complete:jsxc.gui.dialog.resize};open?elem.slideDown(opt):elem.slideToggle(opt)},win=jsxc.gui.window.open(jsxc.jidToBid(jid));win.find(".slimScrollDiv").resizable("disable"),win.find(".jsxc_textarea").slimScroll({height:413}),win.find(".jsxc_emoticons").css("top","419px"),$("#jsxc_dialog .jsxc_chatarea ul").append(win.detach()),$("#jsxc_dialog .jsxc_hangUp").click(function(){jsxc.webrtc.hangUp()}),$("#jsxc_dialog .jsxc_snapshot").click(function(){jsxc.webrtc.snapshot(rv),toggleMulti($("#jsxc_dialog .jsxc_snapshotbar"),!0)}),$("#jsxc_dialog .jsxc_snapshots").click(function(){toggleMulti($("#jsxc_dialog .jsxc_snapshotbar"))}),$("#jsxc_dialog .jsxc_showchat").click(function(){var chatarea=$("#jsxc_dialog .jsxc_chatarea");chatarea.is(":hidden")?(chatarea.show(),$("#jsxc_dialog .jsxc_webrtc").width("900"),jsxc.gui.dialog.resize({width:"920px"})):(chatarea.hide(),$("#jsxc_dialog .jsxc_webrtc").width("650"),jsxc.gui.dialog.resize({width:"660px"}))}),$("#jsxc_dialog .jsxc_info").click(function(){toggleMulti($("#jsxc_dialog .jsxc_infobar"))}),$("#jsxc_dialog .jsxc_fullscreen").click(function(){$.support.fullscreen&&($(document).one("disabled.fullscreen",function(){lv.removeAttr("style")}),$("#jsxc_dialog .jsxc_videoContainer").fullscreen())}),$("#jsxc_dialog .jsxc_volume").change(function(){rv[0].volume=$(this).val()}),$("#jsxc_dialog .jsxc_volume").dblclick(function(){$(this).val(.5)})}),jsxc.gui.dialog.open(jsxc.gui.template.get("videoWindow"),{noClose:!0})},$.extend(jsxc.CONST,{KEYCODE_ENTER:13,KEYCODE_ESC:27}),$(document).ready(function(){RTC=setupRTC(),null!==RTC&&(RTCPeerconnection=RTC.peerconnection,$(document).on("add.roster.jsxc",jsxc.webrtc.onAddRosterItem),$(document).on("init.window.jsxc",jsxc.webrtc.initWindow),$(document).on("attached.jsxc",jsxc.webrtc.init))}),$.extend(jsxc.l10n.en,{Please_allow_access_to_microphone_and_camera:'Please click the "Allow" button at the top, to allow access to microphone and camera.',Incoming_call:"Incoming call",from:"from",Do_you_want_to_accept_the_call_from:"Do you want to accept the call from",Reject:"Reject",Accept:"Accept",hang_up:"hang up",snapshot:"snapshot",mute_my_audio:"mute my audio",pause_my_video:"pause my video",fullscreen:"fullscreen",Info:"Info",Local_IP:"Local IP",Remote_IP:"Remote IP",Local_Fingerprint:"Local fingerprint",Remote_Fingerprint:"Remote fingerprint",Video_call_not_possible:"Video call not possible. Your buddy does not support video calls.",Start_video_call:"Start video call"}),$.extend(jsxc.l10n.de,{Please_allow_access_to_microphone_and_camera:'Bitte klick auf den "Zulassen" Button oben, um den Zugriff auf Kamera und Mikrofon zu erlauben.',Incoming_call:"Eingehender Anruf",from:"von",Do_you_want_to_accept_the_call_from:"Möchtest Du den Anruf annehmen von",Reject:"Ablehnen",Accept:"Annehmen",hang_up:"Auflegen",snapshot:"Schnappschuss",mute_my_audio:"Mein Ton aus",pause_my_video:"Mein Video pausieren",fullscreen:"Vollbild",Info:"Info",Local_IP:"Lokale IP",Remote_IP:"Remote IP",Local_Fingerprint:"Lokaler Fingerprint",Remote_Fingerprint:"Remote Fingerprint",Video_call_not_possible:"Videoanruf nicht verfügbar. Dein Gesprächspartner unterstützt keine Videotelefonie.",Start_video_call:"Starte Videoanruf"}),$.extend(jsxc.l10n.es,{Please_allow_access_to_microphone_and_camera:"Por favor, permitir el acceso al micrófono y la cámara.",Incoming_call:"Llamada entrante",from:"de",Do_you_want_to_accept_the_call_from:"Desea aceptar la llamada de",Reject:"Rechazar",Accept:"Aceptar",hang_up:"colgar",snapshot:"instantánea",mute_my_audio:"silenciar mi audio",pause_my_video:"pausar mi vídeo",fullscreen:"pantalla completa",Info:"Info",Local_IP:"IP local",Remote_IP:"IP remota",Local_Fingerprint:"Firma digital local",Remote_Fingerprint:"Firma digital remota",Video_call_not_possible:"Llamada de vídeo no es posible",Start_video_call:"Iniciar llamada de vídeo"})}(jQuery);
+var RTC=null,RTCPeerconnection=null;jsxc.gui.template.incomingCall='<h3>%%Incoming_call%%</h3> <p>%%Do_you_want_to_accept_the_call_from%% {{bid_name}}?</p> <p class="jsxc_right"> <a href="#" class="button jsxc_reject">%%Reject%%</a> <a href="#" class="button creation jsxc_accept">%%Accept%%</a> </p>',jsxc.gui.template.allowMediaAccess="<p>%%Please_allow_access_to_microphone_and_camera%%</p>",jsxc.gui.template.videoWindow='<div class="jsxc_webrtc"> <div class="jsxc_chatarea"> <ul></ul> </div> <div class="jsxc_videoContainer"> <video class="jsxc_localvideo" autoplay></video> <video class="jsxc_remotevideo" autoplay></video> <div class="jsxc_status"></div> <div class="bubblingG"> <span id="bubblingG_1"> </span> <span id="bubblingG_2"> </span> <span id="bubblingG_3"> </span> </div> <div class="jsxc_noRemoteVideo"> <div> <div></div> <p>%%No_video_signal%%</p> <div></div> </div> </div> </div> <div class="jsxc_controlbar"> <button type="button" class="jsxc_hangUp">%%hang_up%%</button> <input type="range" class="jsxc_volume" min="0.0" max="1.0" step="0.05" value="0.5" /> <div class="jsxc_buttongroup"> <button type="button" class="jsxc_snapshot">%%snapshot%%</button><button type="button" class="jsxc_snapshots">&#9660;</button> </div> <!-- <button type="button" class="jsxc_mute_local">%%mute_my_audio%%</button> <button type="button" class="jsxc_pause_local">%%pause_my_video%%</button> --> <button type="button" class="jsxc_showchat">%%chat%%</button> <button type="button" class="jsxc_fullscreen">%%fullscreen%%</button> <button type="button" class="jsxc_info">%%Info%%</button> </div> <div class="jsxc_multi"> <div class="jsxc_snapshotbar"> <p>No pictures yet!</p> </div>\n <!--<div class="jsxc_chatarea"> <ul></ul> </div>--> <div class="jsxc_infobar"></div> </div> </div>',function($){"use strict";jsxc.webrtc={conn:null,localStream:null,remoteStream:null,last_caller:null,AUTO_ACCEPT:!1,reqVideoFeatures:["urn:xmpp:jingle:apps:rtp:video","urn:xmpp:jingle:apps:rtp:audio","urn:xmpp:jingle:transports:ice-udp:1","urn:xmpp:jingle:apps:dtls:0"],chatJids:{},init:function(){var self=jsxc.webrtc;return self.conn=jsxc.xmpp.conn,"firefox"===RTC.browser&&(self.conn.jingle.media_constraints.mandatory.MozDontOfferDataChannel=!0),self.conn.jingle?(self.conn.jingle.PRANSWER=!1,self.conn.jingle.AUTOACCEPT=!1,self.conn.jingle.ice_config=jsxc.storage.getUserItem("iceConfig"),self.conn.jingle.MULTIPARTY=!1,self.conn.jingle.pc_constraints=RTC.pc_constraints,$(document).on("message.jsxc",$.proxy(self.onMessage,self)),$(document).on("presence.jsxc",$.proxy(self.onPresence,self)),$(document).on("mediaready.jingle",$.proxy(self.onMediaReady,self)),$(document).on("mediafailure.jingle",$.proxy(self.onMediaFailure,self)),$(document).on("callincoming.jingle",$.proxy(self.onCallIncoming,self)),$(document).on("callterminated.jingle",$.proxy(self.onCallTerminated,self)),$(document).on("ringing.jingle",$.proxy(self.onCallRinging,self)),$(document).on("remotestreamadded.jingle",$.proxy(self.onRemoteStreamAdded,self)),$(document).on("remotestreamremoved.jingle",$.proxy(self.onRemoteStreamRemoved,self)),$(document).on("iceconnectionstatechange.jingle",$.proxy(self.onIceConnectionStateChanged,self)),$(document).on("nostuncandidates.jingle",$.proxy(self.noStunCandidates,self)),$(document).on("error.jingle",function(ev,sid,error){jsxc.error("[JINGLE]",error)}),self.conn.disco&&self.conn.disco.addFeature("urn:xmpp:jingle:apps:dtls:0"),self.conn.caps&&$(document).on("caps.strophe",$.proxy(self.onCaps,self)),void self.getTurnCrendentials()):void jsxc.error("No jingle plugin found!")},getTurnCrendentials:function(){if(!jsxc.options.turnCredentialsPath)return void jsxc.debug("No path for TURN credentials defined!");var ttl=(jsxc.storage.getUserItem("iceValidity")||0)-(new Date).getTime();return ttl>0?void window.setTimeout(jsxc.webrtc.getTurnCrendentials,ttl+500):void $.ajax(jsxc.options.turnCredentialsPath,{async:!0,success:function(data){var iceConfig={iceServers:[{url:"turn:"+data.url,credential:data.credential,username:data.username}]};jsxc.webrtc.conn.jingle.ice_config=iceConfig,jsxc.storage.setUserItem("iceConfig",iceConfig),jsxc.storage.setUserItem("iceValidity",(new Date).getTime()+1e3*data.ttl)},dataType:"json"})},getCapableRes:function(jid){var self=jsxc.webrtc,bid=jsxc.jidToBid(jid),res=jsxc.storage.getUserItem("res",bid)||[],available=[];return $.each(res,function(r){self.conn.caps.hasFeatureByJid(bid+"/"+r,self.reqVideoFeatures)&&available.push(r)}),available},onAddRosterItem:function(event,bid,data,el){var self=jsxc.webrtc;if(!self.conn)return void $(document).one("connectionReady.jsxc",function(){self.onAddRosterItem(null,bid,data,el)});var videoIcon=$('<div class="jsxc_video jsxc_disabled" title="'+jsxc.l.Start_video_call+'"></div>');videoIcon.click(function(){return self.startCall(data.jid),!1}),el.find(".jsxc_options.jsxc_left").append(videoIcon),el.on("extra.jsxc",function(){self.updateIcon(bid)})},initWindow:function(event,win){var self=jsxc.webrtc;if(jsxc.debug("webrtc.initWindow"),!self.conn)return void $(document).one("connectionReady.jsxc",function(){self.initWindow(null,win)});var div=$("<div>").addClass("jsxc_video");win.find(".jsxc_transfer:eq(1)").after(div),self.updateIcon(jsxc.jidToBid(win.data("jid")))},updateIcon:function(bid){jsxc.debug("Update icon",bid);var self=jsxc.webrtc;if(bid!==jsxc.jidToBid(self.conn.jid)){var win=jsxc.gui.window.get(bid),jid=win.data("jid")||jsxc.storage.getUserItem("buddy",bid).jid,el=win.find(".jsxc_video").add(jsxc.gui.roster.getItem(bid).find(".jsxc_video")),capableRes=self.getCapableRes(jid),targetRes=Strophe.getResourceFromJid(jid);null===targetRes&&$.each(jsxc.storage.getUserItem("buddy",bid).res,function(index,val){return capableRes.indexOf(val)>-1?(targetRes=val,!1):void 0}),el.off("click"),capableRes.indexOf(targetRes)>-1?(el.click(function(){self.startCall(jid+"/"+targetRes)}),el.removeClass("jsxc_disabled"),el.attr("title",jsxc.translate("%%Start video call%%"))):(el.addClass("jsxc_disabled"),el.attr("title",jsxc.translate("%%Video call not possible.%%")))}},onMessage:function(e,from){var self=jsxc.webrtc,bid=jsxc.jidToBid(from);jsxc.debug("webrtc.onmessage",from),self.chatJids[bid]!==from&&(self.updateIcon(bid),self.chatJids[bid]=from)},onPresence:function(ev,jid){var self=jsxc.webrtc;jsxc.debug("webrtc.onpresence",jid),self.updateIcon(jsxc.jidToBid(jid))},setStatus:function(txt,d){var status=$(".jsxc_webrtc .jsxc_status"),duration="undefined"==typeof d||null===d?4e3:d;if(jsxc.debug("[Webrtc]",txt),status.html()&&(txt=status.html()+"<br />"+txt),status.html(txt),status.css({"margin-left":"-"+status.width()/2+"px",opacity:0,display:"block"}),status.stop().animate({opacity:1}),clearTimeout(status.data("timeout")),0!==duration){var to=setTimeout(function(){status.stop().animate({opacity:0},function(){status.html("")})},duration);status.data("timeout",to)}},onCaps:function(event,jid){var self=jsxc.webrtc;self.updateIcon(jsxc.jidToBid(jid))},onMediaReady:function(event,stream){jsxc.debug("media ready");var self=jsxc.webrtc;self.localStream=stream,self.conn.jingle.localStream=stream,jsxc.gui.showVideoWindow(self.last_caller);var i;for(i=0;i<stream.getAudioTracks().length;i++)self.setStatus(stream.getAudioTracks().length>0?"Use local audio device.":"No local audio device."),jsxc.debug('using audio device "'+stream.getAudioTracks()[i].label+'"');for(i=0;i<stream.getVideoTracks().length;i++)self.setStatus(stream.getVideoTracks().length>0?"Use local video device.":"No local video device."),jsxc.debug('using video device "'+stream.getVideoTracks()[i].label+'"'),$("#jsxc_dialog .jsxc_localvideo").show();$(document).one("cleanup.dialog.jsxc",$.proxy(self.hangUp,self)),$(document).trigger("finish.mediaready.jsxc")},onMediaFailure:function(ev,err){this.setStatus("media failure"),jsxc.gui.window.postMessage(jsxc.jidToBid(jsxc.webrtc.last_caller),"sys",jsxc.translate("%%Media failure%%: ")+err.name),jsxc.debug("media failure: "+err.name)},onCallIncoming:function(event,sid){jsxc.debug("incoming call"+sid);var self=this,sess=this.conn.jingle.sessions[sid],bid=jsxc.jidToBid(sess.peerjid);if(jsxc.gui.window.postMessage(bid,"sys",jsxc.translate("%%Incoming call.%%")),jsxc.notification.notify(jsxc.translate("%%Incoming call%%"),jsxc.translate("%%from%% "+bid)),sess.sendRinging(),jsxc.webrtc.last_caller=sess.peerjid,jsxc.switchEvents({"mediaready.jingle":function(event,stream){self.setStatus("Accept call"),sess.localStream=stream,sess.peerconnection.addStream(stream),sess.sendAnswer(),sess.accept()},"mediafailure.jingle":function(){sess.sendTerminate("decline"),sess.terminate()}}),jsxc.webrtc.AUTO_ACCEPT)return void self.reqUserMedia();var dialog=jsxc.gui.dialog.open(jsxc.gui.template.get("incomingCall",bid),{noClose:!0});dialog.find(".jsxc_accept").click(function(){$(document).trigger("accept.call.jsxc"),self.reqUserMedia()}),dialog.find(".jsxc_reject").click(function(){jsxc.gui.dialog.close(),$(document).trigger("reject.call.jsxc"),sess.sendTerminate("decline"),sess.terminate()})},onCallTerminated:function(event,sid,reason,text){this.setStatus("call terminated "+sid+(reason?": "+reason+" "+text:""));var bid=jsxc.jidToBid(jsxc.webrtc.last_caller);this.localStream&&this.localStream.stop(),$(".jsxc_videoContainer").length&&($(".jsxc_remotevideo")[0].src="",$(".jsxc_localvideo")[0].src=""),this.conn.jingle.localStream=null,this.localStream=null,this.remoteStream=null;var win=$("#jsxc_dialog .jsxc_chatarea > ul > li");$("#jsxc_windowList > ul").prepend(win.detach()),win.find(".slimScrollDiv").resizable("enable"),$(document).off("cleanup.dialog.jsxc"),$(document).off("error.jingle"),jsxc.gui.dialog.close(),jsxc.gui.window.postMessage(bid,"sys",jsxc.translate("%%Call terminated%%"+(reason?": %%"+reason+"%%":"")+"."))},onCallRinging:function(){this.setStatus("ringing...",0)},onRemoteStreamAdded:function(event,data,sid){this.setStatus("Remote stream for session "+sid+" added.");var stream=data.stream;this.remoteStream=stream;var sess=this.conn.jingle.sessions[sid],isVideoDevice=stream.getVideoTracks().length>0,isAudioDevice=stream.getAudioTracks().length>0;sess.remoteDevices={video:isVideoDevice,audio:isAudioDevice},this.setStatus(isVideoDevice?"Use remote video device.":"No remote video device"),this.setStatus(isAudioDevice?"Use remote audio device.":"No remote audio device"),$(".jsxc_remotevideo").length&&(RTC.attachMediaStream($("#jsxc_dialog .jsxc_remotevideo"),stream),$("#jsxc_dialog .jsxc_"+(isVideoDevice?"remotevideo":"noRemoteVideo")).addClass("jsxc_deviceAvailable"))},onRemoteStreamRemoved:function(event,data,sid){this.setStatus("Remote stream for session "+sid+" removed.")},onIceConnectionStateChanged:function(event,sid,sess){var sigState=sess.peerconnection.signalingState,iceCon=sess.peerconnection.iceConnectionState;if(jsxc.debug("iceGat state for "+sid,sess.peerconnection.iceGatheringState),jsxc.debug("iceCon state for "+sid,iceCon),jsxc.debug("sig state for "+sid,sigState),"stable"!==sigState||"connected"!==iceCon&&"completed"!==iceCon)"failed"===iceCon&&(jsxc.gui.window.postMessage(jsxc.jidToBid(sess.peerjid),"sys",jsxc.translate("%%ICE connection failure%%.")),$(document).off("cleanup.dialog.jsxc"),sess.sendTerminate("failed-transport"),sess.terminate(),$(document).trigger("callterminated.jingle"));else{$("#jsxc_dialog .jsxc_deviceAvailable").show(),$("#jsxc_dialog .bubblingG").hide();var localSDP=sess.peerconnection.localDescription.sdp,remoteSDP=sess.peerconnection.remoteDescription.sdp;sess.local_fp=SDPUtil.parse_fingerprint(SDPUtil.find_line(localSDP,"a=fingerprint:")).fingerprint,sess.remote_fp=SDPUtil.parse_fingerprint(SDPUtil.find_line(remoteSDP,"a=fingerprint:")).fingerprint;var ip_regex="(\\d{1,3}\\.\\d{1,3}.\\d{1,3}\\.\\d{1,3}) \\d+ typ host";sess.remote_ip=remoteSDP.match(new RegExp(ip_regex))[1],sess.local_ip=localSDP.match(new RegExp(ip_regex))[1];for(var match,regex=new RegExp(ip_regex,"g");null!==(match=regex.exec(remoteSDP));)if(match[1]!==sess.remote_ip)return void alert("!!! WARNING !!!\n\nPossible Man-in-the-middle attack detected!\n\nYou should close the connection.");var text="<p>";text+="<b>"+jsxc.translate("%%Local IP%%: ")+"</b>"+sess.local_ip+"<br />",text+="<b>"+jsxc.translate("%%Remote IP%%: ")+"</b>"+sess.remote_ip+"<br />",text+="<b>"+jsxc.translate("%%Local Fingerprint%%: ")+"</b>"+sess.local_fp+"<br />",text+="<b>"+jsxc.translate("%%Remote Fingerprint%%: ")+"</b>"+sess.remote_fp,text+="</p>",$("#jsxc_dialog .jsxc_infobar").html(text)}},noStunCandidates:function(){},startCall:function(jid,um){var self=this;return null===Strophe.getResourceFromJid(jid)?void jsxc.debug("We need a full jid"):(self.last_caller=jid,jsxc.switchEvents({"finish.mediaready.jsxc":function(){self.setStatus("Initiate call"),jsxc.gui.window.postMessage(jsxc.jidToBid(jid),"sys",jsxc.translate("%%Call started.%%")),$(document).one("error.jingle",function(e,sid,error){"offer"===error.source&&($(document).off("cleanup.dialog.jsxc"),setTimeout(function(){jsxc.gui.showAlert("Sorry, we couldn't establish a connection. Maybe your buddy is offline.")},500))}),self.conn.jingle.initiate(jid,self.conn.jid.toLowerCase())},"mediafailure.jingle":function(){jsxc.gui.dialog.close()}}),void self.reqUserMedia(um))},hangUp:function(reason,text){$(document).off("cleanup.dialog.jsxc"),jsxc.webrtc.conn.jingle.terminate(null,reason,text),$(document).trigger("callterminated.jingle")},reqUserMedia:function(um){return this.localStream?void $(document).trigger("mediaready.jingle",[this.localStream]):(um=um||["video","audio"],jsxc.gui.dialog.open(jsxc.gui.template.get("allowMediaAccess"),{noClose:!0}),this.setStatus("please allow access to microphone and camera"),void("undefined"!=typeof MediaStreamTrack&&"undefined"!=typeof MediaStreamTrack.getSources?MediaStreamTrack.getSources(function(sourceInfo){var availableDevices=sourceInfo.map(function(el){return el.kind});um=um.filter(function(el){return-1!==availableDevices.indexOf(el)}),getUserMediaWithConstraints(um)}):getUserMediaWithConstraints(um)))},snapshot:function(video){video||jsxc.debug("Missing video element"),$(".jsxc_snapshotbar p").remove();var canvas=$("<canvas/>").css("display","none").appendTo("body").attr({width:video.width(),height:video.height()}).get(0),ctx=canvas.getContext("2d");ctx.drawImage(video[0],0,0);var img=$("<img/>"),url=null;try{url=canvas.toDataURL("image/jpeg")}catch(err){return void jsxc.warn("Error",err)}img[0].src=url;var link=$("<a/>").attr({target:"_blank",href:url});link.append(img),$(".jsxc_snapshotbar").append(link),canvas.remove()}},jsxc.gui.showVideoWindow=function(jid){var self=jsxc.webrtc;$(document).one("complete.dialog.jsxc",function(){$("#jsxc_dialog .jsxc_localvideo")[0].muted=!0,$("#jsxc_dialog .jsxc_localvideo")[0].volume=0;var rv=$("#jsxc_dialog .jsxc_remotevideo"),lv=$("#jsxc_dialog .jsxc_localvideo");lv.draggable({containment:"parent"}),RTC.attachMediaStream(lv,self.localStream);var w_dialog=$("#jsxc_dialog").width(),w_remote=rv.width();if(w_remote>w_dialog){var scale=w_dialog/w_remote,new_h=rv.height()*scale,new_w=w_dialog,vc=$("#jsxc_dialog .jsxc_videoContainer");rv.height(new_h),rv.width(new_w),vc.height(new_h),vc.width(new_w),lv.height(lv.height()*scale),lv.width(lv.width()*scale)}self.remoteStream&&(RTC.attachMediaStream(rv,self.remoteStream),$("#jsxc_dialog .jsxc_"+(self.remoteStream.getVideoTracks().length>0?"remotevideo":"noRemoteVideo")).addClass("jsxc_deviceAvailable"));var toggleMulti=function(elem,open){$("#jsxc_dialog .jsxc_multi > div").not(elem).slideUp();var opt={complete:jsxc.gui.dialog.resize};open?elem.slideDown(opt):elem.slideToggle(opt)},win=jsxc.gui.window.open(jsxc.jidToBid(jid));win.find(".slimScrollDiv").resizable("disable"),win.find(".jsxc_textarea").slimScroll({height:413}),win.find(".jsxc_emoticons").css("top","419px"),$("#jsxc_dialog .jsxc_chatarea ul").append(win.detach()),$("#jsxc_dialog .jsxc_hangUp").click(function(){jsxc.webrtc.hangUp()}),$("#jsxc_dialog .jsxc_snapshot").click(function(){jsxc.webrtc.snapshot(rv),toggleMulti($("#jsxc_dialog .jsxc_snapshotbar"),!0)}),$("#jsxc_dialog .jsxc_snapshots").click(function(){toggleMulti($("#jsxc_dialog .jsxc_snapshotbar"))}),$("#jsxc_dialog .jsxc_showchat").click(function(){var chatarea=$("#jsxc_dialog .jsxc_chatarea");chatarea.is(":hidden")?(chatarea.show(),$("#jsxc_dialog .jsxc_webrtc").width("900"),jsxc.gui.dialog.resize({width:"920px"})):(chatarea.hide(),$("#jsxc_dialog .jsxc_webrtc").width("650"),jsxc.gui.dialog.resize({width:"660px"}))}),$("#jsxc_dialog .jsxc_info").click(function(){toggleMulti($("#jsxc_dialog .jsxc_infobar"))}),$("#jsxc_dialog .jsxc_fullscreen").click(function(){$.support.fullscreen&&($(document).one("disabled.fullscreen",function(){lv.removeAttr("style")}),$("#jsxc_dialog .jsxc_videoContainer").fullscreen())}),$("#jsxc_dialog .jsxc_volume").change(function(){rv[0].volume=$(this).val()}),$("#jsxc_dialog .jsxc_volume").dblclick(function(){$(this).val(.5)})}),jsxc.gui.dialog.open(jsxc.gui.template.get("videoWindow"),{noClose:!0})},$.extend(jsxc.CONST,{KEYCODE_ENTER:13,KEYCODE_ESC:27}),$(document).ready(function(){RTC=setupRTC(),null!==RTC&&(RTCPeerconnection=RTC.peerconnection,$(document).on("add.roster.jsxc",jsxc.webrtc.onAddRosterItem),$(document).on("init.window.jsxc",jsxc.webrtc.initWindow),$(document).on("attached.jsxc",jsxc.webrtc.init))}),$.extend(jsxc.l10n.en,{Please_allow_access_to_microphone_and_camera:'Please click the "Allow" button at the top, to allow access to microphone and camera.',Incoming_call:"Incoming call",from:"from",Do_you_want_to_accept_the_call_from:"Do you want to accept the call from",Reject:"Reject",Accept:"Accept",hang_up:"hang up",snapshot:"snapshot",mute_my_audio:"mute my audio",pause_my_video:"pause my video",fullscreen:"fullscreen",Info:"Info",Local_IP:"Local IP",Remote_IP:"Remote IP",Local_Fingerprint:"Local fingerprint",Remote_Fingerprint:"Remote fingerprint",Video_call_not_possible:"Video call not possible. Your buddy does not support video calls.",Start_video_call:"Start video call"}),$.extend(jsxc.l10n.de,{Please_allow_access_to_microphone_and_camera:'Bitte klick auf den "Zulassen" Button oben, um den Zugriff auf Kamera und Mikrofon zu erlauben.',Incoming_call:"Eingehender Anruf",from:"von",Do_you_want_to_accept_the_call_from:"Möchtest Du den Anruf annehmen von",Reject:"Ablehnen",Accept:"Annehmen",hang_up:"Auflegen",snapshot:"Schnappschuss",mute_my_audio:"Mein Ton aus",pause_my_video:"Mein Video pausieren",fullscreen:"Vollbild",Info:"Info",Local_IP:"Lokale IP",Remote_IP:"Remote IP",Local_Fingerprint:"Lokaler Fingerprint",Remote_Fingerprint:"Remote Fingerprint",Video_call_not_possible:"Videoanruf nicht verfügbar. Dein Gesprächspartner unterstützt keine Videotelefonie.",Start_video_call:"Starte Videoanruf"}),$.extend(jsxc.l10n.es,{Please_allow_access_to_microphone_and_camera:"Por favor, permitir el acceso al micrófono y la cámara.",Incoming_call:"Llamada entrante",from:"de",Do_you_want_to_accept_the_call_from:"Desea aceptar la llamada de",Reject:"Rechazar",Accept:"Aceptar",hang_up:"colgar",snapshot:"instantánea",mute_my_audio:"silenciar mi audio",pause_my_video:"pausar mi vídeo",fullscreen:"pantalla completa",Info:"Info",Local_IP:"IP local",Remote_IP:"IP remota",Local_Fingerprint:"Firma digital local",Remote_Fingerprint:"Firma digital remota",Video_call_not_possible:"Llamada de vídeo no es posible",Start_video_call:"Iniciar llamada de vídeo"})}(jQuery);
//# sourceMappingURL=jsxc.min.js.map \ No newline at end of file
diff --git a/build/js/jsxc/jsxc.min.js.map b/build/js/jsxc/jsxc.min.js.map
index aa4fdf8..40780be 100644
--- a/build/js/jsxc/jsxc.min.js.map
+++ b/build/js/jsxc/jsxc.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"jsxc.min.js","sources":["jsxc.js"],"names":["jsxc","$","version","master","role_allocation","to","toBusy","toNotification","toNotificationDelay","keepalive","restore","restoreCompleted","triggeredFromForm","triggeredFromBox","triggeredFromElement","triggeredFromLogout","ls","storageNotConform","toSNC","bid","CONST","NOTIFICATION_DEFAULT","NOTIFICATION_GRANTED","NOTIFICATION_DENIED","STATUS","SOUNDS","MSG","CALL","NOTICE","REGEX","JID","RegExp","URL","debug","msg","data","level","storage","getItem","console","log","d","prepend","clone","html","err","JSON","stringify","err2","warn","error","init","options","extend","get","key","local","getUserItem","set","value","updateItem","lang","autoLang","navigator","language","substr","defaultLang","l","l10n","en","window","addEventListener","onStorage","lastActivity","Date","getTime","loginTimeout","jidToBid","gui","logoutElement","length","one","this","xmpp","logout","checkMaster","onMaster","loginForm","form","el_exists","jid","pass","displayRosterMinimized","setUserItem","roster","noConnection","formFound","call","events","submit","submits","each","index","val","push","handler","off","settings","prepareLogin","onlogin","login","username","password","loadSettings","showWaitAlert","Logging_in","resource","domain","match","preJid","split","onSlave","restoreRoster","restoreWindows","document","trigger","setItem","startKeepAlive","otr","createDSA","_onMaster","create","noti","notification","hasSupport","hasPermission","prepareRequest","setTimeout","ink","setInterval","keepAlive","timeout","keepBusyAlive","clearTimeout","clearInterval","busyTimeout","random","max","Math","floor","selector","jidToCid","cid","Strophe","getBareJidFromJid","replace","toLowerCase","buddies","add","empty","windows","minimize","hide","show","setText","text","submitLoginForm","find","click","escapeHTML","removeHTML","switchEvents","obj","ns","toString","self","apply","arguments","isHidden","hidden","webkitHidden","mozHidden","msHidden","translate","s","k","app_name","ERROR_START_AKE","url","overwrite","priority","online","chat","away","xa","dnd","numberOfMsg","rosterAppend","popupDuration","root","hideOffline","muteNotification","defaultAvatar","saveSettinsPermanent","emotions","queryActions","message","params","win","open","body","remove","showRemoveDialog","subscribe","showContactDialog","name","vcard","showVcard","append","template","resize","updateWindowListSB","scrollWindowListBy","on","ev","originalEvent","wheelDelta","tooltip","i","reg","join","windowTemplate","buddyTemplate","delay","content","attr","update","ri","we","ue","spot","removeClass","addClass","status","is","msgstate","your_connection_is_unencrypted","start_private","your_connection_is_encrypted","close_private","your_buddy_closed_the_private_connection","trust","your_buddy_is_verificated","sub","info","avatar","updateAvatar","el","aid","avatarSrc","setAvatar","src","removeAttr","css","background-image","text-indent","conn","stanza","vCard","img","type","width","offset","scrollWidth","right","parseInt","padding","getWindow","toggleList","disableSelection","ul","slideUp","complete","slideToggle","toggleClass","mouseleave","mouseenter","showLoginBox","focus","dialog","prop","showAuthFail","showFingerprints","showVerification","OTR","MSGSTATE_ENCRYPTED","change","slideDown","objects","updateUserItem","close","postMessage","conversation_is_now_verified","div","sec","quest","keyup","sendSmpReq","authentication_query_sent","showApproveDialog","from","noClose","stopPropagation","resFriendReq","alias","getDomainFromJid","addBuddy","removeBuddy","showAlert","showConfirmDialog","confirm","dismiss","showAboutDialog","showDebugLog","userInfo","hasOwnProperty","screen","height","j","res","identities","cap","client","identity","getCapabilitiesByJid","category","printProp","depth","item","children","tagName","before","failedToLoad","loadVcard","photo","showSettings","id","checked","effect","color","showRequestNotification","requestPermission","showUnknownSender","saveBuddy","removeUserItem","changePresence","pres","external","sendPres","updatePresence","muteSound","unmuteSound","unreadMsg","readMsg","hasClass","detectUriScheme","container","action","element","href","indexOf","pairs","substring","decodeURIComponent","detectEmail","trim","prev","mute","toggle","slimScroll","distance","opacity","notice","load","bud","insert","rename","expandClick","dblclick","scrollTo","li","listElements","thisStatus","appendTo","reorder","detach","purge","removeUserElement","_close","input","replaceWith","keypress","which","_rename","newname","iq","$iq","c","xmlns","sendIQ","duration","wl","roster_width","innerWidth","roster_right","parseFloat","state","animate","no_connection","relogin","Your_roster_is_empty_add_a","link","new_buddy","o","opt","onComplete","preventDefault","closeButton","colorbox","onClosed","onCleanup","overlayClose","escKey","toggleTransfer","clear","resizable","handles","minHeight","minWidth","event","ui","size","inArray","unread","ins","restoreChat","enable","highlight","outerWidth","position","left","parents","_show","scrollDown","_hide","scrollHeight","direction","html_msg","your_message_wasnt_send_please_end_your_private_conversation","unencrypted_message_received","your_message_wasnt_send_because_you_have_no_valid_subscription","post","saveMessage","sendMessage","uid","_postMessage","received","source","protocol","p1","esc","charCodeAt","msgDiv","pop","ph","my_priv_fingerprint","not_available","my_jid","my_node","getNodeFromJid","bid_priv_fingerprint","fingerprint","bid_jid","bid_name","ret","authenticationDialog","fingerprintsDialog","chatWindow","windowList","rosterBuddy","loginBox","contactDialog","approveDialog","removeDialog","waitAlert","alert","authFailDialog","confirmDialog","pleaseAccept","aboutDialog","sid","rid","connected","attached","disconnected","onRidChange","addNamespace","Connection","stropheGetUniqueId","getUniqueId","suffix","_uniqueId","xmlInput","xmlOutput","callback","condition","Object","getOwnPropertyNames","Status","CONNECTED","ATTACHED","DISCONNECTED","CONNFAIL","onConnfail","AUTHFAIL","caps","node","attach","connect","removeItem","numOtr","keys","disReady","flush","disconnect","endOtr","backup","pause","nomJid","getResourceFromJid","_proto","location","reload","connectionReady","addHandler","onRosterChanged","onMessage","onReceived","onPresence","onRoster","disco","addIdentity","addFeature","NS","DISCO_INFO","RECEIPTS","$pres","generateCapsAttrs","up","presState","t","send","bl","temp","notices","noticeKey","fnName","fnParams","presence","ptype","r","xVCard","approve","maxVal","notify","mid","request","$msg","receiveMsg","subscription","receivedId","sendMsg","_sendMessage","isBar","xmlMsg","hasFeatureByJid","cb","error_cb","result","jidVerIndex","parse","localStorage","knownCapabilities","PREFIX","SEP","getPrefix","uk","e","prefix","variable","Number","removeElement","isArray","grep","re","newValue","splice","oldValue","n","posts","sm","abort","onSmpQuestion","transferReq","goPlain","goEncrypt","unshift","dsaFallback","receiveMessage","encrypted","MSGSTATE_PLAINTEXT","priv","ol","SEND_WHITESPACE_TAG","WHITESPACE_START_AKE","STATUS_SEND_QUERY","trying_to_start_private_conversation","STATUS_AKE_SUCCESS","their_priv_pk","Verified","Unverified","private_conversation_started","STATUS_END_OTR","private_conversation_aborted","MSGSTATE_FINISHED","your_buddy_closed_the_private_conversation_you_should_do_the_same","STATUS_SMP_HANDLE","Authentication_request_received","authentication_failed","Authentication_aborted","your_buddy_is_attempting_to_determine_","to_authenticate_to_your_buddy","enter_the_answer_and_click_answer","enter_the_secret","smpSecret","sendQueryMsg","savekey","packPublic","ake","otr_version","DSA","parsePublic","_smInit","Creating_your_private_key_","worker","Worker","dsa","DSAready","onmessage","parsePrivate","imports","seed","BigInt","getSeed","_createDSA","packPrivate","audio","undefined","playSound","stopSound","title","force","soundFile","loop","popup","Notification","icon","webkitNotifications","createNotification","cancel","permission","checkPermission","func","notificationready.jsxc","notificationfailure.jsxc","Audio","play","_num","saved","description","nid","now","list","fnList","fn","you_have_only_a_subscription_in_one_way","Authenticating_a_buddy_helps_","How_do_you_want_to_authenticate_your_buddy","Select_method","Manual","Question","Secret","To_verify_the_fingerprint_","Your_fingerprint","Buddy_fingerprint","Close","Compared","To_authenticate_using_a_question_","Ask","To_authenticate_pick_a_secret_","Compare","Fingerprints","Authentication","Message","Add_buddy","rename_buddy","delete_buddy","Login","Username","Password","Cancel","Connect","Type_in_the_full_username_","Alias","Add","Subscription_request","You_have_a_request_from","Deny","Approve","Remove_buddy","You_are_about_to_remove_","Continue_without_chat","Please_wait","Login_failed","Sorry_we_cant_authentikate_","Retry","clear_history","New_message_from","Should_we_notify_you_","Please_accept_","Hide_offline","Show_offline","About","Mute","Unmute","Subscription","both","offline","none","Unknown_instance_tag","Not_one_of_our_latest_keys","Received_an_unreadable_encrypted_message","Online","Chatty","Away","Extended_away","Offline","Friendship_request","Confirm","Dismiss","Remove","Online_help","FN","N","FAMILY","GIVEN","NICKNAME","ADR","STREET","EXTADD","LOCALITY","REGION","PCODE","CTRY","TEL","NUMBER","EMAIL","USERID","ORG","ORGNAME","ORGUNIT","TITLE","ROLE","BDAY","DESC","PHOTO","send_message","get_info","Settings","Priority","Save","User_settings","A_fingerprint_","Login_options","BOSH_url","Domain","Resource","On_login","Received_an_unencrypted_message","Sorry_your_buddy_doesnt_provide_any_information","Info_about","Do_you_want_to_display_them","Log_in_without_chat","has_come_online","Unknown_sender","You_received_a_message_from_an_unknown_sender","de","Menu","es","jQuery","RTC","RTCPeerconnection","incomingCall","allowMediaAccess","videoWindow","webrtc","localStream","remoteStream","last_caller","AUTO_ACCEPT","reqVideoFeatures","chatJids","browser","jingle","media_constraints","mandatory","MozDontOfferDataChannel","PRANSWER","AUTOACCEPT","ice_config","MULTIPARTY","pc_constraints","proxy","onMediaReady","onMediaFailure","onCallIncoming","onCallTerminated","onCallRinging","onRemoteStreamAdded","onRemoteStreamRemoved","onIceConnectionStateChanged","noStunCandidates","onCaps","getTurnCrendentials","turnCredentialsPath","ttl","ajax","async","success","iceConfig","iceServers","credential","dataType","getCapableRes","available","onAddRosterItem","videoIcon","Start_video_call","startCall","updateIcon","initWindow","after","capableRes","targetRes","setStatus","txt","margin-left","display","stop","stream","showVideoWindow","getAudioTracks","label","getVideoTracks","hangUp","sess","sessions","peerjid","sendRinging","mediaready.jingle","peerconnection","addStream","sendAnswer","accept","mediafailure.jingle","sendTerminate","terminate","reqUserMedia","reason","isVideoDevice","isAudioDevice","remoteDevices","video","attachMediaStream","sigState","signalingState","iceCon","iceConnectionState","iceGatheringState","localSDP","localDescription","sdp","remoteSDP","remoteDescription","local_fp","SDPUtil","parse_fingerprint","find_line","remote_fp","ip_regex","remote_ip","local_ip","regex","exec","um","finish.mediaready.jsxc","initiate","MediaStreamTrack","getSources","sourceInfo","availableDevices","map","kind","filter","getUserMediaWithConstraints","snapshot","canvas","ctx","getContext","drawImage","toDataURL","target","muted","volume","rv","lv","draggable","containment","w_dialog","w_remote","scale","new_h","new_w","vc","toggleMulti","elem","not","chatarea","support","fullscreen","KEYCODE_ENTER","KEYCODE_ESC","ready","setupRTC","Please_allow_access_to_microphone_and_camera","Incoming_call","Do_you_want_to_accept_the_call_from","Reject","Accept","hang_up","mute_my_audio","pause_my_video","Info","Local_IP","Remote_IP","Local_Fingerprint","Remote_Fingerprint","Video_call_not_possible"],"mappings":"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"} \ No newline at end of file
+{"version":3,"file":"jsxc.min.js","sources":["jsxc.js"],"names":["jsxc","$","version","master","role_allocation","to","toBusy","toNotification","toNotificationDelay","keepalive","restore","restoreCompleted","triggeredFromBox","triggeredFromElement","triggeredFromLogout","ls","storageNotConform","toSNC","bid","CONST","NOTIFICATION_DEFAULT","NOTIFICATION_GRANTED","NOTIFICATION_DENIED","STATUS","SOUNDS","MSG","CALL","NOTICE","REGEX","JID","RegExp","URL","NS","CARBONS","FORWARD","getFormattedTime","unixtime","msgDate","Date","parseInt","date","getDate","slice","month","getMonth","year","getFullYear","hours","getHours","minutes","getMinutes","dateNow","time","setHours","getTime","debug","msg","data","level","storage","getItem","console","log","d","prepend","clone","html","err","JSON","stringify","err2","warn","error","init","options","extend","get","key","local","getUserItem","set","value","updateItem","lang","autoLang","navigator","language","substr","defaultLang","l","l10n","en","otr","window","addEventListener","onStorage","lastActivity","loginTimeout","jidToBid","gui","logoutElement","length","one","this","xmpp","logout","checkMaster","onMaster","loginForm","form","el_exists","jid","pass","displayRosterMinimized","setUserItem","roster","noConnection","formFound","call","events","submit","submits","each","index","val","push","handler","off","settings","prepareLogin","onlogin","triggered","login","username","password","loadSettings","showWaitAlert","Logging_in","resource","domain","match","preJid","split","onSlave","restoreRoster","restoreWindows","document","trigger","setItem","startKeepAlive","enable","createDSA","_onMaster","create","noti","notification","hasSupport","hasPermission","prepareRequest","on","updateAvatar","setTimeout","ink","setInterval","keepAlive","timeout","keepBusyAlive","clearTimeout","clearInterval","busyTimeout","random","max","Math","floor","selector","jidToCid","cid","Strophe","getBareJidFromJid","replace","toLowerCase","buddies","add","empty","windows","minimize","hide","show","setText","text","submitLoginForm","find","click","escapeHTML","removeHTML","switchEvents","obj","ns","toString","self","apply","arguments","isHidden","hidden","webkitHidden","mozHidden","msHidden","translate","s","k","exec","fnName","fnParams","i","fnList","fn","app_name","ERROR_START_AKE","SEND_WHITESPACE_TAG","WHITESPACE_START_AKE","url","overwrite","priority","online","chat","away","xa","dnd","onConnected","onAuthFail","numberOfMsg","rosterAppend","popupDuration","root","hideOffline","muteNotification","defaultAvatar","saveSettinsPermanent","carbons","emotions","queryActions","message","params","win","open","body","remove","showRemoveDialog","subscribe","showContactDialog","name","vcard","showVcard","append","template","resize","updateWindowListSB","scrollWindowListBy","ev","originalEvent","wheelDelta","tooltip","reg","join","windowTemplate","buddyTemplate","delay","content","attr","update","ri","we","ue","spot","removeClass","addClass","status","is","msgstate","your_connection_is_unencrypted","start_private","your_connection_is_encrypted","close_private","your_buddy_closed_the_private_connection","trust","your_buddy_is_verificated","sub","info","avatar","el","aid","avatarSrc","setAvatar","src","removeAttr","css","background-image","text-indent","conn","stanza","vCard","img","type","width","offset","scrollWidth","right","padding","getWindow","toggleList","disableSelection","ul","slideUp","complete","slideToggle","toggleClass","mouseleave","mouseenter","showLoginBox","focus","dialog","prop","showAuthFail","showFingerprints","showVerification","OTR","MSGSTATE_ENCRYPTED","change","slideDown","objects","updateUserItem","close","postMessage","conversation_is_now_verified","div","sec","quest","keyup","sendSmpReq","authentication_query_sent","showApproveDialog","from","noClose","stopPropagation","resFriendReq","alias","getDomainFromJid","addBuddy","removeBuddy","showAlert","showConfirmDialog","confirm","dismiss","showAboutDialog","showDebugLog","userInfo","hasOwnProperty","screen","height","j","res","identities","cap","client","identity","getCapabilitiesByJid","category","printProp","depth","item","children","tagName","before","failedToLoad","loadVcard","photo","img_el","showSettings","id","checked","effect","color","showRequestNotification","requestPermission","showUnknownSender","saveBuddy","removeUserItem","changePresence","pres","external","sendPres","updatePresence","muteSound","unmuteSound","unreadMsg","readMsg","hasClass","detectUriScheme","container","action","element","href","indexOf","pairs","substring","decodeURIComponent","detectEmail","trim","prev","mute","toggle","slimScroll","distance","opacity","notice","load","bud","insert","rename","expandClick","dblclick","scrollTo","li","listElements","thisStatus","appendTo","reorder","detach","purge","removeUserElement","_close","input","replaceWith","keypress","which","_rename","newname","iq","$iq","c","xmlns","sendIQ","duration","wl","roster_width","innerWidth","roster_right","parseFloat","state","animate","no_connection","relogin","Your_roster_is_empty_add_a","link","new_buddy","o","opt","onComplete","preventDefault","closeButton","colorbox","onClosed","onCleanup","overlayClose","escKey","toggleTransfer","clear","resizable","handles","minHeight","minWidth","event","ui","size","inArray","unread","ins","restoreChat","highlight","outerWidth","position","left","parents","_show","scrollDown","_hide","scrollHeight","direction","encrypted","forwarded","stamp","html_msg","MSGSTATE_FINISHED","your_message_wasnt_send_please_end_your_private_conversation","unencrypted_message_received","your_message_wasnt_send_because_you_have_no_valid_subscription","post","saveMessage","sendMessage","uid","_postMessage","source","protocol","p1","esc","charCodeAt","msgDiv","msgTsDiv","received","pop","ph","my_priv_fingerprint","not_available","my_jid","my_node","getNodeFromJid","bid_priv_fingerprint","fingerprint","bid_jid","bid_name","ret","authenticationDialog","fingerprintsDialog","chatWindow","windowList","rosterBuddy","loginBox","contactDialog","approveDialog","removeDialog","waitAlert","alert","authFailDialog","confirmDialog","pleaseAccept","aboutDialog","connected","sid","rid","attached","disconnected","onRidChange","onConnfail","addNamespace","Connection","stropheGetUniqueId","getUniqueId","suffix","_uniqueId","xmlInput","xmlOutput","callback","condition","Object","getOwnPropertyNames","Status","CONNECTED","ATTACHED","DISCONNECTED","CONNFAIL","AUTHFAIL","caps","node","attach","_addSysHandler","querySelector","ver","getAttribute","_jidNodeIndex","parse","localStorage","_jidVerIndex","CAPS","connect","removeItem","numOtr","keys","disReady","flush","disconnect","endOtr","backup","pause","nomJid","getResourceFromJid","_proto","connectionReady","resume","addHandler","onRosterChanged","onMessage","onReceived","onPresence","conditionalEnable","hasFeatureByJid","_knownCapabilities","onCaps","_requestCapabilities","onRoster","disco","addIdentity","addFeature","DISCO_INFO","RECEIPTS","$pres","generateCapsAttrs","up","presState","t","send","location","bl","temp","notices","noticeKey","presence","ptype","r","xVCard","approve","maxVal","notify","carbon","mid","request","$msg","receiveMsg","subscription","receivedId","sendMsg","_sendMessage","isBar","xmlMsg","enabled","cb","error_cb","result","jidVerIndex","knownCapabilities","disable","refresh","PREFIX","SEP","getPrefix","uk","e","prefix","variable","Number","removeElement","isArray","grep","re","newValue","splice","oldValue","n","posts","sm","abort","onSmpQuestion","transferReq","goPlain","goEncrypt","unshift","dsaFallback","receiveMessage","MSGSTATE_PLAINTEXT","priv","ol","STATUS_SEND_QUERY","trying_to_start_private_conversation","STATUS_AKE_SUCCESS","their_priv_pk","Verified","Unverified","private_conversation_started","STATUS_END_OTR","private_conversation_aborted","your_buddy_closed_the_private_conversation_you_should_do_the_same","STATUS_SMP_HANDLE","Authentication_request_received","authentication_failed","Authentication_aborted","your_buddy_is_attempting_to_determine_","to_authenticate_to_your_buddy","enter_the_answer_and_click_answer","enter_the_secret","smpSecret","sendQueryMsg","savekey","packPublic","ake","otr_version","DSA","parsePublic","_smInit","Creating_your_private_key_","worker","Worker","dsa","DSAready","onmessage","parsePrivate","imports","seed","BigInt","getSeed","_createDSA","packPrivate","audio","undefined","playSound","stopSound","title","force","soundFile","loop","popup","Notification","icon","webkitNotifications","createNotification","cancel","permission","checkPermission","func","notificationready.jsxc","notificationfailure.jsxc","Audio","play","_num","saved","description","nid","now","list","you_have_only_a_subscription_in_one_way","Authenticating_a_buddy_helps_","How_do_you_want_to_authenticate_your_buddy","Select_method","Manual","Question","Secret","To_verify_the_fingerprint_","Your_fingerprint","Buddy_fingerprint","Close","Compared","To_authenticate_using_a_question_","Ask","To_authenticate_pick_a_secret_","Compare","Fingerprints","Authentication","Message","Add_buddy","rename_buddy","delete_buddy","Login","Username","Password","Cancel","Connect","Type_in_the_full_username_","Alias","Add","Subscription_request","You_have_a_request_from","Deny","Approve","Remove_buddy","You_are_about_to_remove_","Continue_without_chat","Please_wait","Login_failed","Sorry_we_cant_authentikate_","Retry","clear_history","New_message_from","Should_we_notify_you_","Please_accept_","Hide_offline","Show_offline","About","Mute","Unmute","Subscription","both","offline","none","Unknown_instance_tag","Not_one_of_our_latest_keys","Received_an_unreadable_encrypted_message","Online","Chatty","Away","Extended_away","Offline","Friendship_request","Confirm","Dismiss","Remove","Online_help","FN","N","FAMILY","GIVEN","NICKNAME","ADR","STREET","EXTADD","LOCALITY","REGION","PCODE","CTRY","TEL","NUMBER","EMAIL","USERID","ORG","ORGNAME","ORGUNIT","TITLE","ROLE","BDAY","DESC","PHOTO","send_message","get_info","Settings","Priority","Save","User_settings","A_fingerprint_","Login_options","BOSH_url","Domain","Resource","On_login","Received_an_unencrypted_message","Sorry_your_buddy_doesnt_provide_any_information","Info_about","Do_you_want_to_display_them","Log_in_without_chat","has_come_online","Unknown_sender","You_received_a_message_from_an_unknown_sender","de","Menu","es","jQuery","RTC","RTCPeerconnection","incomingCall","allowMediaAccess","videoWindow","webrtc","localStream","remoteStream","last_caller","AUTO_ACCEPT","reqVideoFeatures","chatJids","browser","jingle","media_constraints","mandatory","MozDontOfferDataChannel","PRANSWER","AUTOACCEPT","ice_config","MULTIPARTY","pc_constraints","proxy","onMediaReady","onMediaFailure","onCallIncoming","onCallTerminated","onCallRinging","onRemoteStreamAdded","onRemoteStreamRemoved","onIceConnectionStateChanged","noStunCandidates","getTurnCrendentials","turnCredentialsPath","ttl","ajax","async","success","iceConfig","iceServers","credential","dataType","getCapableRes","available","onAddRosterItem","videoIcon","Start_video_call","startCall","updateIcon","initWindow","after","capableRes","targetRes","setStatus","txt","margin-left","display","stop","stream","showVideoWindow","getAudioTracks","label","getVideoTracks","hangUp","sess","sessions","peerjid","sendRinging","mediaready.jingle","peerconnection","addStream","sendAnswer","accept","mediafailure.jingle","sendTerminate","terminate","reqUserMedia","reason","isVideoDevice","isAudioDevice","remoteDevices","video","attachMediaStream","sigState","signalingState","iceCon","iceConnectionState","iceGatheringState","localSDP","localDescription","sdp","remoteSDP","remoteDescription","local_fp","SDPUtil","parse_fingerprint","find_line","remote_fp","ip_regex","remote_ip","local_ip","regex","um","finish.mediaready.jsxc","initiate","MediaStreamTrack","getSources","sourceInfo","availableDevices","map","kind","filter","getUserMediaWithConstraints","snapshot","canvas","ctx","getContext","drawImage","toDataURL","target","muted","volume","rv","lv","draggable","containment","w_dialog","w_remote","scale","new_h","new_w","vc","toggleMulti","elem","not","chatarea","support","fullscreen","KEYCODE_ENTER","KEYCODE_ESC","ready","setupRTC","Please_allow_access_to_microphone_and_camera","Incoming_call","Do_you_want_to_accept_the_call_from","Reject","Accept","hang_up","mute_my_audio","pause_my_video","Info","Local_IP","Remote_IP","Local_Fingerprint","Remote_Fingerprint","Video_call_not_possible"],"mappings":"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"} \ No newline at end of file
diff --git a/build/js/jsxc/jsxc.webrtc.css b/build/js/jsxc/jsxc.webrtc.css
deleted file mode 100644
index 63e0243..0000000
--- a/build/js/jsxc/jsxc.webrtc.css
+++ /dev/null
@@ -1,379 +0,0 @@
-.jsxc_webrtc {
- width: 900px;
-}
-
-.jsxc_webrtc li .jsxc_name {
- cursor: auto;
-}
-
-.jsxc_webrtc li .jsxc_name:hover {
- color: #939393;
-}
-
-.jsxc_videoContainer {
- width: 640px;
- height: 480px;
- position: relative;
- background-color: #a4a4a4;
-}
-
-.jsxc_videoContainer video, .jsxc_videoContainer .jsxc_noRemoteVideo {
- display: none;
-}
-
-.jsxc_remotevideo, .jsxc_noRemoteVideo {
- width: 100%;
- height: 100%;
- position: absolute;
- top: 0px;
- left: 0px;
- z-index: 9000;
- background-color: #a4a4a4;
-}
-
-.jsxc_localvideo {
- width: 160px;
- height: 120px;
- position: absolute;
- right: 10px;
- bottom: 10px;
- z-index: 9990;
- background-color: black;
- cursor: pointer;
-}
-
-.jsxc_noRemoteVideo p {
- position: absolute;
- bottom: 0px;
- left:0px;
- text-align: center;
- color: #fff;
- width: 100%;
- z-index: 100;
-}
-
-.jsxc_noRemoteVideo > div {
- width: 200px;
- height: 200px;
- overflow: hidden;
- position: absolute;
- top: 50%;
- margin-top: -100px;
- left: 50%;
- margin-left: -100px;
-}
-
-.jsxc_noRemoteVideo > div > div {
- background-color: #717171;
-}
-
-.jsxc_noRemoteVideo > div > div:first-child {
- width: 50%;
- height: 50%;
- border-radius: 50%;
- position: absolute;
- left: 50%;
- margin-left: -25%;
- top: 10%;
-}
-
-.jsxc_noRemoteVideo > div > div:last-child {
- position: absolute;
- bottom: -50%;
- width: 100%;
- height: 100%;
- border-radius: 50%;
-}
-
-.jsxc_webrtc .jsxc_status {
- z-index: 9999;
- border-radius: 20px;
- display: none;
- position: absolute;
- top: 30px;
- left: 50%;
- background-color: lightgrey;
- background-color: rgba(0, 0, 0, 0.5);
- color: white;
- padding: 15px;
- font-weight: bold;
- text-align: center;
-}
-
-.jsxc_webrtc .slimScrollDiv {
- opacity: 1 !important;
-}
-
-div:-moz-full-screen {
- width: 100%;
- height: 100%;
- background-color: black;
-}
-
-div:-ms-full-screen {
- width: 100%;
- height: 100%;
- background-color: black;
-}
-
-div:-webkit-full-screen {
- width: 100%;
- height: 100%;
- background-color: black;
-}
-
-div:fullscreen {
- width: 100%;
- height: 100%;
- background-color: black;
-}
-
-div:-moz-full-screen.jsxc_localvideo {
- border: 1px solid white;
-}
-
-div:-webkit-full-screen.jsxc_localvideo {
- border: 1px solid white;
-}
-
-div:-ms-full-screen.jsxc_localvideo {
- border: 1px solid white;
-}
-
-div:fullscreen.jsxc_localvideo {
- border: 1px solid white;
-}
-
-.jsxc_fullscreen.jsxc_localvideo {
- border: 1px solid white;
-}
-
-.jsxc_controlbar {
- width: 640px;
-}
-
-.jsxc_controlbar .jsxc_showchat {
- float: right;
-}
-
-.jsxc_multi>div {
- display: none;
-}
-
-.jsxc_snapshotbar {
- width: 100%;
- display: none;
-}
-
-.jsxc_snapshotbar img {
- height: 50px;
-}
-
-.jsxc_buttongroup {
- display: inline;
-}
-
-.jsxc_buttongroup button:first-child {
- border-top-right-radius: 0px;
- border-bottom-right-radius: 0px;
- margin-right: 0px;
-}
-
-.jsxc_buttongroup button:last-child {
- border-top-left-radius: 0px;
- border-bottom-left-radius: 0px;
- margin-left: 0px;
-}
-
-.jsxc_chatarea {
- position: relative;
- float:right;
- height: 480px;
- width: 250px;
- background-color: #A4A4A4;
-}
-
-.jsxc_chatarea > ul {
- width: 250px;
- height: 480px;
- list-style: none;
- padding: 0px;
-}
-
-.jsxc_chatarea .jsxc_settings {
- display: none !important;
-}
-
-.jsxc_chatarea .jsxc_close {
- display: none !important;
-}
-
-.jsxc_chatarea .jsxc_video {
- display: none !important;
-}
-
-.jsxc_chatarea .jsxc_bar {
-
-}
-
-.jsxc_chatarea .jsxc_window {
- bottom: 0px;
- box-shadow: none;
-}
-
-.jsxc_videoSuitable .jsxc_name {
- font-style: italic;
-}
-
-div.jsxc_video {
- background-image: url('img/camera_icon_grey.svg');
- background-repeat: no-repeat;
- background-position: center center;
- background-size: 15px 15px;
-}
-
-div.jsxc_video:not(.jsxc_disabled):hover, #jsxc_buddylist .jsxc_options .jsxc_video {
- background-image: url('img/camera_icon_white.svg');
-}
-
-#jsxc_buddylist .jsxc_options .jsxc_video.jsxc_disabled {
- opacity: 0.2;
-}
-
-.bubblingG {
-text-align: center;
-width:129px;
-height:80px;
-position: absolute;
-top: 40%;
-left: 50%;
-margin-left: -64px;
-}
-
-.bubblingG span {
-display: inline-block;
-vertical-align: middle;
-width: 16px;
-height: 16px;
-margin: 40px auto;
-background: #000000;
--moz-border-radius: 81px;
--moz-animation: bubblingG 1.3s infinite alternate;
--webkit-border-radius: 81px;
--webkit-animation: bubblingG 1.3s infinite alternate;
--ms-border-radius: 81px;
--ms-animation: bubblingG 1.3s infinite alternate;
--o-border-radius: 81px;
--o-animation: bubblingG 1.3s infinite alternate;
-border-radius: 81px;
-animation: bubblingG 1.3s infinite alternate;
-}
-
-#bubblingG_1 {
--moz-animation-delay: 0s;
--webkit-animation-delay: 0s;
--ms-animation-delay: 0s;
--o-animation-delay: 0s;
-animation-delay: 0s;
-}
-
-#bubblingG_2 {
--moz-animation-delay: 0.39s;
--webkit-animation-delay: 0.39s;
--ms-animation-delay: 0.39s;
--o-animation-delay: 0.39s;
-animation-delay: 0.39s;
-}
-
-#bubblingG_3 {
--moz-animation-delay: 0.78s;
--webkit-animation-delay: 0.78s;
--ms-animation-delay: 0.78s;
--o-animation-delay: 0.78s;
-animation-delay: 0.78s;
-}
-
-@-moz-keyframes bubblingG {
-0% {
-width: 16px;
-height: 16px;
-background-color:#000000;
--moz-transform: translateY(0);
-}
-
-100% {
-width: 39px;
-height: 39px;
-background-color:#FFFFFF;
--moz-transform: translateY(-34px);
-}
-
-}
-
-@-webkit-keyframes bubblingG {
-0% {
-width: 16px;
-height: 16px;
-background-color:#000000;
--webkit-transform: translateY(0);
-}
-
-100% {
-width: 39px;
-height: 39px;
-background-color:#FFFFFF;
--webkit-transform: translateY(-34px);
-}
-
-}
-
-@-ms-keyframes bubblingG {
-0% {
-width: 16px;
-height: 16px;
-background-color:#000000;
--ms-transform: translateY(0);
-}
-
-100% {
-width: 39px;
-height: 39px;
-background-color:#FFFFFF;
--ms-transform: translateY(-34px);
-}
-
-}
-
-@-o-keyframes bubblingG {
-0% {
-width: 16px;
-height: 16px;
-background-color:#000000;
--o-transform: translateY(0);
-}
-
-100% {
-width: 39px;
-height: 39px;
-background-color:#FFFFFF;
--o-transform: translateY(-34px);
-}
-
-}
-
-@keyframes bubblingG {
-0% {
-width: 16px;
-height: 16px;
-background-color:#000000;
-transform: translateY(0);
-}
-
-100% {
-width: 39px;
-height: 39px;
-background-color:#FFFFFF;
-transform: translateY(-34px);
-}
-
-}
diff --git a/build/js/jsxc/lib/jsxc.dep.js b/build/js/jsxc/lib/jsxc.dep.js
index c81e8c4..2f356d1 100644
--- a/build/js/jsxc/lib/jsxc.dep.js
+++ b/build/js/jsxc/lib/jsxc.dep.js
@@ -1,5 +1,5 @@
/*!
- * jsxc v1.0.0 - 2014-11-06
+ * jsxc v1.1.0-beta - 2015-02-03
*
* This file concatenates all dependencies of jsxc.
*
@@ -6613,13 +6613,18 @@ Strophe.addConnectionPlugin('disco',
* Returns: (Boolean) - false, to automatically remove the handler.
*/
_handleDiscoInfoReply: function(stanza) {
- var query = stanza.querySelector('query'), node = query.getAttribute('node').split('#'), ver = node[1], from = stanza.getAttribute('from');
+ var query = stanza.querySelector('query');
+ var from = stanza.getAttribute('from');
+ var node = query.getAttribute('node');
+ var ver = (node)? node.split('#')[1] : this._jidVerIndex[from]; //fix open prosody issue
+
if (!this._knownCapabilities[ver]) {
var childNodes = query.childNodes, childNodesLen = childNodes.length;
this._knownCapabilities[ver] = {
features: [],
identities: []
};
+
for (var i = 0; i < childNodesLen; i++) {
var node = childNodes[i];
if (node.nodeName == 'feature') {
@@ -6627,10 +6632,11 @@ Strophe.addConnectionPlugin('disco',
} else if (node.nodeName == 'identity') {
this._knownCapabilities[ver]['identities'].push(this._attributesToJsObject(node.attributes));
} else {
- if (_knownCapabilities[ver][node.nodeName])
- _knownCapabilities[ver][node.nodeName] = [];
+ if (typeof this._knownCapabilities[ver][node.nodeName] === 'undefined')
+ this._knownCapabilities[ver][node.nodeName] = [];
this._knownCapabilities[ver][node.nodeName].push(this._attributesToJsObject(node.attributes));
}
+
}
this._jidVerIndex[from] = ver;
} else if (!this._jidVerIndex[from] || !this._jidVerIndex[from] !== ver) {
@@ -14013,8 +14019,8 @@ CryptoJS.mode.CTR = (function () {
* Source: build/lib/otr/build/otr.js, license: MPL v2.0, url: https://arlolra.github.io/otr/ */
/*!
- otr.js v0.2.13 - 2014-09-07
- (c) 2014 - Arlo Breault <arlolra@gmail.com>
+ otr.js v0.2.14 - 2015-01-16
+ (c) 2015 - Arlo Breault <arlolra@gmail.com>
Freely distributed under the MPL v2.0 license.
This file is concatenated for the browser.
@@ -15633,10 +15639,12 @@ CryptoJS.mode.CTR = (function () {
this.smpstate = CONST.SMPSTATE_EXPECT0
- // assume utf8 question
- question = CryptoJS.enc.Latin1
- .parse(question)
- .toString(CryptoJS.enc.Utf8)
+ if (question) {
+ // assume utf8 question
+ question = CryptoJS.enc.Latin1
+ .parse(question)
+ .toString(CryptoJS.enc.Utf8)
+ }
// invoke question
this.trigger('question', [question])
@@ -16423,7 +16431,8 @@ CryptoJS.mode.CTR = (function () {
// utf8 inputs
secret = CryptoJS.enc.Utf8.parse(secret).toString(CryptoJS.enc.Latin1)
- question = CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1)
+ if (question)
+ question = CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1)
this.sm.rcvSecret(secret, question)
}
@@ -16486,7 +16495,7 @@ CryptoJS.mode.CTR = (function () {
if (msg) this.io(msg, meta)
}
- OTR.prototype.receiveMsg = function (msg) {
+ OTR.prototype.receiveMsg = function (msg, meta) {
// parse type
msg = Parse.parseMsg(this, msg)
@@ -16537,7 +16546,7 @@ CryptoJS.mode.CTR = (function () {
this.doAKE(msg)
}
- if (msg.msg) this.trigger('ui', [msg.msg, !!msg.encrypted])
+ if (msg.msg) this.trigger('ui', [msg.msg, !!msg.encrypted, meta])
}
OTR.prototype.checkInstanceTags = function (it) {
diff --git a/build/js/jsxc/lib/jsxc.dep.min.js b/build/js/jsxc/lib/jsxc.dep.min.js
index fa59790..b568d49 100644
--- a/build/js/jsxc/lib/jsxc.dep.min.js
+++ b/build/js/jsxc/lib/jsxc.dep.min.js
@@ -1,5 +1,5 @@
/*!
- * jsxc v1.0.0 - 2014-11-06
+ * jsxc v1.1.0-beta - 2015-02-03
*
* This file concatenates all dependencies of jsxc.
*
@@ -43,7 +43,7 @@ Strophe.addConnectionPlugin("disco",{_connection:null,_identities:[],_features:[
*
* @license MIT
*/
-function($){Strophe.addConnectionPlugin("caps",{HASH:"sha-1",node:"http://strophe.im/strophejs/",_ver:"",_connection:null,_knownCapabilities:JSON.parse(localStorage.getItem("strophe.caps._knownCapabilities"))||{},_jidVerIndex:JSON.parse(localStorage.getItem("strophe.caps._jidVerIndex"))||{},init:function(conn){if(this._connection=conn,Strophe.addNamespace("CAPS","http://jabber.org/protocol/caps"),!this._connection.disco)throw"Caps plugin requires the disco plugin to be installed.";this._connection.disco.addFeature(Strophe.NS.CAPS),this._connection.addHandler(this._delegateCapabilities.bind(this),Strophe.NS.CAPS)},generateCapsAttrs:function(){return{xmlns:Strophe.NS.CAPS,hash:this.HASH,node:this.node,ver:this.generateVer()}},generateVer:function(){if(""!==this._ver)return this._ver;for(var ver="",identities=this._connection.disco._identities.sort(this._sortIdentities),identitiesLen=identities.length,features=this._connection.disco._features.sort(),featuresLen=features.length,i=0;identitiesLen>i;i++){var curIdent=identities[i];ver+=curIdent.category+"/"+curIdent.type+"/"+curIdent.lang+"/"+curIdent.name+"<"}for(var i=0;featuresLen>i;i++)ver+=features[i]+"<";return this._ver=b64_sha1(ver),this._ver},getCapabilitiesByJid:function(jid){return this._jidVerIndex[jid]?this._knownCapabilities[this._jidVerIndex[jid]]:null},hasFeatureByJid:function(jid,feature){if(this._jidVerIndex[jid]&&null!==feature&&"undefined"!=typeof feature){$.isArray(feature)||(feature=$.makeArray(feature));var i;for(i=0;i<feature.length;i++)if(this._knownCapabilities[this._jidVerIndex[jid]].features.indexOf(feature[i])<0)return!1;return!0}return!1},_delegateCapabilities:function(stanza){var from=stanza.getAttribute("from"),c=stanza.querySelector("c"),ver=c.getAttribute("ver"),node=c.getAttribute("node");return this._knownCapabilities[ver]?(this._jidVerIndex[from]=ver,this._jidVerIndex[from]&&!this._jidVerIndex[from]===ver||(this._jidVerIndex[from]=ver),localStorage.setItem("strophe.caps._jidVerIndex",JSON.stringify(this._jidVerIndex)),$(document).trigger("caps.strophe",[from]),!0):this._requestCapabilities(from,node,ver)},_requestCapabilities:function(to,node,ver){if(to!==this._connection.jid){var id=this._connection.disco.info(to,node+"#"+ver);this._connection.addHandler(this._handleDiscoInfoReply.bind(this),Strophe.NS.DISCO_INFO,"iq","result",id,to)}return!0},_handleDiscoInfoReply:function(stanza){var query=stanza.querySelector("query"),node=query.getAttribute("node").split("#"),ver=node[1],from=stanza.getAttribute("from");if(this._knownCapabilities[ver])this._jidVerIndex[from]&&!this._jidVerIndex[from]===ver||(this._jidVerIndex[from]=ver);else{var childNodes=query.childNodes,childNodesLen=childNodes.length;this._knownCapabilities[ver]={features:[],identities:[]};for(var i=0;childNodesLen>i;i++){var node=childNodes[i];"feature"==node.nodeName?this._knownCapabilities[ver].features.push(node.getAttribute("var")):"identity"==node.nodeName?this._knownCapabilities[ver].identities.push(this._attributesToJsObject(node.attributes)):(_knownCapabilities[ver][node.nodeName]&&(_knownCapabilities[ver][node.nodeName]=[]),this._knownCapabilities[ver][node.nodeName].push(this._attributesToJsObject(node.attributes)))}this._jidVerIndex[from]=ver}return localStorage.setItem("strophe.caps._jidVerIndex",JSON.stringify(this._jidVerIndex)),localStorage.setItem("strophe.caps._knownCapabilities",JSON.stringify(this._knownCapabilities)),$(document).trigger("caps.strophe",[from]),!1},_attributesToJsObject:function(attr){var obj={};for(i=0;i<attr.length;i++)obj[attr[i].name]=attr[i].value;return obj},_sortIdentities:function(a,b){return a.category>b.category?1:a.category<b.category?-1:a.type>b.type?1:a.type<b.type?-1:a.lang>b.lang?1:a.lang<b.lang?-1:0}})}(jQuery);/*!
+function($){Strophe.addConnectionPlugin("caps",{HASH:"sha-1",node:"http://strophe.im/strophejs/",_ver:"",_connection:null,_knownCapabilities:JSON.parse(localStorage.getItem("strophe.caps._knownCapabilities"))||{},_jidVerIndex:JSON.parse(localStorage.getItem("strophe.caps._jidVerIndex"))||{},init:function(conn){if(this._connection=conn,Strophe.addNamespace("CAPS","http://jabber.org/protocol/caps"),!this._connection.disco)throw"Caps plugin requires the disco plugin to be installed.";this._connection.disco.addFeature(Strophe.NS.CAPS),this._connection.addHandler(this._delegateCapabilities.bind(this),Strophe.NS.CAPS)},generateCapsAttrs:function(){return{xmlns:Strophe.NS.CAPS,hash:this.HASH,node:this.node,ver:this.generateVer()}},generateVer:function(){if(""!==this._ver)return this._ver;for(var ver="",identities=this._connection.disco._identities.sort(this._sortIdentities),identitiesLen=identities.length,features=this._connection.disco._features.sort(),featuresLen=features.length,i=0;identitiesLen>i;i++){var curIdent=identities[i];ver+=curIdent.category+"/"+curIdent.type+"/"+curIdent.lang+"/"+curIdent.name+"<"}for(var i=0;featuresLen>i;i++)ver+=features[i]+"<";return this._ver=b64_sha1(ver),this._ver},getCapabilitiesByJid:function(jid){return this._jidVerIndex[jid]?this._knownCapabilities[this._jidVerIndex[jid]]:null},hasFeatureByJid:function(jid,feature){if(this._jidVerIndex[jid]&&null!==feature&&"undefined"!=typeof feature){$.isArray(feature)||(feature=$.makeArray(feature));var i;for(i=0;i<feature.length;i++)if(this._knownCapabilities[this._jidVerIndex[jid]].features.indexOf(feature[i])<0)return!1;return!0}return!1},_delegateCapabilities:function(stanza){var from=stanza.getAttribute("from"),c=stanza.querySelector("c"),ver=c.getAttribute("ver"),node=c.getAttribute("node");return this._knownCapabilities[ver]?(this._jidVerIndex[from]=ver,this._jidVerIndex[from]&&!this._jidVerIndex[from]===ver||(this._jidVerIndex[from]=ver),localStorage.setItem("strophe.caps._jidVerIndex",JSON.stringify(this._jidVerIndex)),$(document).trigger("caps.strophe",[from]),!0):this._requestCapabilities(from,node,ver)},_requestCapabilities:function(to,node,ver){if(to!==this._connection.jid){var id=this._connection.disco.info(to,node+"#"+ver);this._connection.addHandler(this._handleDiscoInfoReply.bind(this),Strophe.NS.DISCO_INFO,"iq","result",id,to)}return!0},_handleDiscoInfoReply:function(stanza){var query=stanza.querySelector("query"),from=stanza.getAttribute("from"),node=query.getAttribute("node"),ver=node?node.split("#")[1]:this._jidVerIndex[from];if(this._knownCapabilities[ver])this._jidVerIndex[from]&&!this._jidVerIndex[from]===ver||(this._jidVerIndex[from]=ver);else{var childNodes=query.childNodes,childNodesLen=childNodes.length;this._knownCapabilities[ver]={features:[],identities:[]};for(var i=0;childNodesLen>i;i++){var node=childNodes[i];"feature"==node.nodeName?this._knownCapabilities[ver].features.push(node.getAttribute("var")):"identity"==node.nodeName?this._knownCapabilities[ver].identities.push(this._attributesToJsObject(node.attributes)):("undefined"==typeof this._knownCapabilities[ver][node.nodeName]&&(this._knownCapabilities[ver][node.nodeName]=[]),this._knownCapabilities[ver][node.nodeName].push(this._attributesToJsObject(node.attributes)))}this._jidVerIndex[from]=ver}return localStorage.setItem("strophe.caps._jidVerIndex",JSON.stringify(this._jidVerIndex)),localStorage.setItem("strophe.caps._knownCapabilities",JSON.stringify(this._knownCapabilities)),$(document).trigger("caps.strophe",[from]),!1},_attributesToJsObject:function(attr){var obj={};for(i=0;i<attr.length;i++)obj[attr[i].name]=attr[i].value;return obj},_sortIdentities:function(a,b){return a.category>b.category?1:a.category<b.category?-1:a.type>b.type?1:a.type<b.type?-1:a.lang>b.lang?1:a.lang<b.lang?-1:0}})}(jQuery);/*!
* Source: build/lib/strophe.vcard.js, license: MIT, url: https://github.com/strophe/strophejs-plugins */
var buildIq;buildIq=function(type,jid,vCardEl){var iq;return iq=$iq(jid?{type:type,to:jid}:{type:type}),iq.c("vCard",{xmlns:Strophe.NS.VCARD}),vCardEl&&iq.cnode(vCardEl),iq},Strophe.addConnectionPlugin("vcard",{_connection:null,init:function(conn){return this._connection=conn,Strophe.addNamespace("VCARD","vcard-temp")},get:function(handler_cb,jid,error_cb){var iq;return iq=buildIq("get",jid),this._connection.sendIQ(iq,handler_cb,error_cb)},set:function(handler_cb,vCardEl,jid){var iq;return iq=buildIq("set",jid,vCardEl),this._connection.sendIQ(iq,handler_cb,error_rb)}}),/*!
* Source: build/lib/strophe.jingle/strophe.jingle.js, license: MIT, url: https://github.com/ESTOS/strophe.jingle */
@@ -62,6 +62,6 @@ return C}(Math);return function(){{var C=CryptoJS,C_lib=C.lib,WordArray=C_lib.Wo
* MIT license
* @preserve
*/
-function(){"use strict";function EventEmitter(){}function indexOfListener(listeners,listener){for(var i=listeners.length;i--;)if(listeners[i].listener===listener)return i;return-1}function alias(name){return function(){return this[name].apply(this,arguments)}}var proto=EventEmitter.prototype;proto.getListeners=function(evt){var response,key,events=this._getEvents();if("object"==typeof evt){response={};for(key in events)events.hasOwnProperty(key)&&evt.test(key)&&(response[key]=events[key])}else response=events[evt]||(events[evt]=[]);return response},proto.flattenListeners=function(listeners){var i,flatListeners=[];for(i=0;i<listeners.length;i+=1)flatListeners.push(listeners[i].listener);return flatListeners},proto.getListenersAsObject=function(evt){var response,listeners=this.getListeners(evt);return listeners instanceof Array&&(response={},response[evt]=listeners),response||listeners},proto.addListener=function(evt,listener){var key,listeners=this.getListenersAsObject(evt),listenerIsWrapped="object"==typeof listener;for(key in listeners)listeners.hasOwnProperty(key)&&-1===indexOfListener(listeners[key],listener)&&listeners[key].push(listenerIsWrapped?listener:{listener:listener,once:!1});return this},proto.on=alias("addListener"),proto.addOnceListener=function(evt,listener){return this.addListener(evt,{listener:listener,once:!0})},proto.once=alias("addOnceListener"),proto.defineEvent=function(evt){return this.getListeners(evt),this},proto.defineEvents=function(evts){for(var i=0;i<evts.length;i+=1)this.defineEvent(evts[i]);return this},proto.removeListener=function(evt,listener){var index,key,listeners=this.getListenersAsObject(evt);for(key in listeners)listeners.hasOwnProperty(key)&&(index=indexOfListener(listeners[key],listener),-1!==index&&listeners[key].splice(index,1));return this},proto.off=alias("removeListener"),proto.addListeners=function(evt,listeners){return this.manipulateListeners(!1,evt,listeners)},proto.removeListeners=function(evt,listeners){return this.manipulateListeners(!0,evt,listeners)},proto.manipulateListeners=function(remove,evt,listeners){var i,value,single=remove?this.removeListener:this.addListener,multiple=remove?this.removeListeners:this.addListeners;if("object"!=typeof evt||evt instanceof RegExp)for(i=listeners.length;i--;)single.call(this,evt,listeners[i]);else for(i in evt)evt.hasOwnProperty(i)&&(value=evt[i])&&("function"==typeof value?single.call(this,i,value):multiple.call(this,i,value));return this},proto.removeEvent=function(evt){var key,type=typeof evt,events=this._getEvents();if("string"===type)delete events[evt];else if("object"===type)for(key in events)events.hasOwnProperty(key)&&evt.test(key)&&delete events[key];else delete this._events;return this},proto.emitEvent=function(evt,args){var listener,i,key,response,listeners=this.getListenersAsObject(evt);for(key in listeners)if(listeners.hasOwnProperty(key))for(i=listeners[key].length;i--;)listener=listeners[key][i],listener.once===!0&&this.removeListener(evt,listener.listener),response=listener.listener.apply(this,args||[]),response===this._getOnceReturnValue()&&this.removeListener(evt,listener.listener);return this},proto.trigger=alias("emitEvent"),proto.emit=function(evt){var args=Array.prototype.slice.call(arguments,1);return this.emitEvent(evt,args)},proto.setOnceReturnValue=function(value){return this._onceReturnValue=value,this},proto._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},proto._getEvents=function(){return this._events||(this._events={})},"function"==typeof define&&define.amd?define(function(){return EventEmitter}):"object"==typeof module&&module.exports?module.exports=EventEmitter:this.EventEmitter=EventEmitter}.call(this),function(root,factory){"function"==typeof define&&define.amd?define(["bigint","crypto","eventemitter"],function(BigInt,CryptoJS,EventEmitter){var root={BigInt:BigInt,CryptoJS:CryptoJS,EventEmitter:EventEmitter,OTR:{},DSA:{}};return factory.call(root)}):(root.OTR={},root.DSA={},factory.call(root))}(this,function(){return function(){"use strict";var root=this,CONST={N:"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF",G:"2",MSGSTATE_PLAINTEXT:0,MSGSTATE_ENCRYPTED:1,MSGSTATE_FINISHED:2,AUTHSTATE_NONE:0,AUTHSTATE_AWAITING_DHKEY:1,AUTHSTATE_AWAITING_REVEALSIG:2,AUTHSTATE_AWAITING_SIG:3,WHITESPACE_TAG:" ",WHITESPACE_TAG_V2:" ",WHITESPACE_TAG_V3:" ",OTR_TAG:"?OTR",OTR_VERSION_1:"\x00",OTR_VERSION_2:"\x00",OTR_VERSION_3:"\x00",SMPSTATE_EXPECT0:0,SMPSTATE_EXPECT1:1,SMPSTATE_EXPECT2:2,SMPSTATE_EXPECT3:3,SMPSTATE_EXPECT4:4,STATUS_SEND_QUERY:0,STATUS_AKE_INIT:1,STATUS_AKE_SUCCESS:2,STATUS_END_OTR:3};"undefined"!=typeof module&&module.exports?module.exports=CONST:root.OTR.CONST=CONST}.call(this),function(){"use strict";function intCompare(x,y){var z=~(x^y);return z&=z>>16,z&=z>>8,z&=z>>4,z&=z>>2,z&=z>>1,1&z}var CryptoJS,BigInt,root=this,HLP={};"undefined"!=typeof module&&module.exports?(module.exports=HLP={},CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js")):(root.OTR&&(root.OTR.HLP=HLP),root.DSA&&(root.DSA.HLP=HLP),CryptoJS=root.CryptoJS,BigInt=root.BigInt);var DTS={BYTE:1,SHORT:2,INT:4,CTR:8,MAC:20,SIG:40},WRAPPER_BEGIN="?OTR",WRAPPER_END=".",TWO=BigInt.str2bigInt("2",10);HLP.debug=function(msg){this.debug&&"function"!=typeof this.debug&&"undefined"!=typeof console&&console.log(msg)},HLP.extend=function(child,parent){function Ctor(){this.constructor=child}for(var key in parent)Object.hasOwnProperty.call(parent,key)&&(child[key]=parent[key]);Ctor.prototype=parent.prototype,child.prototype=new Ctor,child.__super__=parent.prototype},HLP.compare=function(str1,str2){if(str1.length!==str2.length)return!1;for(var i=0,result=0;i<str1.length;i++)result|=str1[i].charCodeAt(0)^str2[i].charCodeAt(0);return intCompare(result,0)},HLP.randomExponent=function(){return BigInt.randBigInt(1536)},HLP.smpHash=function(version,fmpi,smpi){var sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(HLP.packBytes(version,DTS.BYTE))),sha256.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(fmpi))),smpi&&sha256.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(smpi)));var hash=sha256.finalize();return HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1))},HLP.makeMac=function(aesctr,m){var pass=CryptoJS.enc.Latin1.parse(m),mac=CryptoJS.HmacSHA256(CryptoJS.enc.Latin1.parse(aesctr),pass);return HLP.mask(mac.toString(CryptoJS.enc.Latin1),0,160)},HLP.make1Mac=function(aesctr,m){var pass=CryptoJS.enc.Latin1.parse(m),mac=CryptoJS.HmacSHA1(CryptoJS.enc.Latin1.parse(aesctr),pass);return mac.toString(CryptoJS.enc.Latin1)},HLP.encryptAes=function(msg,c,iv){var opts={mode:CryptoJS.mode.CTR,iv:CryptoJS.enc.Latin1.parse(iv),padding:CryptoJS.pad.NoPadding},aesctr=CryptoJS.AES.encrypt(msg,CryptoJS.enc.Latin1.parse(c),opts),aesctr_decoded=CryptoJS.enc.Base64.parse(aesctr.toString());return CryptoJS.enc.Latin1.stringify(aesctr_decoded)},HLP.decryptAes=function(msg,c,iv){msg=CryptoJS.enc.Latin1.parse(msg);var opts={mode:CryptoJS.mode.CTR,iv:CryptoJS.enc.Latin1.parse(iv),padding:CryptoJS.pad.NoPadding};return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(msg),CryptoJS.enc.Latin1.parse(c),opts)},HLP.multPowMod=function(a,b,c,d,e){return BigInt.multMod(BigInt.powMod(a,b,e),BigInt.powMod(c,d,e),e)},HLP.ZKP=function(v,c,d,e){return BigInt.equals(c,HLP.smpHash(v,d,e))},HLP.GTOE=function(a,b){return BigInt.equals(a,b)||BigInt.greater(a,b)},HLP.between=function(x,a,b){return BigInt.greater(x,a)&&BigInt.greater(b,x)},HLP.checkGroup=function(g,N_MINUS_2){return HLP.GTOE(g,TWO)&&HLP.GTOE(N_MINUS_2,g)},HLP.h1=function(b,secbytes){var sha1=CryptoJS.algo.SHA1.create();return sha1.update(CryptoJS.enc.Latin1.parse(b)),sha1.update(CryptoJS.enc.Latin1.parse(secbytes)),sha1.finalize().toString(CryptoJS.enc.Latin1)},HLP.h2=function(b,secbytes){var sha256=CryptoJS.algo.SHA256.create();return sha256.update(CryptoJS.enc.Latin1.parse(b)),sha256.update(CryptoJS.enc.Latin1.parse(secbytes)),sha256.finalize().toString(CryptoJS.enc.Latin1)},HLP.mask=function(bytes,start,n){return bytes.substr(start/8,n/8)};var _toString=String.fromCharCode;HLP.packBytes=function(val,bytes){val=val.toString(16);for(var nex,res="";bytes>0;bytes--)nex=val.length?val.substr(-2,2):"0",val=val.substr(0,val.length-2),res=_toString(parseInt(nex,16))+res;return res},HLP.packINT=function(d){return HLP.packBytes(d,DTS.INT)},HLP.packCtr=function(d){return HLP.padCtr(HLP.packBytes(d,DTS.CTR))},HLP.padCtr=function(ctr){return ctr+"\x00\x00\x00\x00\x00\x00\x00\x00"},HLP.unpackCtr=function(d){return d=HLP.toByteArray(d.substring(0,8)),HLP.unpack(d)},HLP.unpack=function(arr){for(var val=0,i=0,len=arr.length;len>i;i++)val=256*val+arr[i];return val},HLP.packData=function(d){return HLP.packINT(d.length)+d},HLP.bits2bigInt=function(bits){return bits=HLP.toByteArray(bits),BigInt.ba2bigInt(bits)},HLP.packMPI=function(mpi){return HLP.packData(BigInt.bigInt2bits(BigInt.trim(mpi,0)))},HLP.packSHORT=function(short){return HLP.packBytes(short,DTS.SHORT)},HLP.unpackSHORT=function(short){return short=HLP.toByteArray(short),HLP.unpack(short)},HLP.packTLV=function(type,value){return HLP.packSHORT(type)+HLP.packSHORT(value.length)+value},HLP.readLen=function(msg){return msg=HLP.toByteArray(msg.substring(0,4)),HLP.unpack(msg)},HLP.readData=function(data){var n=HLP.unpack(data.splice(0,4));return[n,data]},HLP.readMPI=function(data){return data=HLP.toByteArray(data),data=HLP.readData(data),BigInt.ba2bigInt(data[1])},HLP.packMPIs=function(arr){return arr.reduce(function(prv,cur){return prv+HLP.packMPI(cur)},"")},HLP.unpackMPIs=function(num,mpis){for(var i=0,arr=[];num>i;i++)arr.push("MPI");return HLP.splitype(arr,mpis).map(function(m){return HLP.readMPI(m)})},HLP.wrapMsg=function(msg,fs,v3,our_it,their_it){msg=CryptoJS.enc.Base64.stringify(CryptoJS.enc.Latin1.parse(msg)),msg=WRAPPER_BEGIN+":"+msg+WRAPPER_END;var its;if(v3&&(its="|",its+=HLP.readLen(our_it).toString(16),its+="|",its+=HLP.readLen(their_it).toString(16)),!fs)return[null,msg];var n=Math.ceil(msg.length/fs);if(n>65535)return["Too many fragments"];if(1==n)return[null,msg];var k,bi,ei,frag,mf,mfs=[];for(k=1;n>=k;k++)bi=(k-1)*fs,ei=k*fs,frag=msg.slice(bi,ei),mf=WRAPPER_BEGIN,v3&&(mf+=its),mf+=","+k+",",mf+=n+",",mf+=frag+",",mfs.push(mf);return[null,mfs]},HLP.splitype=function splitype(arr,msg){var data=[];return arr.forEach(function(a){var str;switch(a){case"PUBKEY":str=splitype(["SHORT","MPI","MPI","MPI","MPI"],msg).join("");break;case"DATA":case"MPI":str=msg.substring(0,HLP.readLen(msg)+4);break;default:str=msg.substring(0,DTS[a])}data.push(str),msg=msg.substring(str.length)}),data};var _bin2num=function(){for(var i=0,_bin2num={};256>i;++i)_bin2num[String.fromCharCode(i)]=i;for(i=128;256>i;++i)_bin2num[String.fromCharCode(63232+i)]=i;return _bin2num}();HLP.toByteArray=function(data){for(var rv=[],ary=data.split(""),i=-1,iz=ary.length,remain=iz%8;remain--;)++i,rv[i]=_bin2num[ary[i]];for(remain=iz>>3;remain--;)rv.push(_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]]);return rv}}.call(this),function(){"use strict";function timer(){var start=(new Date).getTime();return function(s){if(DEBUG&&"undefined"!=typeof console){var t=(new Date).getTime();console.log(s+": "+(t-start)),start=t}}}function makeRandom(min,max){var c=BigInt.randBigInt(BigInt.bitSize(max));return HLP.between(c,min,max)?c:makeRandom(min,max)}function isProbPrime(k,n){var i,B=3e4,l=BigInt.bitSize(k),primes=BigInt.primes;for(0===primes.length&&(primes=BigInt.findPrimes(B)),rpprb.length!=k.length&&(rpprb=BigInt.dup(k)),i=0;i<primes.length&&primes[i]<=B;i++)if(0===BigInt.modInt(k,primes[i])&&!BigInt.equalsInt(k,primes[i]))return 0;for(i=0;n>i;i++){for(BigInt.randBigInt_(rpprb,l,0);!BigInt.greater(k,rpprb);)BigInt.randBigInt_(rpprb,l,0);if(!BigInt.millerRabin(k,rpprb))return 0}return 1}function generatePrimes(bit_length){for(var q,p,rem,counter,t=timer(),repeat=bit_lengths[bit_length].repeat,N=bit_lengths[bit_length].N,LM1=BigInt.twoToThe(bit_length-1),bl4=4*bit_length,brk=!1;;)if(q=BigInt.randBigInt(N,1),q[0]|=1,isProbPrime(q,repeat)){for(t("q"),counter=0;bl4>counter;counter++)if(p=BigInt.randBigInt(bit_length,1),p[0]|=1,rem=BigInt.mod(p,q),rem=BigInt.sub(rem,ONE),p=BigInt.sub(p,rem),!BigInt.greater(LM1,p)&&isProbPrime(p,repeat)){t("p"),primes[bit_length]={p:p,q:q},brk=!0;break}if(brk)break}for(var g,h=BigInt.dup(TWO),pm1=BigInt.sub(p,ONE),e=BigInt.multMod(pm1,BigInt.inverseMod(q,p),p);;){g=BigInt.powMod(h,e,p);{if(!BigInt.equals(g,ONE))return primes[bit_length].g=g,void t("g");h=BigInt.add(h,ONE)}}throw new Error("Unreachable!")}function DSA(obj,opts){if(!(this instanceof DSA))return new DSA(obj,opts);if(opts=opts||{},obj){var self=this;return["p","q","g","y","x"].forEach(function(prop){self[prop]=obj[prop]}),void(this.type=obj.type||KEY_TYPE)}var bit_length=parseInt(opts.bit_length?opts.bit_length:1024,10);if(!bit_lengths[bit_length])throw new Error("Unsupported bit length.");primes[bit_length]||generatePrimes(bit_length),this.p=primes[bit_length].p,this.q=primes[bit_length].q,this.g=primes[bit_length].g,this.type=KEY_TYPE,this.x=makeRandom(ZERO,this.q),this.y=BigInt.powMod(this.g,this.x,this.p),opts.nocache&&(primes[bit_length]=null)}function tokenizeStr(str){var start,end;if(start=str.indexOf("("),end=str.lastIndexOf(")"),0>start||0>end)throw new Error("Malformed S-Expression");str=str.substring(start+1,end);var splt=str.search(/\s/),obj={type:str.substring(0,splt),val:[]};if(str=str.substring(splt+1,end),start=str.indexOf("("),0>start)obj.val.push(str);else for(var i,len,ss,es;start>-1;){for(i=start+1,len=str.length,ss=1,es=0;len>i&&ss>es;i++)"("===str[i]&&ss++,")"===str[i]&&es++;obj.val.push(tokenizeStr(str.substring(start,++i))),str=str.substring(++i),start=str.indexOf("(")}return obj}function parseLibotr(obj){if(!obj.type)throw new Error("Parse error.");var o,val;return"privkeys"===obj.type?(o=[],obj.val.forEach(function(i){o.push(parseLibotr(i))}),o):(o={},obj.val.forEach(function(i){val=i.val[0],"string"==typeof val?0===val.indexOf("#")&&(val=val.substring(1,val.lastIndexOf("#")),val=BigInt.str2bigInt(val,16)):val=parseLibotr(i),o[i.type]=val}),o)}var CryptoJS,BigInt,Worker,WWPath,HLP,root=this;"undefined"!=typeof module&&module.exports?(module.exports=DSA,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),WWPath=require("path").join(__dirname,"/dsa-webworker.js"),HLP=require("./helpers.js")):(Object.keys(root.DSA).forEach(function(k){DSA[k]=root.DSA[k]}),root.DSA=DSA,CryptoJS=root.CryptoJS,BigInt=root.BigInt,Worker=root.Worker,WWPath="dsa-webworker.js",HLP=DSA.HLP);var ZERO=BigInt.str2bigInt("0",10),ONE=BigInt.str2bigInt("1",10),TWO=BigInt.str2bigInt("2",10),KEY_TYPE="\x00\x00",DEBUG=!1,rpprb=[],bit_lengths={1024:{N:160,repeat:40},2048:{N:224,repeat:56}},primes={};DSA.prototype={constructor:DSA,packPublic:function(){var str=this.type;return str+=HLP.packMPI(this.p),str+=HLP.packMPI(this.q),str+=HLP.packMPI(this.g),str+=HLP.packMPI(this.y)},packPrivate:function(){var str=this.packPublic()+HLP.packMPI(this.x);return str=CryptoJS.enc.Latin1.parse(str),str.toString(CryptoJS.enc.Base64)},generateNonce:function(m){var priv=BigInt.bigInt2bits(BigInt.trim(this.x,0)),rand=BigInt.bigInt2bits(BigInt.randBigInt(256)),sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(priv)),sha256.update(m),sha256.update(CryptoJS.enc.Latin1.parse(rand));var hash=sha256.finalize();return hash=HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1)),BigInt.rightShift_(hash,256-BigInt.bitSize(this.q)),HLP.between(hash,ZERO,this.q)?hash:this.generateNonce(m)},sign:function(m){m=CryptoJS.enc.Latin1.parse(m);for(var k,b=BigInt.str2bigInt(m.toString(CryptoJS.enc.Hex),16),r=ZERO,s=ZERO;BigInt.isZero(s)||BigInt.isZero(r);)k=this.generateNonce(m),r=BigInt.mod(BigInt.powMod(this.g,k,this.p),this.q),BigInt.isZero(r)||(s=BigInt.inverseMod(k,this.q),s=BigInt.mult(s,BigInt.add(b,BigInt.mult(this.x,r))),s=BigInt.mod(s,this.q));return[r,s]},fingerprint:function(){var pk=this.packPublic();return this.type===KEY_TYPE&&(pk=pk.substring(2)),pk=CryptoJS.enc.Latin1.parse(pk),CryptoJS.SHA1(pk).toString(CryptoJS.enc.Hex)}},DSA.parsePublic=function(str,priv){var fields=["SHORT","MPI","MPI","MPI","MPI"];priv&&fields.push("MPI"),str=HLP.splitype(fields,str);var obj={type:str[0],p:HLP.readMPI(str[1]),q:HLP.readMPI(str[2]),g:HLP.readMPI(str[3]),y:HLP.readMPI(str[4])};return priv&&(obj.x=HLP.readMPI(str[5])),new DSA(obj)},DSA.parsePrivate=function(str,libotr){return libotr?parseLibotr(tokenizeStr(str))[0]["private-key"].dsa:(str=CryptoJS.enc.Base64.parse(str),str=str.toString(CryptoJS.enc.Latin1),DSA.parsePublic(str,!0))},DSA.verify=function(key,m,r,s){if(!HLP.between(r,ZERO,key.q)||!HLP.between(s,ZERO,key.q))return!1;var hm=CryptoJS.enc.Latin1.parse(m);hm=BigInt.str2bigInt(hm.toString(CryptoJS.enc.Hex),16);var w=BigInt.inverseMod(s,key.q),u1=BigInt.multMod(hm,w,key.q),u2=BigInt.multMod(r,w,key.q);u1=BigInt.powMod(key.g,u1,key.p),u2=BigInt.powMod(key.y,u2,key.p);var v=BigInt.mod(BigInt.multMod(u1,u2,key.p),key.q);return BigInt.equals(v,r)},DSA.createInWebWorker=function(options,cb){var opts={path:WWPath,seed:BigInt.getSeed};options&&"object"==typeof options&&Object.keys(options).forEach(function(k){opts[k]=options[k]}),"undefined"!=typeof module&&module.exports&&(Worker=require("webworker-threads").Worker);var worker=new Worker(opts.path);worker.onmessage=function(e){var data=e.data;switch(data.type){case"debug":if(!DEBUG||"undefined"==typeof console)return;console.log(data.val);break;case"data":worker.terminate(),cb(DSA.parsePrivate(data.val));break;default:throw new Error("Unrecognized type.")}},worker.postMessage({seed:opts.seed(),imports:opts.imports,debug:DEBUG})}}.call(this),function(){"use strict";var CryptoJS,CONST,HLP,root=this,Parse={};"undefined"!=typeof module&&module.exports?(module.exports=Parse,CryptoJS=require("../vendor/crypto.js"),CONST=require("./const.js"),HLP=require("./helpers.js")):(root.OTR.Parse=Parse,CryptoJS=root.CryptoJS,CONST=root.OTR.CONST,HLP=root.OTR.HLP);var tags={};tags[CONST.WHITESPACE_TAG_V2]=CONST.OTR_VERSION_2,tags[CONST.WHITESPACE_TAG_V3]=CONST.OTR_VERSION_3,Parse.parseMsg=function(otr,msg){var ver=[],start=msg.indexOf(CONST.OTR_TAG);if(!~start){if(this.initFragment(otr),ind=msg.indexOf(CONST.WHITESPACE_TAG),~ind){msg=msg.split(""),msg.splice(ind,16);for(var tag,len=msg.length;len>ind;)tag=msg.slice(ind,ind+8).join(""),Object.hasOwnProperty.call(tags,tag)?(msg.splice(ind,8),ver.push(tags[tag])):ind+=8;msg=msg.join("")}return{msg:msg,ver:ver}}var ind=start+CONST.OTR_TAG.length,com=msg[ind];if(","===com||"|"===com)return this.msgFragment(otr,msg.substring(ind+1),"|"===com);if(this.initFragment(otr),~["?","v"].indexOf(com)){"?"===msg[ind]&&(ver.push(CONST.OTR_VERSION_1),ind+=1);var vers={2:CONST.OTR_VERSION_2,3:CONST.OTR_VERSION_3},qs=msg.substring(ind+1),qi=qs.indexOf("?");return qi>=1&&(qs=qs.substring(0,qi).split(""),"v"===msg[ind]&&qs.forEach(function(q){Object.hasOwnProperty.call(vers,q)&&ver.push(vers[q])})),{cls:"query",ver:ver}}if(":"===com){ind+=1;var info=msg.substring(ind,ind+4);if(info.length<4)return{msg:msg};info=CryptoJS.enc.Base64.parse(info).toString(CryptoJS.enc.Latin1);var version=info.substring(0,2),type=info.substring(2);if(!otr["ALLOW_V"+HLP.unpackSHORT(version)])return{msg:msg};ind+=4;var end=msg.substring(ind).indexOf(".");if(!~end)return{msg:msg};msg=CryptoJS.enc.Base64.parse(msg.substring(ind,ind+end)),msg=CryptoJS.enc.Latin1.stringify(msg);var instance_tags;version===CONST.OTR_VERSION_3&&(instance_tags=msg.substring(0,8),msg=msg.substring(8));var cls;return~["","\n","",""].indexOf(type)?cls="ake":""===type&&(cls="data"),{version:version,type:type,msg:msg,cls:cls,instance_tags:instance_tags}}return" Error:"===msg.substring(ind,ind+7)?(otr.ERROR_START_AKE&&otr.sendQueryMsg(),{msg:msg.substring(ind+7),cls:"error"}):{msg:msg}},Parse.initFragment=function(otr){otr.fragment={s:"",j:0,k:0}},Parse.msgFragment=function(otr,msg,v3){if(msg=msg.split(","),v3){var its=msg.shift().split("|"),their_it=HLP.packINT(parseInt(its[0],16)),our_it=HLP.packINT(parseInt(its[1],16));if(otr.checkInstanceTags(their_it+our_it))return}if(!(msg.length<4||isNaN(parseInt(msg[0],10))||isNaN(parseInt(msg[1],10)))){var k=parseInt(msg[0],10),n=parseInt(msg[1],10);return msg=msg[2],k>n||0===n||0===k?void this.initFragment(otr):(1===k?(this.initFragment(otr),otr.fragment={k:1,n:n,s:msg}):n===otr.fragment.n&&k===otr.fragment.k+1?(otr.fragment.s+=msg,otr.fragment.k+=1):this.initFragment(otr),n===k?(msg=otr.fragment.s,this.initFragment(otr),this.parseMsg(otr,msg)):void 0)}}}.call(this),function(){"use strict";function hMac(gx,gy,pk,kid,m){var pass=CryptoJS.enc.Latin1.parse(m),hmac=CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256,pass);return hmac.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(gx))),hmac.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(gy))),hmac.update(CryptoJS.enc.Latin1.parse(pk)),hmac.update(CryptoJS.enc.Latin1.parse(kid)),hmac.finalize().toString(CryptoJS.enc.Latin1)}function AKE(otr){if(!(this instanceof AKE))return new AKE(otr);this.otr=otr,this.our_dh=otr.our_old_dh,this.our_keyid=otr.our_keyid-1,this.their_y=null,this.their_keyid=null,this.their_priv_pk=null,this.ssid=null,this.transmittedRS=!1,this.r=null;var self=this;["sendMsg"].forEach(function(meth){self[meth]=self[meth].bind(self)})}var CryptoJS,BigInt,CONST,HLP,DSA,root=this;"undefined"!=typeof module&&module.exports?(module.exports=AKE,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),CONST=require("./const.js"),HLP=require("./helpers.js"),DSA=require("./dsa.js")):(root.OTR.AKE=AKE,CryptoJS=root.CryptoJS,BigInt=root.BigInt,CONST=root.OTR.CONST,HLP=root.OTR.HLP,DSA=root.DSA);var N=BigInt.str2bigInt(CONST.N,16),N_MINUS_2=BigInt.sub(N,BigInt.str2bigInt("2",10));AKE.prototype={constructor:AKE,createKeys:function(g){var s=BigInt.powMod(g,this.our_dh.privateKey,N),secbytes=HLP.packMPI(s);this.ssid=HLP.mask(HLP.h2("\x00",secbytes),0,64);var tmp=HLP.h2("",secbytes);this.c=HLP.mask(tmp,0,128),this.c_prime=HLP.mask(tmp,128,128),this.m1=HLP.h2("",secbytes),this.m2=HLP.h2("",secbytes),this.m1_prime=HLP.h2("",secbytes),this.m2_prime=HLP.h2("",secbytes)},verifySignMac:function(mac,aesctr,m2,c,their_y,our_dh_pk,m1,ctr){var vmac=HLP.makeMac(aesctr,m2);if(!HLP.compare(mac,vmac))return["MACs do not match."];var x=HLP.decryptAes(aesctr.substring(4),c,ctr);x=HLP.splitype(["PUBKEY","INT","SIG"],x.toString(CryptoJS.enc.Latin1));var m=hMac(their_y,our_dh_pk,x[0],x[1],m1),pub=DSA.parsePublic(x[0]),r=HLP.bits2bigInt(x[2].substring(0,20)),s=HLP.bits2bigInt(x[2].substring(20));return DSA.verify(pub,m,r,s)?[null,HLP.readLen(x[1]),pub]:["Cannot verify signature of m."]},makeM:function(their_y,m1,c,m2){var pk=this.otr.priv.packPublic(),kid=HLP.packINT(this.our_keyid),m=hMac(this.our_dh.publicKey,their_y,pk,kid,m1);m=this.otr.priv.sign(m);var msg=pk+kid;msg+=BigInt.bigInt2bits(m[0],20),msg+=BigInt.bigInt2bits(m[1],20),msg=CryptoJS.enc.Latin1.parse(msg);var aesctr=HLP.packData(HLP.encryptAes(msg,c,HLP.packCtr(0))),mac=HLP.makeMac(aesctr,m2);return aesctr+mac},akeSuccess:function(version){return HLP.debug.call(this.otr,"success"),BigInt.equals(this.their_y,this.our_dh.publicKey)?this.otr.error("equal keys - we have a problem."):(this.otr.our_old_dh=this.our_dh,this.otr.their_priv_pk=this.their_priv_pk,this.their_keyid===this.otr.their_keyid&&BigInt.equals(this.their_y,this.otr.their_y)||this.their_keyid===this.otr.their_keyid-1&&BigInt.equals(this.their_y,this.otr.their_old_y)||(this.otr.their_y=this.their_y,this.otr.their_old_y=null,this.otr.their_keyid=this.their_keyid,this.otr.sessKeys[0]=[new this.otr.DHSession(this.otr.our_dh,this.otr.their_y),null],this.otr.sessKeys[1]=[new this.otr.DHSession(this.otr.our_old_dh,this.otr.their_y),null]),this.otr.ssid=this.ssid,this.otr.transmittedRS=this.transmittedRS,this.otr_version=version,this.otr.authstate=CONST.AUTHSTATE_NONE,this.otr.msgstate=CONST.MSGSTATE_ENCRYPTED,this.r=null,this.myhashed=null,this.dhcommit=null,this.encrypted=null,this.hashed=null,this.otr.trigger("status",[CONST.STATUS_AKE_SUCCESS]),void this.otr.sendStored())},handleAKE:function(msg){var send,vsm,type,version=msg.version;switch(msg.type){case"":if(HLP.debug.call(this.otr,"d-h key message"),msg=HLP.splitype(["DATA","DATA"],msg.msg),this.otr.authstate===CONST.AUTHSTATE_AWAITING_DHKEY){var ourHash=HLP.readMPI(this.myhashed),theirHash=HLP.readMPI(msg[1]);if(BigInt.greater(ourHash,theirHash)){type="",send=this.dhcommit;break}this.our_dh=this.otr.dh(),this.otr.authstate=CONST.AUTHSTATE_NONE,this.r=null,this.myhashed=null}else this.otr.authstate===CONST.AUTHSTATE_AWAITING_SIG&&(this.our_dh=this.otr.dh());this.otr.authstate=CONST.AUTHSTATE_AWAITING_REVEALSIG,this.encrypted=msg[0].substring(4),this.hashed=msg[1].substring(4),type="\n",send=HLP.packMPI(this.our_dh.publicKey);break;case"\n":if(HLP.debug.call(this.otr,"reveal signature message"),msg=HLP.splitype(["MPI"],msg.msg),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_DHKEY){if(this.otr.authstate!==CONST.AUTHSTATE_AWAITING_SIG)return;if(!BigInt.equals(this.their_y,HLP.readMPI(msg[0])))return}if(this.otr.authstate=CONST.AUTHSTATE_AWAITING_SIG,this.their_y=HLP.readMPI(msg[0]),!HLP.checkGroup(this.their_y,N_MINUS_2))return this.otr.error("Illegal g^y.");this.createKeys(this.their_y),type="",send=HLP.packMPI(this.r),send+=this.makeM(this.their_y,this.m1,this.c,this.m2),this.m1=null,this.m2=null,this.c=null;break;case"":if(HLP.debug.call(this.otr,"signature message"),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_REVEALSIG)return;msg=HLP.splitype(["DATA","DATA","MAC"],msg.msg),this.r=HLP.readMPI(msg[0]);var key=CryptoJS.enc.Hex.parse(BigInt.bigInt2str(this.r,16));key=CryptoJS.enc.Latin1.stringify(key);var gxmpi=HLP.decryptAes(this.encrypted,key,HLP.packCtr(0));gxmpi=gxmpi.toString(CryptoJS.enc.Latin1),this.their_y=HLP.readMPI(gxmpi);var hash=CryptoJS.SHA256(CryptoJS.enc.Latin1.parse(gxmpi));return HLP.compare(this.hashed,hash.toString(CryptoJS.enc.Latin1))?HLP.checkGroup(this.their_y,N_MINUS_2)?(this.createKeys(this.their_y),vsm=this.verifySignMac(msg[2],msg[1],this.m2,this.c,this.their_y,this.our_dh.publicKey,this.m1,HLP.packCtr(0)),vsm[0]?this.otr.error(vsm[0]):(this.their_keyid=vsm[1],this.their_priv_pk=vsm[2],send=this.makeM(this.their_y,this.m1_prime,this.c_prime,this.m2_prime),this.m1=null,this.m2=null,this.m1_prime=null,this.m2_prime=null,this.c=null,this.c_prime=null,this.sendMsg(version,"",send),void this.akeSuccess(version))):this.otr.error("Illegal g^x."):this.otr.error("Hashed g^x does not match.");case"":if(HLP.debug.call(this.otr,"data message"),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_SIG)return;return msg=HLP.splitype(["DATA","MAC"],msg.msg),vsm=this.verifySignMac(msg[1],msg[0],this.m2_prime,this.c_prime,this.their_y,this.our_dh.publicKey,this.m1_prime,HLP.packCtr(0)),vsm[0]?this.otr.error(vsm[0]):(this.their_keyid=vsm[1],this.their_priv_pk=vsm[2],this.m1_prime=null,this.m2_prime=null,this.c_prime=null,this.transmittedRS=!0,void this.akeSuccess(version));default:return}this.sendMsg(version,type,send)},sendMsg:function(version,type,msg){var send=version+type,v3=version===CONST.OTR_VERSION_3;return v3&&(HLP.debug.call(this.otr,"instance tags"),send+=this.otr.our_instance_tag,send+=this.otr.their_instance_tag),send+=msg,send=HLP.wrapMsg(send,this.otr.fragment_size,v3,this.otr.our_instance_tag,this.otr.their_instance_tag),send[0]?this.otr.error(send[0]):void this.otr.io(send[1])},initiateAKE:function(version){HLP.debug.call(this.otr,"d-h commit message"),this.otr.trigger("status",[CONST.STATUS_AKE_INIT]),this.otr.authstate=CONST.AUTHSTATE_AWAITING_DHKEY;var gxmpi=HLP.packMPI(this.our_dh.publicKey);gxmpi=CryptoJS.enc.Latin1.parse(gxmpi),this.r=BigInt.randBigInt(128);var key=CryptoJS.enc.Hex.parse(BigInt.bigInt2str(this.r,16));key=CryptoJS.enc.Latin1.stringify(key),this.myhashed=CryptoJS.SHA256(gxmpi),this.myhashed=HLP.packData(this.myhashed.toString(CryptoJS.enc.Latin1)),this.dhcommit=HLP.packData(HLP.encryptAes(gxmpi,key,HLP.packCtr(0))),this.dhcommit+=this.myhashed,this.sendMsg(version,"",this.dhcommit)}}}.call(this),function(){"use strict";function SM(reqs){return this instanceof SM?(this.version=1,this.our_fp=reqs.our_fp,this.their_fp=reqs.their_fp,this.ssid=reqs.ssid,this.debug=!!reqs.debug,void this.init()):new SM(reqs)}var CryptoJS,BigInt,EventEmitter,CONST,HLP,root=this;"undefined"!=typeof module&&module.exports?(module.exports=SM,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),EventEmitter=require("../vendor/eventemitter.js"),CONST=require("./const.js"),HLP=require("./helpers.js")):(root.OTR.SM=SM,CryptoJS=root.CryptoJS,BigInt=root.BigInt,EventEmitter=root.EventEmitter,CONST=root.OTR.CONST,HLP=root.OTR.HLP);var G=BigInt.str2bigInt(CONST.G,10),N=BigInt.str2bigInt(CONST.N,16),N_MINUS_2=BigInt.sub(N,BigInt.str2bigInt("2",10)),Q=BigInt.sub(N,BigInt.str2bigInt("1",10));BigInt.divInt_(Q,2),HLP.extend(SM,EventEmitter),SM.prototype.init=function(){this.smpstate=CONST.SMPSTATE_EXPECT1,this.secret=null},SM.prototype.makeSecret=function(our,secret){var sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(HLP.packBytes(this.version,1))),sha256.update(CryptoJS.enc.Hex.parse(our?this.our_fp:this.their_fp)),sha256.update(CryptoJS.enc.Hex.parse(our?this.their_fp:this.our_fp)),sha256.update(CryptoJS.enc.Latin1.parse(this.ssid)),sha256.update(CryptoJS.enc.Latin1.parse(secret));var hash=sha256.finalize();this.secret=HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1))},SM.prototype.makeG2s=function(){this.a2=HLP.randomExponent(),this.a3=HLP.randomExponent(),this.g2a=BigInt.powMod(G,this.a2,N),this.g3a=BigInt.powMod(G,this.a3,N),HLP.checkGroup(this.g2a,N_MINUS_2)&&HLP.checkGroup(this.g3a,N_MINUS_2)||this.makeG2s()},SM.prototype.computeGs=function(g2a,g3a){this.g2=BigInt.powMod(g2a,this.a2,N),this.g3=BigInt.powMod(g3a,this.a3,N)},SM.prototype.computePQ=function(r){this.p=BigInt.powMod(this.g3,r,N),this.q=HLP.multPowMod(G,r,this.g2,this.secret,N)},SM.prototype.computeR=function(){this.r=BigInt.powMod(this.QoQ,this.a3,N)},SM.prototype.computeRab=function(r){return BigInt.powMod(r,this.a3,N)},SM.prototype.computeC=function(v,r){return HLP.smpHash(v,BigInt.powMod(G,r,N))},SM.prototype.computeD=function(r,a,c){return BigInt.subMod(r,BigInt.multMod(a,c,Q),Q)},SM.prototype.handleSM=function(msg){var send,r2,r3,r7,t1,t2,t3,t4,rab,tmp2,cR,d7,ms,trust,expectStates={2:CONST.SMPSTATE_EXPECT1,3:CONST.SMPSTATE_EXPECT2,4:CONST.SMPSTATE_EXPECT3,5:CONST.SMPSTATE_EXPECT4,7:CONST.SMPSTATE_EXPECT1};if(6===msg.type)return this.init(),void this.trigger("abort");if(this.smpstate!==expectStates[msg.type])return this.abort();switch(this.smpstate){case CONST.SMPSTATE_EXPECT1:HLP.debug.call(this,"smp tlv 2");var ind,question;return 7===msg.type&&(ind=msg.msg.indexOf("\x00"),question=msg.msg.substring(0,ind),msg.msg=msg.msg.substring(ind+1)),ms=HLP.readLen(msg.msg.substr(0,4)),6!==ms?this.abort():(msg=HLP.unpackMPIs(6,msg.msg.substring(4)),HLP.checkGroup(msg[0],N_MINUS_2)&&HLP.checkGroup(msg[3],N_MINUS_2)&&HLP.ZKP(1,msg[1],HLP.multPowMod(G,msg[2],msg[0],msg[1],N))&&HLP.ZKP(2,msg[4],HLP.multPowMod(G,msg[5],msg[3],msg[4],N))?(this.g3ao=msg[3],this.makeG2s(),r2=HLP.randomExponent(),r3=HLP.randomExponent(),this.c2=this.computeC(3,r2),this.c3=this.computeC(4,r3),this.d2=this.computeD(r2,this.a2,this.c2),this.d3=this.computeD(r3,this.a3,this.c3),this.computeGs(msg[0],msg[3]),this.smpstate=CONST.SMPSTATE_EXPECT0,question=CryptoJS.enc.Latin1.parse(question).toString(CryptoJS.enc.Utf8),void this.trigger("question",[question])):this.abort());
-case CONST.SMPSTATE_EXPECT2:if(HLP.debug.call(this,"smp tlv 3"),ms=HLP.readLen(msg.msg.substr(0,4)),11!==ms)return this.abort();if(msg=HLP.unpackMPIs(11,msg.msg.substring(4)),!(HLP.checkGroup(msg[0],N_MINUS_2)&&HLP.checkGroup(msg[3],N_MINUS_2)&&HLP.checkGroup(msg[6],N_MINUS_2)&&HLP.checkGroup(msg[7],N_MINUS_2)))return this.abort();if(!HLP.ZKP(3,msg[1],HLP.multPowMod(G,msg[2],msg[0],msg[1],N)))return this.abort();if(!HLP.ZKP(4,msg[4],HLP.multPowMod(G,msg[5],msg[3],msg[4],N)))return this.abort();if(this.g3ao=msg[3],this.computeGs(msg[0],msg[3]),t1=HLP.multPowMod(this.g3,msg[9],msg[6],msg[8],N),t2=HLP.multPowMod(G,msg[9],this.g2,msg[10],N),t2=BigInt.multMod(t2,BigInt.powMod(msg[7],msg[8],N),N),!HLP.ZKP(5,msg[8],t1,t2))return this.abort();var r4=HLP.randomExponent();this.computePQ(r4);var r5=HLP.randomExponent(),r6=HLP.randomExponent(),tmp=HLP.multPowMod(G,r5,this.g2,r6,N),cP=HLP.smpHash(6,BigInt.powMod(this.g3,r5,N),tmp),d5=this.computeD(r5,r4,cP),d6=this.computeD(r6,this.secret,cP);this.QoQ=BigInt.divMod(this.q,msg[7],N),this.PoP=BigInt.divMod(this.p,msg[6],N),this.computeR(),r7=HLP.randomExponent(),tmp2=BigInt.powMod(this.QoQ,r7,N),cR=HLP.smpHash(7,BigInt.powMod(G,r7,N),tmp2),d7=this.computeD(r7,this.a3,cR),this.smpstate=CONST.SMPSTATE_EXPECT4,send=HLP.packINT(8)+HLP.packMPIs([this.p,this.q,cP,d5,d6,this.r,cR,d7]),send=HLP.packTLV(4,send);break;case CONST.SMPSTATE_EXPECT3:if(HLP.debug.call(this,"smp tlv 4"),ms=HLP.readLen(msg.msg.substr(0,4)),8!==ms)return this.abort();if(msg=HLP.unpackMPIs(8,msg.msg.substring(4)),!HLP.checkGroup(msg[0],N_MINUS_2)||!HLP.checkGroup(msg[1],N_MINUS_2)||!HLP.checkGroup(msg[5],N_MINUS_2))return this.abort();if(t1=HLP.multPowMod(this.g3,msg[3],msg[0],msg[2],N),t2=HLP.multPowMod(G,msg[3],this.g2,msg[4],N),t2=BigInt.multMod(t2,BigInt.powMod(msg[1],msg[2],N),N),!HLP.ZKP(6,msg[2],t1,t2))return this.abort();if(t3=HLP.multPowMod(G,msg[7],this.g3ao,msg[6],N),this.QoQ=BigInt.divMod(msg[1],this.q,N),t4=HLP.multPowMod(this.QoQ,msg[7],msg[5],msg[6],N),!HLP.ZKP(7,msg[6],t3,t4))return this.abort();this.computeR(),r7=HLP.randomExponent(),tmp2=BigInt.powMod(this.QoQ,r7,N),cR=HLP.smpHash(8,BigInt.powMod(G,r7,N),tmp2),d7=this.computeD(r7,this.a3,cR),send=HLP.packINT(3)+HLP.packMPIs([this.r,cR,d7]),send=HLP.packTLV(5,send),rab=this.computeRab(msg[5]),trust=!!BigInt.equals(rab,BigInt.divMod(msg[0],this.p,N)),this.trigger("trust",[trust,"answered"]),this.init();break;case CONST.SMPSTATE_EXPECT4:return HLP.debug.call(this,"smp tlv 5"),ms=HLP.readLen(msg.msg.substr(0,4)),3!==ms?this.abort():(msg=HLP.unpackMPIs(3,msg.msg.substring(4)),HLP.checkGroup(msg[0],N_MINUS_2)?(t3=HLP.multPowMod(G,msg[2],this.g3ao,msg[1],N),t4=HLP.multPowMod(this.QoQ,msg[2],msg[0],msg[1],N),HLP.ZKP(8,msg[1],t3,t4)?(rab=this.computeRab(msg[0]),trust=!!BigInt.equals(rab,this.PoP),this.trigger("trust",[trust,"asked"]),void this.init()):this.abort()):this.abort())}this.sendMsg(send)},SM.prototype.sendMsg=function(send){this.trigger("send",[this.ssid,"\x00"+send])},SM.prototype.rcvSecret=function(secret,question){HLP.debug.call(this,"receive secret");var fn,our=!1;this.smpstate===CONST.SMPSTATE_EXPECT0?fn=this.answer:(fn=this.initiate,our=!0),this.makeSecret(our,secret),fn.call(this,question)},SM.prototype.answer=function(){HLP.debug.call(this,"smp answer");var r4=HLP.randomExponent();this.computePQ(r4);var r5=HLP.randomExponent(),r6=HLP.randomExponent(),tmp=HLP.multPowMod(G,r5,this.g2,r6,N),cP=HLP.smpHash(5,BigInt.powMod(this.g3,r5,N),tmp),d5=this.computeD(r5,r4,cP),d6=this.computeD(r6,this.secret,cP);this.smpstate=CONST.SMPSTATE_EXPECT3;var send=HLP.packINT(11)+HLP.packMPIs([this.g2a,this.c2,this.d2,this.g3a,this.c3,this.d3,this.p,this.q,cP,d5,d6]);this.sendMsg(HLP.packTLV(3,send))},SM.prototype.initiate=function(question){HLP.debug.call(this,"smp initiate"),this.smpstate!==CONST.SMPSTATE_EXPECT1&&this.abort(),this.makeG2s();var r2=HLP.randomExponent(),r3=HLP.randomExponent();this.c2=this.computeC(1,r2),this.c3=this.computeC(2,r3),this.d2=this.computeD(r2,this.a2,this.c2),this.d3=this.computeD(r3,this.a3,this.c3),this.smpstate=CONST.SMPSTATE_EXPECT2;var send="",type=2;question&&(send+=question,send+="\x00",type=7),send+=HLP.packINT(6)+HLP.packMPIs([this.g2a,this.c2,this.d2,this.g3a,this.c3,this.d3]),this.sendMsg(HLP.packTLV(type,send))},SM.prototype.abort=function(){this.init(),this.sendMsg(HLP.packTLV(6,"")),this.trigger("abort")}}.call(this),function(){"use strict";function OTRCB(cb){this.cb=cb}function OTR(options){if(!(this instanceof OTR))return new OTR(options);if(options=options||{},options.priv&&!(options.priv instanceof DSA))throw new Error("Requires long-lived DSA key.");if(this.priv=options.priv?options.priv:new DSA,this.fragment_size=options.fragment_size||0,this.fragment_size<0)throw new Error("Fragment size must be a positive integer.");if(this.send_interval=options.send_interval||0,this.send_interval<0)throw new Error("Send interval must be a positive integer.");this.outgoing=[],this.our_instance_tag=options.instance_tag||OTR.makeInstanceTag(),this.debug=!!options.debug,this.smw=options.smw,this.init();var self=this;["sendMsg","receiveMsg"].forEach(function(meth){self[meth]=self[meth].bind(self)}),EventEmitter.call(this)}var CryptoJS,BigInt,EventEmitter,Worker,SMWPath,CONST,HLP,Parse,AKE,SM,DSA,root=this;"undefined"!=typeof module&&module.exports?(module.exports=OTR,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),EventEmitter=require("../vendor/eventemitter.js"),SMWPath=require("path").join(__dirname,"/sm-webworker.js"),CONST=require("./const.js"),HLP=require("./helpers.js"),Parse=require("./parse.js"),AKE=require("./ake.js"),SM=require("./sm.js"),DSA=require("./dsa.js"),OTR.CONST=CONST):(Object.keys(root.OTR).forEach(function(k){OTR[k]=root.OTR[k]}),root.OTR=OTR,CryptoJS=root.CryptoJS,BigInt=root.BigInt,EventEmitter=root.EventEmitter,Worker=root.Worker,SMWPath="sm-webworker.js",CONST=OTR.CONST,HLP=OTR.HLP,Parse=OTR.Parse,AKE=OTR.AKE,SM=OTR.SM,DSA=root.DSA);var G=BigInt.str2bigInt(CONST.G,10),N=BigInt.str2bigInt(CONST.N,16),MAX_INT=Math.pow(2,53)-1,MAX_UINT=Math.pow(2,31)-1;HLP.extend(OTR,EventEmitter),OTR.prototype.init=function(){this.msgstate=CONST.MSGSTATE_PLAINTEXT,this.authstate=CONST.AUTHSTATE_NONE,this.ALLOW_V2=!0,this.ALLOW_V3=!0,this.REQUIRE_ENCRYPTION=!1,this.SEND_WHITESPACE_TAG=!1,this.WHITESPACE_START_AKE=!1,this.ERROR_START_AKE=!1,Parse.initFragment(this),this.their_y=null,this.their_old_y=null,this.their_keyid=0,this.their_priv_pk=null,this.their_instance_tag="\x00\x00\x00\x00",this.our_dh=this.dh(),this.our_old_dh=this.dh(),this.our_keyid=2,this.sessKeys=[new Array(2),new Array(2)],this.storedMgs=[],this.oldMacKeys=[],this.sm=null,this._akeInit(),this.receivedPlaintext=!1},OTR.prototype._akeInit=function(){this.ake=new AKE(this),this.transmittedRS=!1,this.ssid=null},OTR.prototype._SMW=function(otr,reqs){this.otr=otr;var opts={path:SMWPath,seed:BigInt.getSeed};"object"==typeof otr.smw&&Object.keys(otr.smw).forEach(function(k){opts[k]=otr.smw[k]}),"undefined"!=typeof module&&module.exports&&(Worker=require("webworker-threads").Worker),this.worker=new Worker(opts.path);var self=this;this.worker.onmessage=function(e){var d=e.data;d&&self.trigger(d.method,d.args)},this.worker.postMessage({type:"seed",seed:opts.seed(),imports:opts.imports}),this.worker.postMessage({type:"init",reqs:reqs})},HLP.extend(OTR.prototype._SMW,EventEmitter),["handleSM","rcvSecret","abort"].forEach(function(m){OTR.prototype._SMW.prototype[m]=function(){this.worker.postMessage({type:"method",method:m,args:Array.prototype.slice.call(arguments,0)})}}),OTR.prototype._smInit=function(){var reqs={ssid:this.ssid,our_fp:this.priv.fingerprint(),their_fp:this.their_priv_pk.fingerprint(),debug:this.debug};this.smw?(this.sm&&this.sm.worker.terminate(),this.sm=new this._SMW(this,reqs)):this.sm=new SM(reqs);var self=this;["trust","abort","question"].forEach(function(e){self.sm.on(e,function(){self.trigger("smp",[e].concat(Array.prototype.slice.call(arguments)))})}),this.sm.on("send",function(ssid,send){self.ssid===ssid&&(send=self.prepareMsg(send),self.io(send))})},OTR.prototype.io=function(msg,meta){msg=[].concat(msg).map(function(m){return{msg:m,meta:meta}}),this.outgoing=this.outgoing.concat(msg);var self=this;!function send(first){if(!first){if(!self.outgoing.length)return;var elem=self.outgoing.shift(),cb=null;elem.meta instanceof OTRCB&&(cb=elem.meta.cb,elem.meta=null),self.trigger("io",[elem.msg,elem.meta]),cb&&cb()}setTimeout(send,first?0:self.send_interval)}(!0)},OTR.prototype.dh=function(){var keys={privateKey:BigInt.randBigInt(320)};return keys.publicKey=BigInt.powMod(G,keys.privateKey,N),keys},OTR.prototype.DHSession=function DHSession(our_dh,their_y){if(!(this instanceof DHSession))return new DHSession(our_dh,their_y);var s=BigInt.powMod(their_y,our_dh.privateKey,N),secbytes=HLP.packMPI(s);this.id=HLP.mask(HLP.h2("\x00",secbytes),0,64);var sq=BigInt.greater(our_dh.publicKey,their_y),sendbyte=sq?"":"",rcvbyte=sq?"":"";this.sendenc=HLP.mask(HLP.h1(sendbyte,secbytes),0,128),this.sendmac=CryptoJS.SHA1(CryptoJS.enc.Latin1.parse(this.sendenc)),this.sendmac=this.sendmac.toString(CryptoJS.enc.Latin1),this.rcvenc=HLP.mask(HLP.h1(rcvbyte,secbytes),0,128),this.rcvmac=CryptoJS.SHA1(CryptoJS.enc.Latin1.parse(this.rcvenc)),this.rcvmac=this.rcvmac.toString(CryptoJS.enc.Latin1),this.rcvmacused=!1,this.extra_symkey=HLP.h2("ÿ",secbytes),this.send_counter=0,this.rcv_counter=0},OTR.prototype.rotateOurKeys=function(){var self=this;this.sessKeys[1].forEach(function(sk){sk&&sk.rcvmacused&&self.oldMacKeys.push(sk.rcvmac)}),this.our_old_dh=this.our_dh,this.our_dh=this.dh(),this.our_keyid+=1,this.sessKeys[1][0]=this.sessKeys[0][0],this.sessKeys[1][1]=this.sessKeys[0][1],this.sessKeys[0]=[this.their_y?new this.DHSession(this.our_dh,this.their_y):null,this.their_old_y?new this.DHSession(this.our_dh,this.their_old_y):null]},OTR.prototype.rotateTheirKeys=function(their_y){this.their_keyid+=1;var self=this;this.sessKeys.forEach(function(sk){sk[1]&&sk[1].rcvmacused&&self.oldMacKeys.push(sk[1].rcvmac)}),this.their_old_y=this.their_y,this.sessKeys[0][1]=this.sessKeys[0][0],this.sessKeys[1][1]=this.sessKeys[1][0],this.their_y=their_y,this.sessKeys[0][0]=new this.DHSession(this.our_dh,this.their_y),this.sessKeys[1][0]=new this.DHSession(this.our_old_dh,this.their_y)},OTR.prototype.prepareMsg=function(msg,esk){if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED||0===this.their_keyid)return this.notify("Not ready to encrypt.");var sessKeys=this.sessKeys[1][0];if(sessKeys.send_counter>=MAX_INT)return this.notify("Should have rekeyed by now.");sessKeys.send_counter+=1;var ctr=HLP.packCtr(sessKeys.send_counter),send=this.ake.otr_version+"",v3=this.ake.otr_version===CONST.OTR_VERSION_3;if(v3&&(send+=this.our_instance_tag,send+=this.their_instance_tag),send+="\x00",send+=HLP.packINT(this.our_keyid-1),send+=HLP.packINT(this.their_keyid),send+=HLP.packMPI(this.our_dh.publicKey),send+=ctr.substring(0,8),Math.ceil(msg.length/8)>=MAX_UINT)return this.notify("Message is too long.");var aes=HLP.encryptAes(CryptoJS.enc.Latin1.parse(msg),sessKeys.sendenc,ctr);return send+=HLP.packData(aes),send+=HLP.make1Mac(send,sessKeys.sendmac),send+=HLP.packData(this.oldMacKeys.splice(0).join("")),send=HLP.wrapMsg(send,this.fragment_size,v3,this.our_instance_tag,this.their_instance_tag),send[0]?this.notify(send[0]):(esk&&this.trigger("file",["send",sessKeys.extra_symkey,esk]),send[1])},OTR.prototype.handleDataMsg=function(msg){var vt=msg.version+msg.type;this.ake.otr_version===CONST.OTR_VERSION_3&&(vt+=msg.instance_tags);var types=["BYTE","INT","INT","MPI","CTR","DATA","MAC","DATA"];msg=HLP.splitype(types,msg.msg);var ign=""===msg[0];if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED||8!==msg.length)return void(ign||this.error("Received an unreadable encrypted message."));var our_keyid=this.our_keyid-HLP.readLen(msg[2]),their_keyid=this.their_keyid-HLP.readLen(msg[1]);if(0>our_keyid||our_keyid>1)return void(ign||this.error("Not of our latest keys."));if(0>their_keyid||their_keyid>1)return void(ign||this.error("Not of your latest keys."));var their_y=their_keyid?this.their_old_y:this.their_y;if(1===their_keyid&&!their_y)return void(ign||this.error("Do not have that key."));var sessKeys=this.sessKeys[our_keyid][their_keyid],ctr=HLP.unpackCtr(msg[4]);if(ctr<=sessKeys.rcv_counter)return void(ign||this.error("Counter in message is not larger."));sessKeys.rcv_counter=ctr,vt+=msg.slice(0,6).join("");var vmac=HLP.make1Mac(vt,sessKeys.rcvmac);if(!HLP.compare(msg[6],vmac))return void(ign||this.error("MACs do not match."));sessKeys.rcvmacused=!0;var out=HLP.decryptAes(msg[5].substring(4),sessKeys.rcvenc,HLP.padCtr(msg[4]));out=out.toString(CryptoJS.enc.Latin1),our_keyid||this.rotateOurKeys(),their_keyid||this.rotateTheirKeys(HLP.readMPI(msg[3]));var ind=out.indexOf("\x00");return~ind&&(this.handleTLVs(out.substring(ind+1),sessKeys),out=out.substring(0,ind)),out=CryptoJS.enc.Latin1.parse(out),out.toString(CryptoJS.enc.Utf8)},OTR.prototype.handleTLVs=function(tlvs,sessKeys){for(var type,len,msg;tlvs.length&&(type=HLP.unpackSHORT(tlvs.substr(0,2)),len=HLP.unpackSHORT(tlvs.substr(2,2)),msg=tlvs.substr(4,len),!(msg.length<len));){switch(type){case 1:this.msgstate=CONST.MSGSTATE_FINISHED,this.trigger("status",[CONST.STATUS_END_OTR]);break;case 2:case 3:case 4:case 5:case 6:case 7:if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED)return void(this.sm&&this.sm.abort());this.sm||this._smInit(),this.sm.handleSM({msg:msg,type:type});break;case 8:msg=msg.substring(4),msg=CryptoJS.enc.Latin1.parse(msg),msg=msg.toString(CryptoJS.enc.Utf8),this.trigger("file",["receive",sessKeys.extra_symkey,msg])}tlvs=tlvs.substring(4+len)}},OTR.prototype.smpSecret=function(secret,question){return this.msgstate!==CONST.MSGSTATE_ENCRYPTED?this.notify("Must be encrypted for SMP."):"string"!=typeof secret||secret.length<1?this.notify("Secret is required."):(this.sm||this._smInit(),secret=CryptoJS.enc.Utf8.parse(secret).toString(CryptoJS.enc.Latin1),question=CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1),void this.sm.rcvSecret(secret,question))},OTR.prototype.sendQueryMsg=function(){var versions={},msg=CONST.OTR_TAG;this.ALLOW_V2&&(versions[2]=!0),this.ALLOW_V3&&(versions[3]=!0);var vs=Object.keys(versions);vs.length&&(msg+="v",vs.forEach(function(v){"1"!==v&&(msg+=v)}),msg+="?"),this.io(msg),this.trigger("status",[CONST.STATUS_SEND_QUERY])},OTR.prototype.sendMsg=function(msg,meta){switch((this.REQUIRE_ENCRYPTION||this.msgstate!==CONST.MSGSTATE_PLAINTEXT)&&(msg=CryptoJS.enc.Utf8.parse(msg),msg=msg.toString(CryptoJS.enc.Latin1)),this.msgstate){case CONST.MSGSTATE_PLAINTEXT:if(this.REQUIRE_ENCRYPTION)return this.storedMgs.push({msg:msg,meta:meta}),void this.sendQueryMsg();this.SEND_WHITESPACE_TAG&&!this.receivedPlaintext&&(msg+=CONST.WHITESPACE_TAG,this.ALLOW_V3&&(msg+=CONST.WHITESPACE_TAG_V3),this.ALLOW_V2&&(msg+=CONST.WHITESPACE_TAG_V2));break;case CONST.MSGSTATE_FINISHED:return this.storedMgs.push({msg:msg,meta:meta}),void this.notify("Message cannot be sent at this time.","warn");case CONST.MSGSTATE_ENCRYPTED:msg=this.prepareMsg(msg);break;default:throw new Error("Unknown message state.")}msg&&this.io(msg,meta)},OTR.prototype.receiveMsg=function(msg){if(msg=Parse.parseMsg(this,msg)){switch(msg.cls){case"error":return void this.notify(msg.msg);case"ake":return msg.version===CONST.OTR_VERSION_3&&this.checkInstanceTags(msg.instance_tags)?void this.notify("Received a message intended for a different session.","warn"):void this.ake.handleAKE(msg);case"data":if(msg.version===CONST.OTR_VERSION_3&&this.checkInstanceTags(msg.instance_tags))return void this.notify("Received a message intended for a different session.","warn");msg.msg=this.handleDataMsg(msg),msg.encrypted=!0;break;case"query":this.msgstate===CONST.MSGSTATE_ENCRYPTED&&this._akeInit(),this.doAKE(msg);break;default:(this.REQUIRE_ENCRYPTION||this.msgstate!==CONST.MSGSTATE_PLAINTEXT)&&this.notify("Received an unencrypted message.","warn"),this.receivedPlaintext=!0,this.WHITESPACE_START_AKE&&msg.ver.length>0&&this.doAKE(msg)}msg.msg&&this.trigger("ui",[msg.msg,!!msg.encrypted])}},OTR.prototype.checkInstanceTags=function(it){var their_it=HLP.readLen(it.substr(0,4)),our_it=HLP.readLen(it.substr(4,4));if(our_it&&our_it!==HLP.readLen(this.our_instance_tag))return!0;if(HLP.readLen(this.their_instance_tag)){if(HLP.readLen(this.their_instance_tag)!==their_it)return!0}else{if(100>their_it)return!0;this.their_instance_tag=HLP.packINT(their_it)}},OTR.prototype.doAKE=function(msg){this.ALLOW_V3&&~msg.ver.indexOf(CONST.OTR_VERSION_3)?this.ake.initiateAKE(CONST.OTR_VERSION_3):this.ALLOW_V2&&~msg.ver.indexOf(CONST.OTR_VERSION_2)?this.ake.initiateAKE(CONST.OTR_VERSION_2):this.notify("OTR conversation requested, but no compatible protocol version found.","warn")},OTR.prototype.error=function(err){this.debug||(err="An OTR error has occurred."),this.io("?OTR Error:"+err),this.notify(err)},OTR.prototype.notify=function(err,severity){this.trigger("error",[err,severity||"error"])},OTR.prototype.sendStored=function(){var self=this;this.storedMgs.splice(0).forEach(function(elem){var msg=self.prepareMsg(elem.msg);self.io(msg,elem.meta)})},OTR.prototype.sendFile=function(filename){if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED)return this.notify("Not ready to encrypt.");if(this.ake.otr_version!==CONST.OTR_VERSION_3)return this.notify("Protocol v3 required.");if(!filename)return this.notify("Please specify a filename.");var l1name=CryptoJS.enc.Utf8.parse(filename);if(l1name=l1name.toString(CryptoJS.enc.Latin1),l1name.length>=65532)return this.notify("Filename is too long.");var msg="\x00";msg+="\x00\b",msg+=HLP.packSHORT(4+l1name.length),msg+="\x00\x00\x00",msg+=l1name,msg=this.prepareMsg(msg,filename),this.io(msg)},OTR.prototype.endOtr=function(cb){this.msgstate===CONST.MSGSTATE_ENCRYPTED&&("function"==typeof cb&&(cb=new OTRCB(cb)),this.sendMsg("\x00\x00\x00\x00",cb),this.sm&&(this.smw&&this.sm.worker.terminate(),this.sm=null)),this.msgstate=CONST.MSGSTATE_PLAINTEXT,this.receivedPlaintext=!1,this.trigger("status",[CONST.STATUS_END_OTR])},OTR.makeInstanceTag=function(){var num=BigInt.randBigInt(32);return BigInt.greater(BigInt.str2bigInt("100",16),num)?OTR.makeInstanceTag():HLP.packINT(parseInt(BigInt.bigInt2str(num,10),10))}}.call(this),{OTR:this.OTR,DSA:this.DSA}});
+function(){"use strict";function EventEmitter(){}function indexOfListener(listeners,listener){for(var i=listeners.length;i--;)if(listeners[i].listener===listener)return i;return-1}function alias(name){return function(){return this[name].apply(this,arguments)}}var proto=EventEmitter.prototype;proto.getListeners=function(evt){var response,key,events=this._getEvents();if("object"==typeof evt){response={};for(key in events)events.hasOwnProperty(key)&&evt.test(key)&&(response[key]=events[key])}else response=events[evt]||(events[evt]=[]);return response},proto.flattenListeners=function(listeners){var i,flatListeners=[];for(i=0;i<listeners.length;i+=1)flatListeners.push(listeners[i].listener);return flatListeners},proto.getListenersAsObject=function(evt){var response,listeners=this.getListeners(evt);return listeners instanceof Array&&(response={},response[evt]=listeners),response||listeners},proto.addListener=function(evt,listener){var key,listeners=this.getListenersAsObject(evt),listenerIsWrapped="object"==typeof listener;for(key in listeners)listeners.hasOwnProperty(key)&&-1===indexOfListener(listeners[key],listener)&&listeners[key].push(listenerIsWrapped?listener:{listener:listener,once:!1});return this},proto.on=alias("addListener"),proto.addOnceListener=function(evt,listener){return this.addListener(evt,{listener:listener,once:!0})},proto.once=alias("addOnceListener"),proto.defineEvent=function(evt){return this.getListeners(evt),this},proto.defineEvents=function(evts){for(var i=0;i<evts.length;i+=1)this.defineEvent(evts[i]);return this},proto.removeListener=function(evt,listener){var index,key,listeners=this.getListenersAsObject(evt);for(key in listeners)listeners.hasOwnProperty(key)&&(index=indexOfListener(listeners[key],listener),-1!==index&&listeners[key].splice(index,1));return this},proto.off=alias("removeListener"),proto.addListeners=function(evt,listeners){return this.manipulateListeners(!1,evt,listeners)},proto.removeListeners=function(evt,listeners){return this.manipulateListeners(!0,evt,listeners)},proto.manipulateListeners=function(remove,evt,listeners){var i,value,single=remove?this.removeListener:this.addListener,multiple=remove?this.removeListeners:this.addListeners;if("object"!=typeof evt||evt instanceof RegExp)for(i=listeners.length;i--;)single.call(this,evt,listeners[i]);else for(i in evt)evt.hasOwnProperty(i)&&(value=evt[i])&&("function"==typeof value?single.call(this,i,value):multiple.call(this,i,value));return this},proto.removeEvent=function(evt){var key,type=typeof evt,events=this._getEvents();if("string"===type)delete events[evt];else if("object"===type)for(key in events)events.hasOwnProperty(key)&&evt.test(key)&&delete events[key];else delete this._events;return this},proto.emitEvent=function(evt,args){var listener,i,key,response,listeners=this.getListenersAsObject(evt);for(key in listeners)if(listeners.hasOwnProperty(key))for(i=listeners[key].length;i--;)listener=listeners[key][i],listener.once===!0&&this.removeListener(evt,listener.listener),response=listener.listener.apply(this,args||[]),response===this._getOnceReturnValue()&&this.removeListener(evt,listener.listener);return this},proto.trigger=alias("emitEvent"),proto.emit=function(evt){var args=Array.prototype.slice.call(arguments,1);return this.emitEvent(evt,args)},proto.setOnceReturnValue=function(value){return this._onceReturnValue=value,this},proto._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},proto._getEvents=function(){return this._events||(this._events={})},"function"==typeof define&&define.amd?define(function(){return EventEmitter}):"object"==typeof module&&module.exports?module.exports=EventEmitter:this.EventEmitter=EventEmitter}.call(this),function(root,factory){"function"==typeof define&&define.amd?define(["bigint","crypto","eventemitter"],function(BigInt,CryptoJS,EventEmitter){var root={BigInt:BigInt,CryptoJS:CryptoJS,EventEmitter:EventEmitter,OTR:{},DSA:{}};return factory.call(root)}):(root.OTR={},root.DSA={},factory.call(root))}(this,function(){return function(){"use strict";var root=this,CONST={N:"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF",G:"2",MSGSTATE_PLAINTEXT:0,MSGSTATE_ENCRYPTED:1,MSGSTATE_FINISHED:2,AUTHSTATE_NONE:0,AUTHSTATE_AWAITING_DHKEY:1,AUTHSTATE_AWAITING_REVEALSIG:2,AUTHSTATE_AWAITING_SIG:3,WHITESPACE_TAG:" ",WHITESPACE_TAG_V2:" ",WHITESPACE_TAG_V3:" ",OTR_TAG:"?OTR",OTR_VERSION_1:"\x00",OTR_VERSION_2:"\x00",OTR_VERSION_3:"\x00",SMPSTATE_EXPECT0:0,SMPSTATE_EXPECT1:1,SMPSTATE_EXPECT2:2,SMPSTATE_EXPECT3:3,SMPSTATE_EXPECT4:4,STATUS_SEND_QUERY:0,STATUS_AKE_INIT:1,STATUS_AKE_SUCCESS:2,STATUS_END_OTR:3};"undefined"!=typeof module&&module.exports?module.exports=CONST:root.OTR.CONST=CONST}.call(this),function(){"use strict";function intCompare(x,y){var z=~(x^y);return z&=z>>16,z&=z>>8,z&=z>>4,z&=z>>2,z&=z>>1,1&z}var CryptoJS,BigInt,root=this,HLP={};"undefined"!=typeof module&&module.exports?(module.exports=HLP={},CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js")):(root.OTR&&(root.OTR.HLP=HLP),root.DSA&&(root.DSA.HLP=HLP),CryptoJS=root.CryptoJS,BigInt=root.BigInt);var DTS={BYTE:1,SHORT:2,INT:4,CTR:8,MAC:20,SIG:40},WRAPPER_BEGIN="?OTR",WRAPPER_END=".",TWO=BigInt.str2bigInt("2",10);HLP.debug=function(msg){this.debug&&"function"!=typeof this.debug&&"undefined"!=typeof console&&console.log(msg)},HLP.extend=function(child,parent){function Ctor(){this.constructor=child}for(var key in parent)Object.hasOwnProperty.call(parent,key)&&(child[key]=parent[key]);Ctor.prototype=parent.prototype,child.prototype=new Ctor,child.__super__=parent.prototype},HLP.compare=function(str1,str2){if(str1.length!==str2.length)return!1;for(var i=0,result=0;i<str1.length;i++)result|=str1[i].charCodeAt(0)^str2[i].charCodeAt(0);return intCompare(result,0)},HLP.randomExponent=function(){return BigInt.randBigInt(1536)},HLP.smpHash=function(version,fmpi,smpi){var sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(HLP.packBytes(version,DTS.BYTE))),sha256.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(fmpi))),smpi&&sha256.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(smpi)));var hash=sha256.finalize();return HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1))},HLP.makeMac=function(aesctr,m){var pass=CryptoJS.enc.Latin1.parse(m),mac=CryptoJS.HmacSHA256(CryptoJS.enc.Latin1.parse(aesctr),pass);return HLP.mask(mac.toString(CryptoJS.enc.Latin1),0,160)},HLP.make1Mac=function(aesctr,m){var pass=CryptoJS.enc.Latin1.parse(m),mac=CryptoJS.HmacSHA1(CryptoJS.enc.Latin1.parse(aesctr),pass);return mac.toString(CryptoJS.enc.Latin1)},HLP.encryptAes=function(msg,c,iv){var opts={mode:CryptoJS.mode.CTR,iv:CryptoJS.enc.Latin1.parse(iv),padding:CryptoJS.pad.NoPadding},aesctr=CryptoJS.AES.encrypt(msg,CryptoJS.enc.Latin1.parse(c),opts),aesctr_decoded=CryptoJS.enc.Base64.parse(aesctr.toString());return CryptoJS.enc.Latin1.stringify(aesctr_decoded)},HLP.decryptAes=function(msg,c,iv){msg=CryptoJS.enc.Latin1.parse(msg);var opts={mode:CryptoJS.mode.CTR,iv:CryptoJS.enc.Latin1.parse(iv),padding:CryptoJS.pad.NoPadding};return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(msg),CryptoJS.enc.Latin1.parse(c),opts)},HLP.multPowMod=function(a,b,c,d,e){return BigInt.multMod(BigInt.powMod(a,b,e),BigInt.powMod(c,d,e),e)},HLP.ZKP=function(v,c,d,e){return BigInt.equals(c,HLP.smpHash(v,d,e))},HLP.GTOE=function(a,b){return BigInt.equals(a,b)||BigInt.greater(a,b)},HLP.between=function(x,a,b){return BigInt.greater(x,a)&&BigInt.greater(b,x)},HLP.checkGroup=function(g,N_MINUS_2){return HLP.GTOE(g,TWO)&&HLP.GTOE(N_MINUS_2,g)},HLP.h1=function(b,secbytes){var sha1=CryptoJS.algo.SHA1.create();return sha1.update(CryptoJS.enc.Latin1.parse(b)),sha1.update(CryptoJS.enc.Latin1.parse(secbytes)),sha1.finalize().toString(CryptoJS.enc.Latin1)},HLP.h2=function(b,secbytes){var sha256=CryptoJS.algo.SHA256.create();return sha256.update(CryptoJS.enc.Latin1.parse(b)),sha256.update(CryptoJS.enc.Latin1.parse(secbytes)),sha256.finalize().toString(CryptoJS.enc.Latin1)},HLP.mask=function(bytes,start,n){return bytes.substr(start/8,n/8)};var _toString=String.fromCharCode;HLP.packBytes=function(val,bytes){val=val.toString(16);for(var nex,res="";bytes>0;bytes--)nex=val.length?val.substr(-2,2):"0",val=val.substr(0,val.length-2),res=_toString(parseInt(nex,16))+res;return res},HLP.packINT=function(d){return HLP.packBytes(d,DTS.INT)},HLP.packCtr=function(d){return HLP.padCtr(HLP.packBytes(d,DTS.CTR))},HLP.padCtr=function(ctr){return ctr+"\x00\x00\x00\x00\x00\x00\x00\x00"},HLP.unpackCtr=function(d){return d=HLP.toByteArray(d.substring(0,8)),HLP.unpack(d)},HLP.unpack=function(arr){for(var val=0,i=0,len=arr.length;len>i;i++)val=256*val+arr[i];return val},HLP.packData=function(d){return HLP.packINT(d.length)+d},HLP.bits2bigInt=function(bits){return bits=HLP.toByteArray(bits),BigInt.ba2bigInt(bits)},HLP.packMPI=function(mpi){return HLP.packData(BigInt.bigInt2bits(BigInt.trim(mpi,0)))},HLP.packSHORT=function(short){return HLP.packBytes(short,DTS.SHORT)},HLP.unpackSHORT=function(short){return short=HLP.toByteArray(short),HLP.unpack(short)},HLP.packTLV=function(type,value){return HLP.packSHORT(type)+HLP.packSHORT(value.length)+value},HLP.readLen=function(msg){return msg=HLP.toByteArray(msg.substring(0,4)),HLP.unpack(msg)},HLP.readData=function(data){var n=HLP.unpack(data.splice(0,4));return[n,data]},HLP.readMPI=function(data){return data=HLP.toByteArray(data),data=HLP.readData(data),BigInt.ba2bigInt(data[1])},HLP.packMPIs=function(arr){return arr.reduce(function(prv,cur){return prv+HLP.packMPI(cur)},"")},HLP.unpackMPIs=function(num,mpis){for(var i=0,arr=[];num>i;i++)arr.push("MPI");return HLP.splitype(arr,mpis).map(function(m){return HLP.readMPI(m)})},HLP.wrapMsg=function(msg,fs,v3,our_it,their_it){msg=CryptoJS.enc.Base64.stringify(CryptoJS.enc.Latin1.parse(msg)),msg=WRAPPER_BEGIN+":"+msg+WRAPPER_END;var its;if(v3&&(its="|",its+=HLP.readLen(our_it).toString(16),its+="|",its+=HLP.readLen(their_it).toString(16)),!fs)return[null,msg];var n=Math.ceil(msg.length/fs);if(n>65535)return["Too many fragments"];if(1==n)return[null,msg];var k,bi,ei,frag,mf,mfs=[];for(k=1;n>=k;k++)bi=(k-1)*fs,ei=k*fs,frag=msg.slice(bi,ei),mf=WRAPPER_BEGIN,v3&&(mf+=its),mf+=","+k+",",mf+=n+",",mf+=frag+",",mfs.push(mf);return[null,mfs]},HLP.splitype=function splitype(arr,msg){var data=[];return arr.forEach(function(a){var str;switch(a){case"PUBKEY":str=splitype(["SHORT","MPI","MPI","MPI","MPI"],msg).join("");break;case"DATA":case"MPI":str=msg.substring(0,HLP.readLen(msg)+4);break;default:str=msg.substring(0,DTS[a])}data.push(str),msg=msg.substring(str.length)}),data};var _bin2num=function(){for(var i=0,_bin2num={};256>i;++i)_bin2num[String.fromCharCode(i)]=i;for(i=128;256>i;++i)_bin2num[String.fromCharCode(63232+i)]=i;return _bin2num}();HLP.toByteArray=function(data){for(var rv=[],ary=data.split(""),i=-1,iz=ary.length,remain=iz%8;remain--;)++i,rv[i]=_bin2num[ary[i]];for(remain=iz>>3;remain--;)rv.push(_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]]);return rv}}.call(this),function(){"use strict";function timer(){var start=(new Date).getTime();return function(s){if(DEBUG&&"undefined"!=typeof console){var t=(new Date).getTime();console.log(s+": "+(t-start)),start=t}}}function makeRandom(min,max){var c=BigInt.randBigInt(BigInt.bitSize(max));return HLP.between(c,min,max)?c:makeRandom(min,max)}function isProbPrime(k,n){var i,B=3e4,l=BigInt.bitSize(k),primes=BigInt.primes;for(0===primes.length&&(primes=BigInt.findPrimes(B)),rpprb.length!=k.length&&(rpprb=BigInt.dup(k)),i=0;i<primes.length&&primes[i]<=B;i++)if(0===BigInt.modInt(k,primes[i])&&!BigInt.equalsInt(k,primes[i]))return 0;for(i=0;n>i;i++){for(BigInt.randBigInt_(rpprb,l,0);!BigInt.greater(k,rpprb);)BigInt.randBigInt_(rpprb,l,0);if(!BigInt.millerRabin(k,rpprb))return 0}return 1}function generatePrimes(bit_length){for(var q,p,rem,counter,t=timer(),repeat=bit_lengths[bit_length].repeat,N=bit_lengths[bit_length].N,LM1=BigInt.twoToThe(bit_length-1),bl4=4*bit_length,brk=!1;;)if(q=BigInt.randBigInt(N,1),q[0]|=1,isProbPrime(q,repeat)){for(t("q"),counter=0;bl4>counter;counter++)if(p=BigInt.randBigInt(bit_length,1),p[0]|=1,rem=BigInt.mod(p,q),rem=BigInt.sub(rem,ONE),p=BigInt.sub(p,rem),!BigInt.greater(LM1,p)&&isProbPrime(p,repeat)){t("p"),primes[bit_length]={p:p,q:q},brk=!0;break}if(brk)break}for(var g,h=BigInt.dup(TWO),pm1=BigInt.sub(p,ONE),e=BigInt.multMod(pm1,BigInt.inverseMod(q,p),p);;){g=BigInt.powMod(h,e,p);{if(!BigInt.equals(g,ONE))return primes[bit_length].g=g,void t("g");h=BigInt.add(h,ONE)}}throw new Error("Unreachable!")}function DSA(obj,opts){if(!(this instanceof DSA))return new DSA(obj,opts);if(opts=opts||{},obj){var self=this;return["p","q","g","y","x"].forEach(function(prop){self[prop]=obj[prop]}),void(this.type=obj.type||KEY_TYPE)}var bit_length=parseInt(opts.bit_length?opts.bit_length:1024,10);if(!bit_lengths[bit_length])throw new Error("Unsupported bit length.");primes[bit_length]||generatePrimes(bit_length),this.p=primes[bit_length].p,this.q=primes[bit_length].q,this.g=primes[bit_length].g,this.type=KEY_TYPE,this.x=makeRandom(ZERO,this.q),this.y=BigInt.powMod(this.g,this.x,this.p),opts.nocache&&(primes[bit_length]=null)}function tokenizeStr(str){var start,end;if(start=str.indexOf("("),end=str.lastIndexOf(")"),0>start||0>end)throw new Error("Malformed S-Expression");str=str.substring(start+1,end);var splt=str.search(/\s/),obj={type:str.substring(0,splt),val:[]};if(str=str.substring(splt+1,end),start=str.indexOf("("),0>start)obj.val.push(str);else for(var i,len,ss,es;start>-1;){for(i=start+1,len=str.length,ss=1,es=0;len>i&&ss>es;i++)"("===str[i]&&ss++,")"===str[i]&&es++;obj.val.push(tokenizeStr(str.substring(start,++i))),str=str.substring(++i),start=str.indexOf("(")}return obj}function parseLibotr(obj){if(!obj.type)throw new Error("Parse error.");var o,val;return"privkeys"===obj.type?(o=[],obj.val.forEach(function(i){o.push(parseLibotr(i))}),o):(o={},obj.val.forEach(function(i){val=i.val[0],"string"==typeof val?0===val.indexOf("#")&&(val=val.substring(1,val.lastIndexOf("#")),val=BigInt.str2bigInt(val,16)):val=parseLibotr(i),o[i.type]=val}),o)}var CryptoJS,BigInt,Worker,WWPath,HLP,root=this;"undefined"!=typeof module&&module.exports?(module.exports=DSA,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),WWPath=require("path").join(__dirname,"/dsa-webworker.js"),HLP=require("./helpers.js")):(Object.keys(root.DSA).forEach(function(k){DSA[k]=root.DSA[k]}),root.DSA=DSA,CryptoJS=root.CryptoJS,BigInt=root.BigInt,Worker=root.Worker,WWPath="dsa-webworker.js",HLP=DSA.HLP);var ZERO=BigInt.str2bigInt("0",10),ONE=BigInt.str2bigInt("1",10),TWO=BigInt.str2bigInt("2",10),KEY_TYPE="\x00\x00",DEBUG=!1,rpprb=[],bit_lengths={1024:{N:160,repeat:40},2048:{N:224,repeat:56}},primes={};DSA.prototype={constructor:DSA,packPublic:function(){var str=this.type;return str+=HLP.packMPI(this.p),str+=HLP.packMPI(this.q),str+=HLP.packMPI(this.g),str+=HLP.packMPI(this.y)},packPrivate:function(){var str=this.packPublic()+HLP.packMPI(this.x);return str=CryptoJS.enc.Latin1.parse(str),str.toString(CryptoJS.enc.Base64)},generateNonce:function(m){var priv=BigInt.bigInt2bits(BigInt.trim(this.x,0)),rand=BigInt.bigInt2bits(BigInt.randBigInt(256)),sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(priv)),sha256.update(m),sha256.update(CryptoJS.enc.Latin1.parse(rand));var hash=sha256.finalize();return hash=HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1)),BigInt.rightShift_(hash,256-BigInt.bitSize(this.q)),HLP.between(hash,ZERO,this.q)?hash:this.generateNonce(m)},sign:function(m){m=CryptoJS.enc.Latin1.parse(m);for(var k,b=BigInt.str2bigInt(m.toString(CryptoJS.enc.Hex),16),r=ZERO,s=ZERO;BigInt.isZero(s)||BigInt.isZero(r);)k=this.generateNonce(m),r=BigInt.mod(BigInt.powMod(this.g,k,this.p),this.q),BigInt.isZero(r)||(s=BigInt.inverseMod(k,this.q),s=BigInt.mult(s,BigInt.add(b,BigInt.mult(this.x,r))),s=BigInt.mod(s,this.q));return[r,s]},fingerprint:function(){var pk=this.packPublic();return this.type===KEY_TYPE&&(pk=pk.substring(2)),pk=CryptoJS.enc.Latin1.parse(pk),CryptoJS.SHA1(pk).toString(CryptoJS.enc.Hex)}},DSA.parsePublic=function(str,priv){var fields=["SHORT","MPI","MPI","MPI","MPI"];priv&&fields.push("MPI"),str=HLP.splitype(fields,str);var obj={type:str[0],p:HLP.readMPI(str[1]),q:HLP.readMPI(str[2]),g:HLP.readMPI(str[3]),y:HLP.readMPI(str[4])};return priv&&(obj.x=HLP.readMPI(str[5])),new DSA(obj)},DSA.parsePrivate=function(str,libotr){return libotr?parseLibotr(tokenizeStr(str))[0]["private-key"].dsa:(str=CryptoJS.enc.Base64.parse(str),str=str.toString(CryptoJS.enc.Latin1),DSA.parsePublic(str,!0))},DSA.verify=function(key,m,r,s){if(!HLP.between(r,ZERO,key.q)||!HLP.between(s,ZERO,key.q))return!1;var hm=CryptoJS.enc.Latin1.parse(m);hm=BigInt.str2bigInt(hm.toString(CryptoJS.enc.Hex),16);var w=BigInt.inverseMod(s,key.q),u1=BigInt.multMod(hm,w,key.q),u2=BigInt.multMod(r,w,key.q);u1=BigInt.powMod(key.g,u1,key.p),u2=BigInt.powMod(key.y,u2,key.p);var v=BigInt.mod(BigInt.multMod(u1,u2,key.p),key.q);return BigInt.equals(v,r)},DSA.createInWebWorker=function(options,cb){var opts={path:WWPath,seed:BigInt.getSeed};options&&"object"==typeof options&&Object.keys(options).forEach(function(k){opts[k]=options[k]}),"undefined"!=typeof module&&module.exports&&(Worker=require("webworker-threads").Worker);var worker=new Worker(opts.path);worker.onmessage=function(e){var data=e.data;switch(data.type){case"debug":if(!DEBUG||"undefined"==typeof console)return;console.log(data.val);break;case"data":worker.terminate(),cb(DSA.parsePrivate(data.val));break;default:throw new Error("Unrecognized type.")}},worker.postMessage({seed:opts.seed(),imports:opts.imports,debug:DEBUG})}}.call(this),function(){"use strict";var CryptoJS,CONST,HLP,root=this,Parse={};"undefined"!=typeof module&&module.exports?(module.exports=Parse,CryptoJS=require("../vendor/crypto.js"),CONST=require("./const.js"),HLP=require("./helpers.js")):(root.OTR.Parse=Parse,CryptoJS=root.CryptoJS,CONST=root.OTR.CONST,HLP=root.OTR.HLP);var tags={};tags[CONST.WHITESPACE_TAG_V2]=CONST.OTR_VERSION_2,tags[CONST.WHITESPACE_TAG_V3]=CONST.OTR_VERSION_3,Parse.parseMsg=function(otr,msg){var ver=[],start=msg.indexOf(CONST.OTR_TAG);if(!~start){if(this.initFragment(otr),ind=msg.indexOf(CONST.WHITESPACE_TAG),~ind){msg=msg.split(""),msg.splice(ind,16);for(var tag,len=msg.length;len>ind;)tag=msg.slice(ind,ind+8).join(""),Object.hasOwnProperty.call(tags,tag)?(msg.splice(ind,8),ver.push(tags[tag])):ind+=8;msg=msg.join("")}return{msg:msg,ver:ver}}var ind=start+CONST.OTR_TAG.length,com=msg[ind];if(","===com||"|"===com)return this.msgFragment(otr,msg.substring(ind+1),"|"===com);if(this.initFragment(otr),~["?","v"].indexOf(com)){"?"===msg[ind]&&(ver.push(CONST.OTR_VERSION_1),ind+=1);var vers={2:CONST.OTR_VERSION_2,3:CONST.OTR_VERSION_3},qs=msg.substring(ind+1),qi=qs.indexOf("?");return qi>=1&&(qs=qs.substring(0,qi).split(""),"v"===msg[ind]&&qs.forEach(function(q){Object.hasOwnProperty.call(vers,q)&&ver.push(vers[q])})),{cls:"query",ver:ver}}if(":"===com){ind+=1;var info=msg.substring(ind,ind+4);if(info.length<4)return{msg:msg};info=CryptoJS.enc.Base64.parse(info).toString(CryptoJS.enc.Latin1);var version=info.substring(0,2),type=info.substring(2);if(!otr["ALLOW_V"+HLP.unpackSHORT(version)])return{msg:msg};ind+=4;var end=msg.substring(ind).indexOf(".");if(!~end)return{msg:msg};msg=CryptoJS.enc.Base64.parse(msg.substring(ind,ind+end)),msg=CryptoJS.enc.Latin1.stringify(msg);var instance_tags;version===CONST.OTR_VERSION_3&&(instance_tags=msg.substring(0,8),msg=msg.substring(8));var cls;return~["","\n","",""].indexOf(type)?cls="ake":""===type&&(cls="data"),{version:version,type:type,msg:msg,cls:cls,instance_tags:instance_tags}}return" Error:"===msg.substring(ind,ind+7)?(otr.ERROR_START_AKE&&otr.sendQueryMsg(),{msg:msg.substring(ind+7),cls:"error"}):{msg:msg}},Parse.initFragment=function(otr){otr.fragment={s:"",j:0,k:0}},Parse.msgFragment=function(otr,msg,v3){if(msg=msg.split(","),v3){var its=msg.shift().split("|"),their_it=HLP.packINT(parseInt(its[0],16)),our_it=HLP.packINT(parseInt(its[1],16));if(otr.checkInstanceTags(their_it+our_it))return}if(!(msg.length<4||isNaN(parseInt(msg[0],10))||isNaN(parseInt(msg[1],10)))){var k=parseInt(msg[0],10),n=parseInt(msg[1],10);return msg=msg[2],k>n||0===n||0===k?void this.initFragment(otr):(1===k?(this.initFragment(otr),otr.fragment={k:1,n:n,s:msg}):n===otr.fragment.n&&k===otr.fragment.k+1?(otr.fragment.s+=msg,otr.fragment.k+=1):this.initFragment(otr),n===k?(msg=otr.fragment.s,this.initFragment(otr),this.parseMsg(otr,msg)):void 0)}}}.call(this),function(){"use strict";function hMac(gx,gy,pk,kid,m){var pass=CryptoJS.enc.Latin1.parse(m),hmac=CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256,pass);return hmac.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(gx))),hmac.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(gy))),hmac.update(CryptoJS.enc.Latin1.parse(pk)),hmac.update(CryptoJS.enc.Latin1.parse(kid)),hmac.finalize().toString(CryptoJS.enc.Latin1)}function AKE(otr){if(!(this instanceof AKE))return new AKE(otr);this.otr=otr,this.our_dh=otr.our_old_dh,this.our_keyid=otr.our_keyid-1,this.their_y=null,this.their_keyid=null,this.their_priv_pk=null,this.ssid=null,this.transmittedRS=!1,this.r=null;var self=this;["sendMsg"].forEach(function(meth){self[meth]=self[meth].bind(self)})}var CryptoJS,BigInt,CONST,HLP,DSA,root=this;"undefined"!=typeof module&&module.exports?(module.exports=AKE,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),CONST=require("./const.js"),HLP=require("./helpers.js"),DSA=require("./dsa.js")):(root.OTR.AKE=AKE,CryptoJS=root.CryptoJS,BigInt=root.BigInt,CONST=root.OTR.CONST,HLP=root.OTR.HLP,DSA=root.DSA);var N=BigInt.str2bigInt(CONST.N,16),N_MINUS_2=BigInt.sub(N,BigInt.str2bigInt("2",10));AKE.prototype={constructor:AKE,createKeys:function(g){var s=BigInt.powMod(g,this.our_dh.privateKey,N),secbytes=HLP.packMPI(s);this.ssid=HLP.mask(HLP.h2("\x00",secbytes),0,64);var tmp=HLP.h2("",secbytes);this.c=HLP.mask(tmp,0,128),this.c_prime=HLP.mask(tmp,128,128),this.m1=HLP.h2("",secbytes),this.m2=HLP.h2("",secbytes),this.m1_prime=HLP.h2("",secbytes),this.m2_prime=HLP.h2("",secbytes)},verifySignMac:function(mac,aesctr,m2,c,their_y,our_dh_pk,m1,ctr){var vmac=HLP.makeMac(aesctr,m2);if(!HLP.compare(mac,vmac))return["MACs do not match."];var x=HLP.decryptAes(aesctr.substring(4),c,ctr);x=HLP.splitype(["PUBKEY","INT","SIG"],x.toString(CryptoJS.enc.Latin1));var m=hMac(their_y,our_dh_pk,x[0],x[1],m1),pub=DSA.parsePublic(x[0]),r=HLP.bits2bigInt(x[2].substring(0,20)),s=HLP.bits2bigInt(x[2].substring(20));return DSA.verify(pub,m,r,s)?[null,HLP.readLen(x[1]),pub]:["Cannot verify signature of m."]},makeM:function(their_y,m1,c,m2){var pk=this.otr.priv.packPublic(),kid=HLP.packINT(this.our_keyid),m=hMac(this.our_dh.publicKey,their_y,pk,kid,m1);m=this.otr.priv.sign(m);var msg=pk+kid;msg+=BigInt.bigInt2bits(m[0],20),msg+=BigInt.bigInt2bits(m[1],20),msg=CryptoJS.enc.Latin1.parse(msg);var aesctr=HLP.packData(HLP.encryptAes(msg,c,HLP.packCtr(0))),mac=HLP.makeMac(aesctr,m2);return aesctr+mac},akeSuccess:function(version){return HLP.debug.call(this.otr,"success"),BigInt.equals(this.their_y,this.our_dh.publicKey)?this.otr.error("equal keys - we have a problem."):(this.otr.our_old_dh=this.our_dh,this.otr.their_priv_pk=this.their_priv_pk,this.their_keyid===this.otr.their_keyid&&BigInt.equals(this.their_y,this.otr.their_y)||this.their_keyid===this.otr.their_keyid-1&&BigInt.equals(this.their_y,this.otr.their_old_y)||(this.otr.their_y=this.their_y,this.otr.their_old_y=null,this.otr.their_keyid=this.their_keyid,this.otr.sessKeys[0]=[new this.otr.DHSession(this.otr.our_dh,this.otr.their_y),null],this.otr.sessKeys[1]=[new this.otr.DHSession(this.otr.our_old_dh,this.otr.their_y),null]),this.otr.ssid=this.ssid,this.otr.transmittedRS=this.transmittedRS,this.otr_version=version,this.otr.authstate=CONST.AUTHSTATE_NONE,this.otr.msgstate=CONST.MSGSTATE_ENCRYPTED,this.r=null,this.myhashed=null,this.dhcommit=null,this.encrypted=null,this.hashed=null,this.otr.trigger("status",[CONST.STATUS_AKE_SUCCESS]),void this.otr.sendStored())},handleAKE:function(msg){var send,vsm,type,version=msg.version;switch(msg.type){case"":if(HLP.debug.call(this.otr,"d-h key message"),msg=HLP.splitype(["DATA","DATA"],msg.msg),this.otr.authstate===CONST.AUTHSTATE_AWAITING_DHKEY){var ourHash=HLP.readMPI(this.myhashed),theirHash=HLP.readMPI(msg[1]);if(BigInt.greater(ourHash,theirHash)){type="",send=this.dhcommit;break}this.our_dh=this.otr.dh(),this.otr.authstate=CONST.AUTHSTATE_NONE,this.r=null,this.myhashed=null}else this.otr.authstate===CONST.AUTHSTATE_AWAITING_SIG&&(this.our_dh=this.otr.dh());this.otr.authstate=CONST.AUTHSTATE_AWAITING_REVEALSIG,this.encrypted=msg[0].substring(4),this.hashed=msg[1].substring(4),type="\n",send=HLP.packMPI(this.our_dh.publicKey);break;case"\n":if(HLP.debug.call(this.otr,"reveal signature message"),msg=HLP.splitype(["MPI"],msg.msg),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_DHKEY){if(this.otr.authstate!==CONST.AUTHSTATE_AWAITING_SIG)return;if(!BigInt.equals(this.their_y,HLP.readMPI(msg[0])))return}if(this.otr.authstate=CONST.AUTHSTATE_AWAITING_SIG,this.their_y=HLP.readMPI(msg[0]),!HLP.checkGroup(this.their_y,N_MINUS_2))return this.otr.error("Illegal g^y.");this.createKeys(this.their_y),type="",send=HLP.packMPI(this.r),send+=this.makeM(this.their_y,this.m1,this.c,this.m2),this.m1=null,this.m2=null,this.c=null;break;case"":if(HLP.debug.call(this.otr,"signature message"),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_REVEALSIG)return;msg=HLP.splitype(["DATA","DATA","MAC"],msg.msg),this.r=HLP.readMPI(msg[0]);var key=CryptoJS.enc.Hex.parse(BigInt.bigInt2str(this.r,16));key=CryptoJS.enc.Latin1.stringify(key);var gxmpi=HLP.decryptAes(this.encrypted,key,HLP.packCtr(0));gxmpi=gxmpi.toString(CryptoJS.enc.Latin1),this.their_y=HLP.readMPI(gxmpi);var hash=CryptoJS.SHA256(CryptoJS.enc.Latin1.parse(gxmpi));return HLP.compare(this.hashed,hash.toString(CryptoJS.enc.Latin1))?HLP.checkGroup(this.their_y,N_MINUS_2)?(this.createKeys(this.their_y),vsm=this.verifySignMac(msg[2],msg[1],this.m2,this.c,this.their_y,this.our_dh.publicKey,this.m1,HLP.packCtr(0)),vsm[0]?this.otr.error(vsm[0]):(this.their_keyid=vsm[1],this.their_priv_pk=vsm[2],send=this.makeM(this.their_y,this.m1_prime,this.c_prime,this.m2_prime),this.m1=null,this.m2=null,this.m1_prime=null,this.m2_prime=null,this.c=null,this.c_prime=null,this.sendMsg(version,"",send),void this.akeSuccess(version))):this.otr.error("Illegal g^x."):this.otr.error("Hashed g^x does not match.");case"":if(HLP.debug.call(this.otr,"data message"),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_SIG)return;return msg=HLP.splitype(["DATA","MAC"],msg.msg),vsm=this.verifySignMac(msg[1],msg[0],this.m2_prime,this.c_prime,this.their_y,this.our_dh.publicKey,this.m1_prime,HLP.packCtr(0)),vsm[0]?this.otr.error(vsm[0]):(this.their_keyid=vsm[1],this.their_priv_pk=vsm[2],this.m1_prime=null,this.m2_prime=null,this.c_prime=null,this.transmittedRS=!0,void this.akeSuccess(version));default:return}this.sendMsg(version,type,send)},sendMsg:function(version,type,msg){var send=version+type,v3=version===CONST.OTR_VERSION_3;return v3&&(HLP.debug.call(this.otr,"instance tags"),send+=this.otr.our_instance_tag,send+=this.otr.their_instance_tag),send+=msg,send=HLP.wrapMsg(send,this.otr.fragment_size,v3,this.otr.our_instance_tag,this.otr.their_instance_tag),send[0]?this.otr.error(send[0]):void this.otr.io(send[1])},initiateAKE:function(version){HLP.debug.call(this.otr,"d-h commit message"),this.otr.trigger("status",[CONST.STATUS_AKE_INIT]),this.otr.authstate=CONST.AUTHSTATE_AWAITING_DHKEY;var gxmpi=HLP.packMPI(this.our_dh.publicKey);gxmpi=CryptoJS.enc.Latin1.parse(gxmpi),this.r=BigInt.randBigInt(128);var key=CryptoJS.enc.Hex.parse(BigInt.bigInt2str(this.r,16));key=CryptoJS.enc.Latin1.stringify(key),this.myhashed=CryptoJS.SHA256(gxmpi),this.myhashed=HLP.packData(this.myhashed.toString(CryptoJS.enc.Latin1)),this.dhcommit=HLP.packData(HLP.encryptAes(gxmpi,key,HLP.packCtr(0))),this.dhcommit+=this.myhashed,this.sendMsg(version,"",this.dhcommit)}}}.call(this),function(){"use strict";function SM(reqs){return this instanceof SM?(this.version=1,this.our_fp=reqs.our_fp,this.their_fp=reqs.their_fp,this.ssid=reqs.ssid,this.debug=!!reqs.debug,void this.init()):new SM(reqs)}var CryptoJS,BigInt,EventEmitter,CONST,HLP,root=this;"undefined"!=typeof module&&module.exports?(module.exports=SM,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),EventEmitter=require("../vendor/eventemitter.js"),CONST=require("./const.js"),HLP=require("./helpers.js")):(root.OTR.SM=SM,CryptoJS=root.CryptoJS,BigInt=root.BigInt,EventEmitter=root.EventEmitter,CONST=root.OTR.CONST,HLP=root.OTR.HLP);var G=BigInt.str2bigInt(CONST.G,10),N=BigInt.str2bigInt(CONST.N,16),N_MINUS_2=BigInt.sub(N,BigInt.str2bigInt("2",10)),Q=BigInt.sub(N,BigInt.str2bigInt("1",10));BigInt.divInt_(Q,2),HLP.extend(SM,EventEmitter),SM.prototype.init=function(){this.smpstate=CONST.SMPSTATE_EXPECT1,this.secret=null},SM.prototype.makeSecret=function(our,secret){var sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(HLP.packBytes(this.version,1))),sha256.update(CryptoJS.enc.Hex.parse(our?this.our_fp:this.their_fp)),sha256.update(CryptoJS.enc.Hex.parse(our?this.their_fp:this.our_fp)),sha256.update(CryptoJS.enc.Latin1.parse(this.ssid)),sha256.update(CryptoJS.enc.Latin1.parse(secret));var hash=sha256.finalize();this.secret=HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1))},SM.prototype.makeG2s=function(){this.a2=HLP.randomExponent(),this.a3=HLP.randomExponent(),this.g2a=BigInt.powMod(G,this.a2,N),this.g3a=BigInt.powMod(G,this.a3,N),HLP.checkGroup(this.g2a,N_MINUS_2)&&HLP.checkGroup(this.g3a,N_MINUS_2)||this.makeG2s()},SM.prototype.computeGs=function(g2a,g3a){this.g2=BigInt.powMod(g2a,this.a2,N),this.g3=BigInt.powMod(g3a,this.a3,N)},SM.prototype.computePQ=function(r){this.p=BigInt.powMod(this.g3,r,N),this.q=HLP.multPowMod(G,r,this.g2,this.secret,N)},SM.prototype.computeR=function(){this.r=BigInt.powMod(this.QoQ,this.a3,N)},SM.prototype.computeRab=function(r){return BigInt.powMod(r,this.a3,N)},SM.prototype.computeC=function(v,r){return HLP.smpHash(v,BigInt.powMod(G,r,N))},SM.prototype.computeD=function(r,a,c){return BigInt.subMod(r,BigInt.multMod(a,c,Q),Q)},SM.prototype.handleSM=function(msg){var send,r2,r3,r7,t1,t2,t3,t4,rab,tmp2,cR,d7,ms,trust,expectStates={2:CONST.SMPSTATE_EXPECT1,3:CONST.SMPSTATE_EXPECT2,4:CONST.SMPSTATE_EXPECT3,5:CONST.SMPSTATE_EXPECT4,7:CONST.SMPSTATE_EXPECT1};if(6===msg.type)return this.init(),void this.trigger("abort");if(this.smpstate!==expectStates[msg.type])return this.abort();switch(this.smpstate){case CONST.SMPSTATE_EXPECT1:HLP.debug.call(this,"smp tlv 2");var ind,question;return 7===msg.type&&(ind=msg.msg.indexOf("\x00"),question=msg.msg.substring(0,ind),msg.msg=msg.msg.substring(ind+1)),ms=HLP.readLen(msg.msg.substr(0,4)),6!==ms?this.abort():(msg=HLP.unpackMPIs(6,msg.msg.substring(4)),HLP.checkGroup(msg[0],N_MINUS_2)&&HLP.checkGroup(msg[3],N_MINUS_2)&&HLP.ZKP(1,msg[1],HLP.multPowMod(G,msg[2],msg[0],msg[1],N))&&HLP.ZKP(2,msg[4],HLP.multPowMod(G,msg[5],msg[3],msg[4],N))?(this.g3ao=msg[3],this.makeG2s(),r2=HLP.randomExponent(),r3=HLP.randomExponent(),this.c2=this.computeC(3,r2),this.c3=this.computeC(4,r3),this.d2=this.computeD(r2,this.a2,this.c2),this.d3=this.computeD(r3,this.a3,this.c3),this.computeGs(msg[0],msg[3]),this.smpstate=CONST.SMPSTATE_EXPECT0,question&&(question=CryptoJS.enc.Latin1.parse(question).toString(CryptoJS.enc.Utf8)),void this.trigger("question",[question])):this.abort());
+case CONST.SMPSTATE_EXPECT2:if(HLP.debug.call(this,"smp tlv 3"),ms=HLP.readLen(msg.msg.substr(0,4)),11!==ms)return this.abort();if(msg=HLP.unpackMPIs(11,msg.msg.substring(4)),!(HLP.checkGroup(msg[0],N_MINUS_2)&&HLP.checkGroup(msg[3],N_MINUS_2)&&HLP.checkGroup(msg[6],N_MINUS_2)&&HLP.checkGroup(msg[7],N_MINUS_2)))return this.abort();if(!HLP.ZKP(3,msg[1],HLP.multPowMod(G,msg[2],msg[0],msg[1],N)))return this.abort();if(!HLP.ZKP(4,msg[4],HLP.multPowMod(G,msg[5],msg[3],msg[4],N)))return this.abort();if(this.g3ao=msg[3],this.computeGs(msg[0],msg[3]),t1=HLP.multPowMod(this.g3,msg[9],msg[6],msg[8],N),t2=HLP.multPowMod(G,msg[9],this.g2,msg[10],N),t2=BigInt.multMod(t2,BigInt.powMod(msg[7],msg[8],N),N),!HLP.ZKP(5,msg[8],t1,t2))return this.abort();var r4=HLP.randomExponent();this.computePQ(r4);var r5=HLP.randomExponent(),r6=HLP.randomExponent(),tmp=HLP.multPowMod(G,r5,this.g2,r6,N),cP=HLP.smpHash(6,BigInt.powMod(this.g3,r5,N),tmp),d5=this.computeD(r5,r4,cP),d6=this.computeD(r6,this.secret,cP);this.QoQ=BigInt.divMod(this.q,msg[7],N),this.PoP=BigInt.divMod(this.p,msg[6],N),this.computeR(),r7=HLP.randomExponent(),tmp2=BigInt.powMod(this.QoQ,r7,N),cR=HLP.smpHash(7,BigInt.powMod(G,r7,N),tmp2),d7=this.computeD(r7,this.a3,cR),this.smpstate=CONST.SMPSTATE_EXPECT4,send=HLP.packINT(8)+HLP.packMPIs([this.p,this.q,cP,d5,d6,this.r,cR,d7]),send=HLP.packTLV(4,send);break;case CONST.SMPSTATE_EXPECT3:if(HLP.debug.call(this,"smp tlv 4"),ms=HLP.readLen(msg.msg.substr(0,4)),8!==ms)return this.abort();if(msg=HLP.unpackMPIs(8,msg.msg.substring(4)),!HLP.checkGroup(msg[0],N_MINUS_2)||!HLP.checkGroup(msg[1],N_MINUS_2)||!HLP.checkGroup(msg[5],N_MINUS_2))return this.abort();if(t1=HLP.multPowMod(this.g3,msg[3],msg[0],msg[2],N),t2=HLP.multPowMod(G,msg[3],this.g2,msg[4],N),t2=BigInt.multMod(t2,BigInt.powMod(msg[1],msg[2],N),N),!HLP.ZKP(6,msg[2],t1,t2))return this.abort();if(t3=HLP.multPowMod(G,msg[7],this.g3ao,msg[6],N),this.QoQ=BigInt.divMod(msg[1],this.q,N),t4=HLP.multPowMod(this.QoQ,msg[7],msg[5],msg[6],N),!HLP.ZKP(7,msg[6],t3,t4))return this.abort();this.computeR(),r7=HLP.randomExponent(),tmp2=BigInt.powMod(this.QoQ,r7,N),cR=HLP.smpHash(8,BigInt.powMod(G,r7,N),tmp2),d7=this.computeD(r7,this.a3,cR),send=HLP.packINT(3)+HLP.packMPIs([this.r,cR,d7]),send=HLP.packTLV(5,send),rab=this.computeRab(msg[5]),trust=!!BigInt.equals(rab,BigInt.divMod(msg[0],this.p,N)),this.trigger("trust",[trust,"answered"]),this.init();break;case CONST.SMPSTATE_EXPECT4:return HLP.debug.call(this,"smp tlv 5"),ms=HLP.readLen(msg.msg.substr(0,4)),3!==ms?this.abort():(msg=HLP.unpackMPIs(3,msg.msg.substring(4)),HLP.checkGroup(msg[0],N_MINUS_2)?(t3=HLP.multPowMod(G,msg[2],this.g3ao,msg[1],N),t4=HLP.multPowMod(this.QoQ,msg[2],msg[0],msg[1],N),HLP.ZKP(8,msg[1],t3,t4)?(rab=this.computeRab(msg[0]),trust=!!BigInt.equals(rab,this.PoP),this.trigger("trust",[trust,"asked"]),void this.init()):this.abort()):this.abort())}this.sendMsg(send)},SM.prototype.sendMsg=function(send){this.trigger("send",[this.ssid,"\x00"+send])},SM.prototype.rcvSecret=function(secret,question){HLP.debug.call(this,"receive secret");var fn,our=!1;this.smpstate===CONST.SMPSTATE_EXPECT0?fn=this.answer:(fn=this.initiate,our=!0),this.makeSecret(our,secret),fn.call(this,question)},SM.prototype.answer=function(){HLP.debug.call(this,"smp answer");var r4=HLP.randomExponent();this.computePQ(r4);var r5=HLP.randomExponent(),r6=HLP.randomExponent(),tmp=HLP.multPowMod(G,r5,this.g2,r6,N),cP=HLP.smpHash(5,BigInt.powMod(this.g3,r5,N),tmp),d5=this.computeD(r5,r4,cP),d6=this.computeD(r6,this.secret,cP);this.smpstate=CONST.SMPSTATE_EXPECT3;var send=HLP.packINT(11)+HLP.packMPIs([this.g2a,this.c2,this.d2,this.g3a,this.c3,this.d3,this.p,this.q,cP,d5,d6]);this.sendMsg(HLP.packTLV(3,send))},SM.prototype.initiate=function(question){HLP.debug.call(this,"smp initiate"),this.smpstate!==CONST.SMPSTATE_EXPECT1&&this.abort(),this.makeG2s();var r2=HLP.randomExponent(),r3=HLP.randomExponent();this.c2=this.computeC(1,r2),this.c3=this.computeC(2,r3),this.d2=this.computeD(r2,this.a2,this.c2),this.d3=this.computeD(r3,this.a3,this.c3),this.smpstate=CONST.SMPSTATE_EXPECT2;var send="",type=2;question&&(send+=question,send+="\x00",type=7),send+=HLP.packINT(6)+HLP.packMPIs([this.g2a,this.c2,this.d2,this.g3a,this.c3,this.d3]),this.sendMsg(HLP.packTLV(type,send))},SM.prototype.abort=function(){this.init(),this.sendMsg(HLP.packTLV(6,"")),this.trigger("abort")}}.call(this),function(){"use strict";function OTRCB(cb){this.cb=cb}function OTR(options){if(!(this instanceof OTR))return new OTR(options);if(options=options||{},options.priv&&!(options.priv instanceof DSA))throw new Error("Requires long-lived DSA key.");if(this.priv=options.priv?options.priv:new DSA,this.fragment_size=options.fragment_size||0,this.fragment_size<0)throw new Error("Fragment size must be a positive integer.");if(this.send_interval=options.send_interval||0,this.send_interval<0)throw new Error("Send interval must be a positive integer.");this.outgoing=[],this.our_instance_tag=options.instance_tag||OTR.makeInstanceTag(),this.debug=!!options.debug,this.smw=options.smw,this.init();var self=this;["sendMsg","receiveMsg"].forEach(function(meth){self[meth]=self[meth].bind(self)}),EventEmitter.call(this)}var CryptoJS,BigInt,EventEmitter,Worker,SMWPath,CONST,HLP,Parse,AKE,SM,DSA,root=this;"undefined"!=typeof module&&module.exports?(module.exports=OTR,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),EventEmitter=require("../vendor/eventemitter.js"),SMWPath=require("path").join(__dirname,"/sm-webworker.js"),CONST=require("./const.js"),HLP=require("./helpers.js"),Parse=require("./parse.js"),AKE=require("./ake.js"),SM=require("./sm.js"),DSA=require("./dsa.js"),OTR.CONST=CONST):(Object.keys(root.OTR).forEach(function(k){OTR[k]=root.OTR[k]}),root.OTR=OTR,CryptoJS=root.CryptoJS,BigInt=root.BigInt,EventEmitter=root.EventEmitter,Worker=root.Worker,SMWPath="sm-webworker.js",CONST=OTR.CONST,HLP=OTR.HLP,Parse=OTR.Parse,AKE=OTR.AKE,SM=OTR.SM,DSA=root.DSA);var G=BigInt.str2bigInt(CONST.G,10),N=BigInt.str2bigInt(CONST.N,16),MAX_INT=Math.pow(2,53)-1,MAX_UINT=Math.pow(2,31)-1;HLP.extend(OTR,EventEmitter),OTR.prototype.init=function(){this.msgstate=CONST.MSGSTATE_PLAINTEXT,this.authstate=CONST.AUTHSTATE_NONE,this.ALLOW_V2=!0,this.ALLOW_V3=!0,this.REQUIRE_ENCRYPTION=!1,this.SEND_WHITESPACE_TAG=!1,this.WHITESPACE_START_AKE=!1,this.ERROR_START_AKE=!1,Parse.initFragment(this),this.their_y=null,this.their_old_y=null,this.their_keyid=0,this.their_priv_pk=null,this.their_instance_tag="\x00\x00\x00\x00",this.our_dh=this.dh(),this.our_old_dh=this.dh(),this.our_keyid=2,this.sessKeys=[new Array(2),new Array(2)],this.storedMgs=[],this.oldMacKeys=[],this.sm=null,this._akeInit(),this.receivedPlaintext=!1},OTR.prototype._akeInit=function(){this.ake=new AKE(this),this.transmittedRS=!1,this.ssid=null},OTR.prototype._SMW=function(otr,reqs){this.otr=otr;var opts={path:SMWPath,seed:BigInt.getSeed};"object"==typeof otr.smw&&Object.keys(otr.smw).forEach(function(k){opts[k]=otr.smw[k]}),"undefined"!=typeof module&&module.exports&&(Worker=require("webworker-threads").Worker),this.worker=new Worker(opts.path);var self=this;this.worker.onmessage=function(e){var d=e.data;d&&self.trigger(d.method,d.args)},this.worker.postMessage({type:"seed",seed:opts.seed(),imports:opts.imports}),this.worker.postMessage({type:"init",reqs:reqs})},HLP.extend(OTR.prototype._SMW,EventEmitter),["handleSM","rcvSecret","abort"].forEach(function(m){OTR.prototype._SMW.prototype[m]=function(){this.worker.postMessage({type:"method",method:m,args:Array.prototype.slice.call(arguments,0)})}}),OTR.prototype._smInit=function(){var reqs={ssid:this.ssid,our_fp:this.priv.fingerprint(),their_fp:this.their_priv_pk.fingerprint(),debug:this.debug};this.smw?(this.sm&&this.sm.worker.terminate(),this.sm=new this._SMW(this,reqs)):this.sm=new SM(reqs);var self=this;["trust","abort","question"].forEach(function(e){self.sm.on(e,function(){self.trigger("smp",[e].concat(Array.prototype.slice.call(arguments)))})}),this.sm.on("send",function(ssid,send){self.ssid===ssid&&(send=self.prepareMsg(send),self.io(send))})},OTR.prototype.io=function(msg,meta){msg=[].concat(msg).map(function(m){return{msg:m,meta:meta}}),this.outgoing=this.outgoing.concat(msg);var self=this;!function send(first){if(!first){if(!self.outgoing.length)return;var elem=self.outgoing.shift(),cb=null;elem.meta instanceof OTRCB&&(cb=elem.meta.cb,elem.meta=null),self.trigger("io",[elem.msg,elem.meta]),cb&&cb()}setTimeout(send,first?0:self.send_interval)}(!0)},OTR.prototype.dh=function(){var keys={privateKey:BigInt.randBigInt(320)};return keys.publicKey=BigInt.powMod(G,keys.privateKey,N),keys},OTR.prototype.DHSession=function DHSession(our_dh,their_y){if(!(this instanceof DHSession))return new DHSession(our_dh,their_y);var s=BigInt.powMod(their_y,our_dh.privateKey,N),secbytes=HLP.packMPI(s);this.id=HLP.mask(HLP.h2("\x00",secbytes),0,64);var sq=BigInt.greater(our_dh.publicKey,their_y),sendbyte=sq?"":"",rcvbyte=sq?"":"";this.sendenc=HLP.mask(HLP.h1(sendbyte,secbytes),0,128),this.sendmac=CryptoJS.SHA1(CryptoJS.enc.Latin1.parse(this.sendenc)),this.sendmac=this.sendmac.toString(CryptoJS.enc.Latin1),this.rcvenc=HLP.mask(HLP.h1(rcvbyte,secbytes),0,128),this.rcvmac=CryptoJS.SHA1(CryptoJS.enc.Latin1.parse(this.rcvenc)),this.rcvmac=this.rcvmac.toString(CryptoJS.enc.Latin1),this.rcvmacused=!1,this.extra_symkey=HLP.h2("ÿ",secbytes),this.send_counter=0,this.rcv_counter=0},OTR.prototype.rotateOurKeys=function(){var self=this;this.sessKeys[1].forEach(function(sk){sk&&sk.rcvmacused&&self.oldMacKeys.push(sk.rcvmac)}),this.our_old_dh=this.our_dh,this.our_dh=this.dh(),this.our_keyid+=1,this.sessKeys[1][0]=this.sessKeys[0][0],this.sessKeys[1][1]=this.sessKeys[0][1],this.sessKeys[0]=[this.their_y?new this.DHSession(this.our_dh,this.their_y):null,this.their_old_y?new this.DHSession(this.our_dh,this.their_old_y):null]},OTR.prototype.rotateTheirKeys=function(their_y){this.their_keyid+=1;var self=this;this.sessKeys.forEach(function(sk){sk[1]&&sk[1].rcvmacused&&self.oldMacKeys.push(sk[1].rcvmac)}),this.their_old_y=this.their_y,this.sessKeys[0][1]=this.sessKeys[0][0],this.sessKeys[1][1]=this.sessKeys[1][0],this.their_y=their_y,this.sessKeys[0][0]=new this.DHSession(this.our_dh,this.their_y),this.sessKeys[1][0]=new this.DHSession(this.our_old_dh,this.their_y)},OTR.prototype.prepareMsg=function(msg,esk){if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED||0===this.their_keyid)return this.notify("Not ready to encrypt.");var sessKeys=this.sessKeys[1][0];if(sessKeys.send_counter>=MAX_INT)return this.notify("Should have rekeyed by now.");sessKeys.send_counter+=1;var ctr=HLP.packCtr(sessKeys.send_counter),send=this.ake.otr_version+"",v3=this.ake.otr_version===CONST.OTR_VERSION_3;if(v3&&(send+=this.our_instance_tag,send+=this.their_instance_tag),send+="\x00",send+=HLP.packINT(this.our_keyid-1),send+=HLP.packINT(this.their_keyid),send+=HLP.packMPI(this.our_dh.publicKey),send+=ctr.substring(0,8),Math.ceil(msg.length/8)>=MAX_UINT)return this.notify("Message is too long.");var aes=HLP.encryptAes(CryptoJS.enc.Latin1.parse(msg),sessKeys.sendenc,ctr);return send+=HLP.packData(aes),send+=HLP.make1Mac(send,sessKeys.sendmac),send+=HLP.packData(this.oldMacKeys.splice(0).join("")),send=HLP.wrapMsg(send,this.fragment_size,v3,this.our_instance_tag,this.their_instance_tag),send[0]?this.notify(send[0]):(esk&&this.trigger("file",["send",sessKeys.extra_symkey,esk]),send[1])},OTR.prototype.handleDataMsg=function(msg){var vt=msg.version+msg.type;this.ake.otr_version===CONST.OTR_VERSION_3&&(vt+=msg.instance_tags);var types=["BYTE","INT","INT","MPI","CTR","DATA","MAC","DATA"];msg=HLP.splitype(types,msg.msg);var ign=""===msg[0];if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED||8!==msg.length)return void(ign||this.error("Received an unreadable encrypted message."));var our_keyid=this.our_keyid-HLP.readLen(msg[2]),their_keyid=this.their_keyid-HLP.readLen(msg[1]);if(0>our_keyid||our_keyid>1)return void(ign||this.error("Not of our latest keys."));if(0>their_keyid||their_keyid>1)return void(ign||this.error("Not of your latest keys."));var their_y=their_keyid?this.their_old_y:this.their_y;if(1===their_keyid&&!their_y)return void(ign||this.error("Do not have that key."));var sessKeys=this.sessKeys[our_keyid][their_keyid],ctr=HLP.unpackCtr(msg[4]);if(ctr<=sessKeys.rcv_counter)return void(ign||this.error("Counter in message is not larger."));sessKeys.rcv_counter=ctr,vt+=msg.slice(0,6).join("");var vmac=HLP.make1Mac(vt,sessKeys.rcvmac);if(!HLP.compare(msg[6],vmac))return void(ign||this.error("MACs do not match."));sessKeys.rcvmacused=!0;var out=HLP.decryptAes(msg[5].substring(4),sessKeys.rcvenc,HLP.padCtr(msg[4]));out=out.toString(CryptoJS.enc.Latin1),our_keyid||this.rotateOurKeys(),their_keyid||this.rotateTheirKeys(HLP.readMPI(msg[3]));var ind=out.indexOf("\x00");return~ind&&(this.handleTLVs(out.substring(ind+1),sessKeys),out=out.substring(0,ind)),out=CryptoJS.enc.Latin1.parse(out),out.toString(CryptoJS.enc.Utf8)},OTR.prototype.handleTLVs=function(tlvs,sessKeys){for(var type,len,msg;tlvs.length&&(type=HLP.unpackSHORT(tlvs.substr(0,2)),len=HLP.unpackSHORT(tlvs.substr(2,2)),msg=tlvs.substr(4,len),!(msg.length<len));){switch(type){case 1:this.msgstate=CONST.MSGSTATE_FINISHED,this.trigger("status",[CONST.STATUS_END_OTR]);break;case 2:case 3:case 4:case 5:case 6:case 7:if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED)return void(this.sm&&this.sm.abort());this.sm||this._smInit(),this.sm.handleSM({msg:msg,type:type});break;case 8:msg=msg.substring(4),msg=CryptoJS.enc.Latin1.parse(msg),msg=msg.toString(CryptoJS.enc.Utf8),this.trigger("file",["receive",sessKeys.extra_symkey,msg])}tlvs=tlvs.substring(4+len)}},OTR.prototype.smpSecret=function(secret,question){return this.msgstate!==CONST.MSGSTATE_ENCRYPTED?this.notify("Must be encrypted for SMP."):"string"!=typeof secret||secret.length<1?this.notify("Secret is required."):(this.sm||this._smInit(),secret=CryptoJS.enc.Utf8.parse(secret).toString(CryptoJS.enc.Latin1),question&&(question=CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1)),void this.sm.rcvSecret(secret,question))},OTR.prototype.sendQueryMsg=function(){var versions={},msg=CONST.OTR_TAG;this.ALLOW_V2&&(versions[2]=!0),this.ALLOW_V3&&(versions[3]=!0);var vs=Object.keys(versions);vs.length&&(msg+="v",vs.forEach(function(v){"1"!==v&&(msg+=v)}),msg+="?"),this.io(msg),this.trigger("status",[CONST.STATUS_SEND_QUERY])},OTR.prototype.sendMsg=function(msg,meta){switch((this.REQUIRE_ENCRYPTION||this.msgstate!==CONST.MSGSTATE_PLAINTEXT)&&(msg=CryptoJS.enc.Utf8.parse(msg),msg=msg.toString(CryptoJS.enc.Latin1)),this.msgstate){case CONST.MSGSTATE_PLAINTEXT:if(this.REQUIRE_ENCRYPTION)return this.storedMgs.push({msg:msg,meta:meta}),void this.sendQueryMsg();this.SEND_WHITESPACE_TAG&&!this.receivedPlaintext&&(msg+=CONST.WHITESPACE_TAG,this.ALLOW_V3&&(msg+=CONST.WHITESPACE_TAG_V3),this.ALLOW_V2&&(msg+=CONST.WHITESPACE_TAG_V2));break;case CONST.MSGSTATE_FINISHED:return this.storedMgs.push({msg:msg,meta:meta}),void this.notify("Message cannot be sent at this time.","warn");case CONST.MSGSTATE_ENCRYPTED:msg=this.prepareMsg(msg);break;default:throw new Error("Unknown message state.")}msg&&this.io(msg,meta)},OTR.prototype.receiveMsg=function(msg,meta){if(msg=Parse.parseMsg(this,msg)){switch(msg.cls){case"error":return void this.notify(msg.msg);case"ake":return msg.version===CONST.OTR_VERSION_3&&this.checkInstanceTags(msg.instance_tags)?void this.notify("Received a message intended for a different session.","warn"):void this.ake.handleAKE(msg);case"data":if(msg.version===CONST.OTR_VERSION_3&&this.checkInstanceTags(msg.instance_tags))return void this.notify("Received a message intended for a different session.","warn");msg.msg=this.handleDataMsg(msg),msg.encrypted=!0;break;case"query":this.msgstate===CONST.MSGSTATE_ENCRYPTED&&this._akeInit(),this.doAKE(msg);break;default:(this.REQUIRE_ENCRYPTION||this.msgstate!==CONST.MSGSTATE_PLAINTEXT)&&this.notify("Received an unencrypted message.","warn"),this.receivedPlaintext=!0,this.WHITESPACE_START_AKE&&msg.ver.length>0&&this.doAKE(msg)}msg.msg&&this.trigger("ui",[msg.msg,!!msg.encrypted,meta])}},OTR.prototype.checkInstanceTags=function(it){var their_it=HLP.readLen(it.substr(0,4)),our_it=HLP.readLen(it.substr(4,4));if(our_it&&our_it!==HLP.readLen(this.our_instance_tag))return!0;if(HLP.readLen(this.their_instance_tag)){if(HLP.readLen(this.their_instance_tag)!==their_it)return!0}else{if(100>their_it)return!0;this.their_instance_tag=HLP.packINT(their_it)}},OTR.prototype.doAKE=function(msg){this.ALLOW_V3&&~msg.ver.indexOf(CONST.OTR_VERSION_3)?this.ake.initiateAKE(CONST.OTR_VERSION_3):this.ALLOW_V2&&~msg.ver.indexOf(CONST.OTR_VERSION_2)?this.ake.initiateAKE(CONST.OTR_VERSION_2):this.notify("OTR conversation requested, but no compatible protocol version found.","warn")},OTR.prototype.error=function(err){this.debug||(err="An OTR error has occurred."),this.io("?OTR Error:"+err),this.notify(err)},OTR.prototype.notify=function(err,severity){this.trigger("error",[err,severity||"error"])},OTR.prototype.sendStored=function(){var self=this;this.storedMgs.splice(0).forEach(function(elem){var msg=self.prepareMsg(elem.msg);self.io(msg,elem.meta)})},OTR.prototype.sendFile=function(filename){if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED)return this.notify("Not ready to encrypt.");if(this.ake.otr_version!==CONST.OTR_VERSION_3)return this.notify("Protocol v3 required.");if(!filename)return this.notify("Please specify a filename.");var l1name=CryptoJS.enc.Utf8.parse(filename);if(l1name=l1name.toString(CryptoJS.enc.Latin1),l1name.length>=65532)return this.notify("Filename is too long.");var msg="\x00";msg+="\x00\b",msg+=HLP.packSHORT(4+l1name.length),msg+="\x00\x00\x00",msg+=l1name,msg=this.prepareMsg(msg,filename),this.io(msg)},OTR.prototype.endOtr=function(cb){this.msgstate===CONST.MSGSTATE_ENCRYPTED&&("function"==typeof cb&&(cb=new OTRCB(cb)),this.sendMsg("\x00\x00\x00\x00",cb),this.sm&&(this.smw&&this.sm.worker.terminate(),this.sm=null)),this.msgstate=CONST.MSGSTATE_PLAINTEXT,this.receivedPlaintext=!1,this.trigger("status",[CONST.STATUS_END_OTR])},OTR.makeInstanceTag=function(){var num=BigInt.randBigInt(32);return BigInt.greater(BigInt.str2bigInt("100",16),num)?OTR.makeInstanceTag():HLP.packINT(parseInt(BigInt.bigInt2str(num,10),10))}}.call(this),{OTR:this.OTR,DSA:this.DSA}});
//# sourceMappingURL=jsxc.dep.min.js.map \ No newline at end of file
diff --git a/build/js/jsxc/lib/jsxc.dep.min.js.map b/build/js/jsxc/lib/jsxc.dep.min.js.map
index 4bb0586..3cabcc4 100644
--- a/build/js/jsxc/lib/jsxc.dep.min.js.map
+++ b/build/js/jsxc/lib/jsxc.dep.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"jsxc.dep.min.js","sources":["jsxc.dep.js"],"names":["b64_sha1","s","binb2b64","core_sha1","str2binb","length","str_sha1","binb2str","b64_hmac_sha1","key","data","core_hmac_sha1","str_hmac_sha1","x","len","i","j","t","olda","oldb","oldc","oldd","olde","w","Array","a","b","c","d","e","rol","safe_add","sha1_ft","sha1_kt","bkey","ipad","opad","hash","concat","y","lsw","msw","num","cnt","str","bin","mask","charCodeAt","String","fromCharCode","binarray","triplet","tab","charAt","Base64","keyStr","obj","encode","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","isNaN","decode","replace","indexOf","MD5","bit_rol","str2binl","binl2str","binl2hex","hex_tab","md5_cmn","q","md5_ff","md5_gg","md5_hh","md5_ii","core_md5","hexdigest","Function","prototype","bind","func","this","_slice","slice","_concat","_args","call","arguments","apply","elt","from","Number","Math","ceil","floor","callback","$build","name","attrs","Strophe","Builder","$msg","$iq","$pres","VERSION","NS","HTTPBIND","BOSH","CLIENT","AUTH","ROSTER","PROFILE","DISCO_INFO","DISCO_ITEMS","MUC","SASL","STREAM","BIND","SESSION","STANZAS","XHTML_IM","XHTML","tags","attributes","blockquote","br","cite","em","img","li","ol","p","span","strong","ul","body","css","validTag","tag","validAttribute","attribute","validCSS","style","Status","ERROR","CONNECTING","CONNFAIL","AUTHENTICATING","AUTHFAIL","CONNECTED","DISCONNECTED","DISCONNECTING","ATTACHED","LogLevel","DEBUG","INFO","WARN","FATAL","ElementType","NORMAL","TEXT","CDATA","FRAGMENT","TIMEOUT","SECONDARY_TIMEOUT","addNamespace","value","forEachChild","elem","elemName","childNode","childNodes","nodeType","isTagEqual","el","tagName","toLowerCase","_xmlGenerator","_makeGenerator","doc","undefined","document","implementation","createDocument","documentMode","_getIEXmlDom","appendChild","createElement","xmlGenerator","docStrings","ActiveXObject","xmlElement","k","node","xmlTextNode","setAttribute","hasOwnProperty","xmlescape","text","createTextNode","xmlHtmlNode","html","window","DOMParser","parser","parseFromString","async","loadXML","getText","nodeValue","copyElement","nodeName","createHtml","cssAttrs","attr","cssName","cssValue","getAttribute","cssText","split","push","join","createDocumentFragment","escapeNode","unescapeNode","getNodeFromJid","jid","getDomainFromJid","bare","getBareJidFromJid","parts","splice","getResourceFromJid","log","debug","msg","info","warn","error","fatal","serialize","result","tree","child","_requestId","_connectionPlugins","addConnectionPlugin","ptype","xmlns","nodeTree","toString","up","parentNode","moreattrs","cnode","impNode","xmlGen","importNode","newElem","h","fragment","innerHTML","xhtml","Handler","handler","ns","type","id","options","matchBare","user","isMatch","nsMatch","that","run","sourceURL","line","message","fileName","console","trace","lineNumber","stack","TimedHandler","period","lastCalled","Date","getTime","reset","Connection","service","proto","protocol","_proto","Websocket","Bosh","domain","features","_sasl_data","do_session","do_bind","timedHandlers","handlers","removeTimeds","removeHandlers","addTimeds","addHandlers","_authentication","_idleTimeout","_disconnectTimeout","do_authentication","authenticated","disconnecting","connected","errors","paused","_data","_uniqueId","_sasl_success_handler","_sasl_failure_handler","_sasl_challenge_handler","maxRetries","setTimeout","_onIdle","F","init","_reset","_requests","pause","resume","getUniqueId","suffix","connect","pass","wait","hold","route","authzid","authcid","servtype","connect_callback","_changeConnectStatus","_connect","attach","sid","rid","wind","_attach","xmlInput","xmlOutput","rawInput","rawOutput","send","_queueData","_send","flush","clearTimeout","sendIQ","errback","timeout","timeoutHandler","addHandler","stanza","deleteTimedHandler","iqtype","addTimedHandler","deleteHandler","element","_sendRestart","thand","handRef","hand","disconnect","reason","pres","_addSysTimedHandler","_onDisconnectTimeout","_disconnect","status","condition","plugin","statusChanged","err","_doDisconnect","_dataRecv","req","raw","_reqToData","strip","pop","_emptyQueue","cond","conflict","typ","getElementsByTagName","newList","mechanisms","_connect_cb","_callback","bodyWrap","conncheck","sasl_scram_sha1","sasl_plain","sasl_digest_md5","sasl_anonymous","legacy_auth","hasFeatures","mech","matched","found_authentication","_no_auth_received","authenticate","higher","priority","swap","mechanism_found","test","_addSysHandler","_sasl_success_cb","_sasl_failure_cb","_sasl_challenge_cb","_sasl_mechanism","onStart","request_auth_exchange","mechanism","isClientFirst","response","onChallenge","_auth1_cb","to","challenge","iq","_auth2_cb","serverSignature","success","attribMatch","matches","match","onSuccess","_sasl_auth1_cb","_sasl_bind_cb","resource","jidNode","_sasl_session_cb","onFailure","since","now","SASLMechanism","connection","_connection","Error","SASLAnonymous","SASLPlain","auth_str","SASLSHA1","test_cnonce","cnonce","random","nonce","salt","iter","Hi","U","U_old","clientKey","serverKey","clientSignature","responseText","authMessage","substr","SASLMD5","_quote","realm","host","qop","digest_uri","A1","A2","Request","sends","xmlData","origFunc","date","NaN","abort","dead","age","timeDead","xhr","_newXHR","getResponse","responseXML","documentElement","XMLHttpRequest","overrideMimeType","onreadystatechange","_conn","_buildBody","jQuery","trigger","xml:lang","content","ver","xmpp:version","xmlns:xmpp","_onRequestStateChange","_throttledRequestHandler","parseInt","_sendTerminate","_hitError","reqStatus","xmpp:restart","_processRequest","time_elapsed","readyState","reqIs0","reqIs1","_removeRequest","_restartRequest","self","primaryTimeout","secondaryTimeout","requestCompletedWithServerError","open","sync","e2","sendFunc","customHeaders","headers","header","setRequestHeader","backoff","min","pow","abs","new_service","location","pathname","_buildStream","xmlns:stream","version","_check_streamerror","connectstatus","textContent","errorString","_closeSocket","socket","WebSocket","onopen","_onOpen","onerror","_onError","onclose","_onClose","onmessage","_connect_cb_wrapper","_handleStreamStart","ns_stream","namespaceURI","streamStart","string","_streamWrap","_onMessage","CLOSED","close","rawStanza","_removeClosingTag","search","firstChild","start","startString","Occupant","RoomConfig","XmppRoom","__bind","fn","me","rooms","roomNames","conn","_muc_handler","room","nick","msg_handler_cb","pres_handler_cb","roster_cb","password","history_attrs","extended_presence","room_nick","_ref","_this","test_append_nick","roomname","xquery","_i","_len","_message_handlers","_presence_handlers","leave","handler_cb","exit_msg","presence","presenceid","html_message","msgid","parent","removeChild","groupchat","invite","receiver","invitation","MUC_USER","directInvite","queryOccupants","success_cb","error_cb","configure","config","MUC_OWNER","cancelConfigure","saveConfiguration","conf","Form","toXML","createInstantRoom","roomiq","setTopic","topic","_modifyPrivilege","item","MUC_ADMIN","modifyRole","role","kick","voice","mute","op","deop","modifyAffiliation","affiliation","ban","member","revoke","owner","admin","changeNick","setStatus","show","listRooms","server","handle_cb","client","_roomRosterHandler","_addOccupant","roster","_roster_handlers","_handler_ids","muc","handler_type","removeHandler","occ","newnick","_parsePresence","update","c2","_j","_len1","_ref1","_ref2","_ref3","_ref4","_ref5","_ref6","_ref7","states","code","parse","field","identity","query","_k","_len2","identities","var","label","_identities","_features","_items","_onDiscoInfo","_onDiscoItems","addIdentity","category","lang","addFeature","var_name","removeFeature","addItem","call_back","items","_buildIQResult","query_attrs","iqresult","$","HASH","_ver","_knownCapabilities","JSON","localStorage","getItem","_jidVerIndex","disco","CAPS","_delegateCapabilities","generateCapsAttrs","generateVer","sort","_sortIdentities","identitiesLen","featuresLen","curIdent","getCapabilitiesByJid","hasFeatureByJid","feature","isArray","makeArray","querySelector","setItem","stringify","_requestCapabilities","_handleDiscoInfoReply","childNodesLen","_attributesToJsObject","buildIq","vCardEl","VCARD","get","set","error_rb","sessions","jid2session","ice_config","iceServers","pc_constraints","media_constraints","mandatory","OfferToReceiveAudio","OfferToReceiveVideo","localStream","onJingle","find","action","ack","sess","peerjid","JingleSession","localStreams","initiate","setRemoteDescription","startmuted","accept","terminate","addIceCandidate","affected","addSource","removeSource","myjid","sendOffer","state","sendTerminate","active","terminateByJid","getStunAndTurnCredentials","res","iceservers","each","idx","dict","url","navigator","userAgent","username","credential","initiator","responder","isInitiator","peerconnection","remoteStream","localSDP","remoteSDP","relayedStreams","remoteStreams","startTime","stopTime","drip_container","usetrickle","usepranswer","usedrip","hadstuncandidate","hadturncandidate","lasticecandidate","statsinterval","addssrc","removessrc","pendingop","nickname","filter_candidates","RTCPeerconnection","onicecandidate","event","sendIceCandidate","candidate","onaddstream","stream","onremovestream","onsignalingstatechange","oniceconnectionstatechange","iceConnectionState","forEach","addStream","pranswer","localDescription","lines","SDPUtil","find_lines","sdp","find_line","prsdp","SDP","toJingle","source","setLocalDescription","RTCSessionDescription","clearInterval","ice","iceparams","media","sdpMLineIndex","session","jcand","candidateToJingle","sendIceCandidates","signalingState","candidates","cand","mid","cands","filter","creator","sdpMid","tmp","parse_fingerprint","required","fingerprint","createOffer","createdOffer","parse_icecandidate","desctype","fromJingle","remoteDescription","remotedesc","cobbled","iscomplete","mediapart","candidateFromJingle","RTCIceCandidate","sendAnswer","provisional","createAnswer","createdAnswer","jingle","getAudioTracks","track","enabled","getVideoTracks","term","ssrc","modifySources","modifiedAnswer","hardMuteVideo","muted","sendMute","sendRinging","getStats","interval","recv","audio","video","lost","lastrecv","lastlost","loss","delta","setInterval","stats","results","packetsrecv","stat","packetslost","shift","mangle","mline","rtpmap","newdesc","parse_mline","fmt","parse_rtpmap","build_mline","removeSessionLines","prefix","removeMediaLines","mediaindex","thecreator","semantics","bundle","substring","parse_mid","parse_fmtp","RtcpFbToJingle","crypto","parse_crypto","ssrclines","linessrc","kv","parse_ssrc","parse_extmap","uri","direction","senders","TransportToJingle","port","fingerprints","setup","payloadtype","parse_rtcpfb","params","subtype","RtcpFbFromJingle","group","contents","map","m","jingle2media","desc","build_iceufrag","build_icepwd","build_rtpmap","mediadesc","sessiondesc","ufrag","parse_iceufrag","pwd","parse_icepwd","frag","clockrate","channels","elems","foundation","component","ip","generation","tcptype","network","build_icecandidate","hasOwnAttribute","pt","haystack","needle","sessionpart","needles","setupRTC","getUserMediaWithConstraints","TraceablePeerConnection","constraints","mozGetUserMedia","mozRTCPeerConnection","webkitRTCPeerConnection","updateLog","maxstats","what","time","onnegotiationneeded","ondatachannel","names","endTime","values","times","dumpSDP","description","__defineGetter__","removeStream","createDataChannel","opts","successCallback","failureCallback","offer","answer","RTC","browser","getUserMedia","attachMediaStream","mozSrcObject","play","MediaStream","mozRTCSessionDescription","mozRTCIceCandidate","webkitGetUserMedia","webkitURL","createObjectURL","optional","DtlsSrtpKeyAgreement","webkitMediaStream","videoTracks","audioTracks","um","resolution","bandwidth","fps","chromeMediaSource","minWidth","minHeight","minAspectRatio","maxFrameRate","minFrameRate","root","factory","define","amd","module","exports","Salsa20","rounds","sigmaWords","keyWords","nonceWords","counterWords","block","blockUsed","setKey","setNonce","getBytes","numberOfBytes","out","_generateBlock","_incrementCounter","getHexString","hex","bytes","u","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","msCrypto","require","BigInt","findPrimes","n","ans","millerRabin","mr_x1","dup","mr_r","mr_a","copy_","addInt_","isZero","bpe","rightShift_","powMod_","equalsInt","equals","squareMod_","bitSize","z","expand","int2bigInt","mod","mod_","trim","mult","mult_","powMod","sub","sub_","add","add_","inverseMod","inverseMod_","multMod","multMod_","randBigInt","randBigInt_","randomBitInt","max","copyInt_","eg_u","eg_v","eg_A","eg_B","eg_C","eg_D","halve_","greater","negative","inverseModInt","greaterShift","kx","ky","divide_","r","y1","y2","leftShift_","subShift_","radix","linCombShift_","addShift_","modInt","bits","minSize","buff","str2bigInt","base","kk","bb","digitsStr","multInt_","bigInt2str","s6","divInt_","ys","ss","s4","s5","s0","k1","k2","kn","np","s7","s3","mont_","one","ui","t2","ks","sa","divMod","den","subMod","two","twoToThe","bigInt2bits","bi","pad","ba","_num2bin","ba2bigInt","mpi","getSeed","randomBytes","randomByte","primes","buf","getRandomValues","Uint8Array","CryptoJS","C","C_lib","lib","Base","extend","overrides","mixIn","$super","create","instance","properties","propertyName","clone","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","nBytes","C_enc","enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","decodeURIComponent","escape","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","_nDataBytes","_append","_process","doFlush","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","_minBufferSize","nWordsReady","nBytesReady","offset","_doProcessBlock","processedWords","C_algo","Hasher","cfg","_doReset","messageUpdate","finalize","_doFinalize","_createHelper","hasher","_createHmacHelper","HMAC","algo","_map","base64Chars","byte1","byte2","byte3","paddingChar","base64Str","base64StrLength","paddingIndex","bits1","bits2","Cipher","EvpKDF","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","_key","process","dataUpdate","finalProcessedData","keySize","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","encrypt","decrypt","ciphertext","C_mode","StreamCipher","finalProcessedBlocks","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","_prevBlock","processBlock","encryptBlock","thisBlock","decryptBlock","C_pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","padding","unpad","CipherParams","BlockCipher","modeCreator","_mode","cipherParams","formatter","C_format","format","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","plaintext","C_kdf","kdf","OpenSSLKdf","execute","compute","derivedParams","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","RCON","AES","nRounds","_nRounds","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","M","_doCryptBlock","s1","s2","round","t0","t1","t3","W","SHA1","_hash","H","nBitsTotal","nBitsLeft","HmacSHA1","K","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","SHA256","f","g","gamma0x","gamma0","gamma1x","gamma1","ch","maj","sigma0","sigma1","HmacSHA256","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","hmac","NoPadding","CTR","counter","_counter","keystream","EventEmitter","indexOfListener","listeners","listener","alias","getListeners","evt","events","_getEvents","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","once","on","addOnceListener","defineEvent","defineEvents","evts","removeListener","index","off","addListeners","manipulateListeners","removeListeners","remove","single","multiple","RegExp","removeEvent","_events","emitEvent","args","_getOnceReturnValue","emit","setOnceReturnValue","_onceReturnValue","OTR","DSA","CONST","N","G","MSGSTATE_PLAINTEXT","MSGSTATE_ENCRYPTED","MSGSTATE_FINISHED","AUTHSTATE_NONE","AUTHSTATE_AWAITING_DHKEY","AUTHSTATE_AWAITING_REVEALSIG","AUTHSTATE_AWAITING_SIG","WHITESPACE_TAG","WHITESPACE_TAG_V2","WHITESPACE_TAG_V3","OTR_TAG","OTR_VERSION_1","OTR_VERSION_2","OTR_VERSION_3","SMPSTATE_EXPECT0","SMPSTATE_EXPECT1","SMPSTATE_EXPECT2","SMPSTATE_EXPECT3","SMPSTATE_EXPECT4","STATUS_SEND_QUERY","STATUS_AKE_INIT","STATUS_AKE_SUCCESS","STATUS_END_OTR","intCompare","HLP","DTS","BYTE","SHORT","INT","MAC","SIG","WRAPPER_BEGIN","WRAPPER_END","TWO","Ctor","constructor","Object","__super__","compare","str1","str2","randomExponent","smpHash","fmpi","smpi","sha256","packBytes","packMPI","bits2bigInt","makeMac","aesctr","mac","make1Mac","encryptAes","aesctr_decoded","decryptAes","multPowMod","ZKP","v","GTOE","between","checkGroup","N_MINUS_2","h1","secbytes","sha1","h2","_toString","val","nex","packINT","packCtr","padCtr","ctr","unpackCtr","toByteArray","unpack","arr","packData","packSHORT","short","unpackSHORT","packTLV","readLen","readData","readMPI","packMPIs","reduce","prv","cur","unpackMPIs","mpis","splitype","wrapMsg","fs","v3","our_it","their_it","its","ei","mf","mfs","_bin2num","rv","ary","iz","remain","timer","makeRandom","isProbPrime","B","l","rpprb","generatePrimes","bit_length","rem","repeat","bit_lengths","LM1","bl4","brk","ONE","pm1","prop","KEY_TYPE","ZERO","nocache","tokenizeStr","end","lastIndexOf","splt","es","parseLibotr","o","Worker","WWPath","__dirname","keys","1024","2048","packPublic","packPrivate","generateNonce","priv","rand","sign","pk","parsePublic","fields","parsePrivate","libotr","dsa","verify","hm","u1","u2","createInWebWorker","cb","path","seed","worker","postMessage","imports","Parse","parseMsg","otr","initFragment","ind","com","msgFragment","vers","2","3","qs","qi","cls","instance_tags","ERROR_START_AKE","sendQueryMsg","checkInstanceTags","hMac","gx","gy","kid","AKE","our_dh","our_old_dh","our_keyid","their_y","their_keyid","their_priv_pk","ssid","transmittedRS","meth","createKeys","privateKey","c_prime","m1","m2","m1_prime","m2_prime","verifySignMac","our_dh_pk","vmac","pub","makeM","publicKey","akeSuccess","their_old_y","sessKeys","DHSession","otr_version","authstate","msgstate","myhashed","dhcommit","encrypted","hashed","sendStored","handleAKE","vsm","ourHash","theirHash","dh","gxmpi","sendMsg","our_instance_tag","their_instance_tag","fragment_size","io","initiateAKE","SM","reqs","our_fp","their_fp","Q","smpstate","secret","makeSecret","our","makeG2s","a2","a3","g2a","g3a","computeGs","g2","g3","computePQ","computeR","QoQ","computeRab","computeC","computeD","handleSM","r2","r3","r7","t4","rab","tmp2","cR","d7","ms","trust","expectStates",4,5,7,"question","g3ao","c3","d2","d3","r4","r5","r6","cP","d5","d6","PoP","rcvSecret","OTRCB","send_interval","outgoing","instance_tag","makeInstanceTag","smw","SMWPath","MAX_INT","MAX_UINT","ALLOW_V2","ALLOW_V3","REQUIRE_ENCRYPTION","SEND_WHITESPACE_TAG","WHITESPACE_START_AKE","storedMgs","oldMacKeys","sm","_akeInit","receivedPlaintext","ake","_SMW","method","_smInit","prepareMsg","meta","first","sq","sendbyte","rcvbyte","sendenc","sendmac","rcvenc","rcvmac","rcvmacused","extra_symkey","send_counter","rcv_counter","rotateOurKeys","sk","rotateTheirKeys","esk","notify","aes","handleDataMsg","vt","types","ign","handleTLVs","tlvs","smpSecret","versions","vs","receiveMsg","doAKE","it","severity","sendFile","filename","l1name","endOtr"],"mappings":"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"} \ No newline at end of file
+{"version":3,"file":"jsxc.dep.min.js","sources":["jsxc.dep.js"],"names":["b64_sha1","s","binb2b64","core_sha1","str2binb","length","str_sha1","binb2str","b64_hmac_sha1","key","data","core_hmac_sha1","str_hmac_sha1","x","len","i","j","t","olda","oldb","oldc","oldd","olde","w","Array","a","b","c","d","e","rol","safe_add","sha1_ft","sha1_kt","bkey","ipad","opad","hash","concat","y","lsw","msw","num","cnt","str","bin","mask","charCodeAt","String","fromCharCode","binarray","triplet","tab","charAt","Base64","keyStr","obj","encode","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","isNaN","decode","replace","indexOf","MD5","bit_rol","str2binl","binl2str","binl2hex","hex_tab","md5_cmn","q","md5_ff","md5_gg","md5_hh","md5_ii","core_md5","hexdigest","Function","prototype","bind","func","this","_slice","slice","_concat","_args","call","arguments","apply","elt","from","Number","Math","ceil","floor","callback","$build","name","attrs","Strophe","Builder","$msg","$iq","$pres","VERSION","NS","HTTPBIND","BOSH","CLIENT","AUTH","ROSTER","PROFILE","DISCO_INFO","DISCO_ITEMS","MUC","SASL","STREAM","BIND","SESSION","STANZAS","XHTML_IM","XHTML","tags","attributes","blockquote","br","cite","em","img","li","ol","p","span","strong","ul","body","css","validTag","tag","validAttribute","attribute","validCSS","style","Status","ERROR","CONNECTING","CONNFAIL","AUTHENTICATING","AUTHFAIL","CONNECTED","DISCONNECTED","DISCONNECTING","ATTACHED","LogLevel","DEBUG","INFO","WARN","FATAL","ElementType","NORMAL","TEXT","CDATA","FRAGMENT","TIMEOUT","SECONDARY_TIMEOUT","addNamespace","value","forEachChild","elem","elemName","childNode","childNodes","nodeType","isTagEqual","el","tagName","toLowerCase","_xmlGenerator","_makeGenerator","doc","undefined","document","implementation","createDocument","documentMode","_getIEXmlDom","appendChild","createElement","xmlGenerator","docStrings","ActiveXObject","xmlElement","k","node","xmlTextNode","setAttribute","hasOwnProperty","xmlescape","text","createTextNode","xmlHtmlNode","html","window","DOMParser","parser","parseFromString","async","loadXML","getText","nodeValue","copyElement","nodeName","createHtml","cssAttrs","attr","cssName","cssValue","getAttribute","cssText","split","push","join","createDocumentFragment","escapeNode","unescapeNode","getNodeFromJid","jid","getDomainFromJid","bare","getBareJidFromJid","parts","splice","getResourceFromJid","log","debug","msg","info","warn","error","fatal","serialize","result","tree","child","_requestId","_connectionPlugins","addConnectionPlugin","ptype","xmlns","nodeTree","toString","up","parentNode","moreattrs","cnode","impNode","xmlGen","importNode","newElem","h","fragment","innerHTML","xhtml","Handler","handler","ns","type","id","options","matchBare","user","isMatch","nsMatch","that","run","sourceURL","line","message","fileName","console","trace","lineNumber","stack","TimedHandler","period","lastCalled","Date","getTime","reset","Connection","service","proto","protocol","_proto","Websocket","Bosh","domain","features","_sasl_data","do_session","do_bind","timedHandlers","handlers","removeTimeds","removeHandlers","addTimeds","addHandlers","_authentication","_idleTimeout","_disconnectTimeout","do_authentication","authenticated","disconnecting","connected","errors","paused","_data","_uniqueId","_sasl_success_handler","_sasl_failure_handler","_sasl_challenge_handler","maxRetries","setTimeout","_onIdle","F","init","_reset","_requests","pause","resume","getUniqueId","suffix","connect","pass","wait","hold","route","authzid","authcid","servtype","connect_callback","_changeConnectStatus","_connect","attach","sid","rid","wind","_attach","xmlInput","xmlOutput","rawInput","rawOutput","send","_queueData","_send","flush","clearTimeout","sendIQ","errback","timeout","timeoutHandler","addHandler","stanza","deleteTimedHandler","iqtype","addTimedHandler","deleteHandler","element","_sendRestart","thand","handRef","hand","disconnect","reason","pres","_addSysTimedHandler","_onDisconnectTimeout","_disconnect","status","condition","plugin","statusChanged","err","_doDisconnect","_dataRecv","req","raw","_reqToData","strip","pop","_emptyQueue","cond","conflict","typ","getElementsByTagName","newList","mechanisms","_connect_cb","_callback","bodyWrap","conncheck","sasl_scram_sha1","sasl_plain","sasl_digest_md5","sasl_anonymous","legacy_auth","hasFeatures","mech","matched","found_authentication","_no_auth_received","authenticate","higher","priority","swap","mechanism_found","test","_addSysHandler","_sasl_success_cb","_sasl_failure_cb","_sasl_challenge_cb","_sasl_mechanism","onStart","request_auth_exchange","mechanism","isClientFirst","response","onChallenge","_auth1_cb","to","challenge","iq","_auth2_cb","serverSignature","success","attribMatch","matches","match","onSuccess","_sasl_auth1_cb","_sasl_bind_cb","resource","jidNode","_sasl_session_cb","onFailure","since","now","SASLMechanism","connection","_connection","Error","SASLAnonymous","SASLPlain","auth_str","SASLSHA1","test_cnonce","cnonce","random","nonce","salt","iter","Hi","U","U_old","clientKey","serverKey","clientSignature","responseText","authMessage","substr","SASLMD5","_quote","realm","host","qop","digest_uri","A1","A2","Request","sends","xmlData","origFunc","date","NaN","abort","dead","age","timeDead","xhr","_newXHR","getResponse","responseXML","documentElement","XMLHttpRequest","overrideMimeType","onreadystatechange","_conn","_buildBody","jQuery","trigger","xml:lang","content","ver","xmpp:version","xmlns:xmpp","_onRequestStateChange","_throttledRequestHandler","parseInt","_sendTerminate","_hitError","reqStatus","xmpp:restart","_processRequest","time_elapsed","readyState","reqIs0","reqIs1","_removeRequest","_restartRequest","self","primaryTimeout","secondaryTimeout","requestCompletedWithServerError","open","sync","e2","sendFunc","customHeaders","headers","header","setRequestHeader","backoff","min","pow","abs","new_service","location","pathname","_buildStream","xmlns:stream","version","_check_streamerror","connectstatus","textContent","errorString","_closeSocket","socket","WebSocket","onopen","_onOpen","onerror","_onError","onclose","_onClose","onmessage","_connect_cb_wrapper","_handleStreamStart","ns_stream","namespaceURI","streamStart","string","_streamWrap","_onMessage","CLOSED","close","rawStanza","_removeClosingTag","search","firstChild","start","startString","Occupant","RoomConfig","XmppRoom","__bind","fn","me","rooms","roomNames","conn","_muc_handler","room","nick","msg_handler_cb","pres_handler_cb","roster_cb","password","history_attrs","extended_presence","room_nick","_ref","_this","test_append_nick","roomname","xquery","_i","_len","_message_handlers","_presence_handlers","leave","handler_cb","exit_msg","presence","presenceid","html_message","msgid","parent","removeChild","groupchat","invite","receiver","invitation","MUC_USER","directInvite","queryOccupants","success_cb","error_cb","configure","config","MUC_OWNER","cancelConfigure","saveConfiguration","conf","Form","toXML","createInstantRoom","roomiq","setTopic","topic","_modifyPrivilege","item","MUC_ADMIN","modifyRole","role","kick","voice","mute","op","deop","modifyAffiliation","affiliation","ban","member","revoke","owner","admin","changeNick","setStatus","show","listRooms","server","handle_cb","client","_roomRosterHandler","_addOccupant","roster","_roster_handlers","_handler_ids","muc","handler_type","removeHandler","occ","newnick","_parsePresence","update","c2","_j","_len1","_ref1","_ref2","_ref3","_ref4","_ref5","_ref6","_ref7","states","code","parse","field","identity","query","_k","_len2","identities","var","label","_identities","_features","_items","_onDiscoInfo","_onDiscoItems","addIdentity","category","lang","addFeature","var_name","removeFeature","addItem","call_back","items","_buildIQResult","query_attrs","iqresult","$","HASH","_ver","_knownCapabilities","JSON","localStorage","getItem","_jidVerIndex","disco","CAPS","_delegateCapabilities","generateCapsAttrs","generateVer","sort","_sortIdentities","identitiesLen","featuresLen","curIdent","getCapabilitiesByJid","hasFeatureByJid","feature","isArray","makeArray","querySelector","setItem","stringify","_requestCapabilities","_handleDiscoInfoReply","childNodesLen","_attributesToJsObject","buildIq","vCardEl","VCARD","get","set","error_rb","sessions","jid2session","ice_config","iceServers","pc_constraints","media_constraints","mandatory","OfferToReceiveAudio","OfferToReceiveVideo","localStream","onJingle","find","action","ack","sess","peerjid","JingleSession","localStreams","initiate","setRemoteDescription","startmuted","accept","terminate","addIceCandidate","affected","addSource","removeSource","myjid","sendOffer","state","sendTerminate","active","terminateByJid","getStunAndTurnCredentials","res","iceservers","each","idx","dict","url","navigator","userAgent","username","credential","initiator","responder","isInitiator","peerconnection","remoteStream","localSDP","remoteSDP","relayedStreams","remoteStreams","startTime","stopTime","drip_container","usetrickle","usepranswer","usedrip","hadstuncandidate","hadturncandidate","lasticecandidate","statsinterval","addssrc","removessrc","pendingop","nickname","filter_candidates","RTCPeerconnection","onicecandidate","event","sendIceCandidate","candidate","onaddstream","stream","onremovestream","onsignalingstatechange","oniceconnectionstatechange","iceConnectionState","forEach","addStream","pranswer","localDescription","lines","SDPUtil","find_lines","sdp","find_line","prsdp","SDP","toJingle","source","setLocalDescription","RTCSessionDescription","clearInterval","ice","iceparams","media","sdpMLineIndex","session","jcand","candidateToJingle","sendIceCandidates","signalingState","candidates","cand","mid","cands","filter","creator","sdpMid","tmp","parse_fingerprint","required","fingerprint","createOffer","createdOffer","parse_icecandidate","desctype","fromJingle","remoteDescription","remotedesc","cobbled","iscomplete","mediapart","candidateFromJingle","RTCIceCandidate","sendAnswer","provisional","createAnswer","createdAnswer","jingle","getAudioTracks","track","enabled","getVideoTracks","term","ssrc","modifySources","modifiedAnswer","hardMuteVideo","muted","sendMute","sendRinging","getStats","interval","recv","audio","video","lost","lastrecv","lastlost","loss","delta","setInterval","stats","results","packetsrecv","stat","packetslost","shift","mangle","mline","rtpmap","newdesc","parse_mline","fmt","parse_rtpmap","build_mline","removeSessionLines","prefix","removeMediaLines","mediaindex","thecreator","semantics","bundle","substring","parse_mid","parse_fmtp","RtcpFbToJingle","crypto","parse_crypto","ssrclines","linessrc","kv","parse_ssrc","parse_extmap","uri","direction","senders","TransportToJingle","port","fingerprints","setup","payloadtype","parse_rtcpfb","params","subtype","RtcpFbFromJingle","group","contents","map","m","jingle2media","desc","build_iceufrag","build_icepwd","build_rtpmap","mediadesc","sessiondesc","ufrag","parse_iceufrag","pwd","parse_icepwd","frag","clockrate","channels","elems","foundation","component","ip","generation","tcptype","network","build_icecandidate","hasOwnAttribute","pt","haystack","needle","sessionpart","needles","setupRTC","getUserMediaWithConstraints","TraceablePeerConnection","constraints","mozGetUserMedia","mozRTCPeerConnection","webkitRTCPeerConnection","updateLog","maxstats","what","time","onnegotiationneeded","ondatachannel","names","endTime","values","times","dumpSDP","description","__defineGetter__","removeStream","createDataChannel","opts","successCallback","failureCallback","offer","answer","RTC","browser","getUserMedia","attachMediaStream","mozSrcObject","play","MediaStream","mozRTCSessionDescription","mozRTCIceCandidate","webkitGetUserMedia","webkitURL","createObjectURL","optional","DtlsSrtpKeyAgreement","webkitMediaStream","videoTracks","audioTracks","um","resolution","bandwidth","fps","chromeMediaSource","minWidth","minHeight","minAspectRatio","maxFrameRate","minFrameRate","root","factory","define","amd","module","exports","Salsa20","rounds","sigmaWords","keyWords","nonceWords","counterWords","block","blockUsed","setKey","setNonce","getBytes","numberOfBytes","out","_generateBlock","_incrementCounter","getHexString","hex","bytes","u","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","msCrypto","require","BigInt","findPrimes","n","ans","millerRabin","mr_x1","dup","mr_r","mr_a","copy_","addInt_","isZero","bpe","rightShift_","powMod_","equalsInt","equals","squareMod_","bitSize","z","expand","int2bigInt","mod","mod_","trim","mult","mult_","powMod","sub","sub_","add","add_","inverseMod","inverseMod_","multMod","multMod_","randBigInt","randBigInt_","randomBitInt","max","copyInt_","eg_u","eg_v","eg_A","eg_B","eg_C","eg_D","halve_","greater","negative","inverseModInt","greaterShift","kx","ky","divide_","r","y1","y2","leftShift_","subShift_","radix","linCombShift_","addShift_","modInt","bits","minSize","buff","str2bigInt","base","kk","bb","digitsStr","multInt_","bigInt2str","s6","divInt_","ys","ss","s4","s5","s0","k1","k2","kn","np","s7","s3","mont_","one","ui","t2","ks","sa","divMod","den","subMod","two","twoToThe","bigInt2bits","bi","pad","ba","_num2bin","ba2bigInt","mpi","getSeed","randomBytes","randomByte","primes","buf","getRandomValues","Uint8Array","CryptoJS","C","C_lib","lib","Base","extend","overrides","mixIn","$super","create","instance","properties","propertyName","clone","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","nBytes","C_enc","enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","decodeURIComponent","escape","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","_nDataBytes","_append","_process","doFlush","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","_minBufferSize","nWordsReady","nBytesReady","offset","_doProcessBlock","processedWords","C_algo","Hasher","cfg","_doReset","messageUpdate","finalize","_doFinalize","_createHelper","hasher","_createHmacHelper","HMAC","algo","_map","base64Chars","byte1","byte2","byte3","paddingChar","base64Str","base64StrLength","paddingIndex","bits1","bits2","Cipher","EvpKDF","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","_key","process","dataUpdate","finalProcessedData","keySize","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","encrypt","decrypt","ciphertext","C_mode","StreamCipher","finalProcessedBlocks","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","_prevBlock","processBlock","encryptBlock","thisBlock","decryptBlock","C_pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","padding","unpad","CipherParams","BlockCipher","modeCreator","_mode","cipherParams","formatter","C_format","format","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","plaintext","C_kdf","kdf","OpenSSLKdf","execute","compute","derivedParams","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","RCON","AES","nRounds","_nRounds","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","M","_doCryptBlock","s1","s2","round","t0","t1","t3","W","SHA1","_hash","H","nBitsTotal","nBitsLeft","HmacSHA1","K","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","SHA256","f","g","gamma0x","gamma0","gamma1x","gamma1","ch","maj","sigma0","sigma1","HmacSHA256","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","hmac","NoPadding","CTR","counter","_counter","keystream","EventEmitter","indexOfListener","listeners","listener","alias","getListeners","evt","events","_getEvents","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","once","on","addOnceListener","defineEvent","defineEvents","evts","removeListener","index","off","addListeners","manipulateListeners","removeListeners","remove","single","multiple","RegExp","removeEvent","_events","emitEvent","args","_getOnceReturnValue","emit","setOnceReturnValue","_onceReturnValue","OTR","DSA","CONST","N","G","MSGSTATE_PLAINTEXT","MSGSTATE_ENCRYPTED","MSGSTATE_FINISHED","AUTHSTATE_NONE","AUTHSTATE_AWAITING_DHKEY","AUTHSTATE_AWAITING_REVEALSIG","AUTHSTATE_AWAITING_SIG","WHITESPACE_TAG","WHITESPACE_TAG_V2","WHITESPACE_TAG_V3","OTR_TAG","OTR_VERSION_1","OTR_VERSION_2","OTR_VERSION_3","SMPSTATE_EXPECT0","SMPSTATE_EXPECT1","SMPSTATE_EXPECT2","SMPSTATE_EXPECT3","SMPSTATE_EXPECT4","STATUS_SEND_QUERY","STATUS_AKE_INIT","STATUS_AKE_SUCCESS","STATUS_END_OTR","intCompare","HLP","DTS","BYTE","SHORT","INT","MAC","SIG","WRAPPER_BEGIN","WRAPPER_END","TWO","Ctor","constructor","Object","__super__","compare","str1","str2","randomExponent","smpHash","fmpi","smpi","sha256","packBytes","packMPI","bits2bigInt","makeMac","aesctr","mac","make1Mac","encryptAes","aesctr_decoded","decryptAes","multPowMod","ZKP","v","GTOE","between","checkGroup","N_MINUS_2","h1","secbytes","sha1","h2","_toString","val","nex","packINT","packCtr","padCtr","ctr","unpackCtr","toByteArray","unpack","arr","packData","packSHORT","short","unpackSHORT","packTLV","readLen","readData","readMPI","packMPIs","reduce","prv","cur","unpackMPIs","mpis","splitype","wrapMsg","fs","v3","our_it","their_it","its","ei","mf","mfs","_bin2num","rv","ary","iz","remain","timer","makeRandom","isProbPrime","B","l","rpprb","generatePrimes","bit_length","rem","repeat","bit_lengths","LM1","bl4","brk","ONE","pm1","prop","KEY_TYPE","ZERO","nocache","tokenizeStr","end","lastIndexOf","splt","es","parseLibotr","o","Worker","WWPath","__dirname","keys","1024","2048","packPublic","packPrivate","generateNonce","priv","rand","sign","pk","parsePublic","fields","parsePrivate","libotr","dsa","verify","hm","u1","u2","createInWebWorker","cb","path","seed","worker","postMessage","imports","Parse","parseMsg","otr","initFragment","ind","com","msgFragment","vers","2","3","qs","qi","cls","instance_tags","ERROR_START_AKE","sendQueryMsg","checkInstanceTags","hMac","gx","gy","kid","AKE","our_dh","our_old_dh","our_keyid","their_y","their_keyid","their_priv_pk","ssid","transmittedRS","meth","createKeys","privateKey","c_prime","m1","m2","m1_prime","m2_prime","verifySignMac","our_dh_pk","vmac","pub","makeM","publicKey","akeSuccess","their_old_y","sessKeys","DHSession","otr_version","authstate","msgstate","myhashed","dhcommit","encrypted","hashed","sendStored","handleAKE","vsm","ourHash","theirHash","dh","gxmpi","sendMsg","our_instance_tag","their_instance_tag","fragment_size","io","initiateAKE","SM","reqs","our_fp","their_fp","Q","smpstate","secret","makeSecret","our","makeG2s","a2","a3","g2a","g3a","computeGs","g2","g3","computePQ","computeR","QoQ","computeRab","computeC","computeD","handleSM","r2","r3","r7","t4","rab","tmp2","cR","d7","ms","trust","expectStates",4,5,7,"question","g3ao","c3","d2","d3","r4","r5","r6","cP","d5","d6","PoP","rcvSecret","OTRCB","send_interval","outgoing","instance_tag","makeInstanceTag","smw","SMWPath","MAX_INT","MAX_UINT","ALLOW_V2","ALLOW_V3","REQUIRE_ENCRYPTION","SEND_WHITESPACE_TAG","WHITESPACE_START_AKE","storedMgs","oldMacKeys","sm","_akeInit","receivedPlaintext","ake","_SMW","method","_smInit","prepareMsg","meta","first","sq","sendbyte","rcvbyte","sendenc","sendmac","rcvenc","rcvmac","rcvmacused","extra_symkey","send_counter","rcv_counter","rotateOurKeys","sk","rotateTheirKeys","esk","notify","aes","handleDataMsg","vt","types","ign","handleTLVs","tlvs","smpSecret","versions","vs","receiveMsg","doAKE","it","severity","sendFile","filename","l1name","endOtr"],"mappings":"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"} \ No newline at end of file
diff --git a/build/js/jsxc/lib/otr/build/otr.js b/build/js/jsxc/lib/otr/build/otr.js
index 418ac3d..c2d3226 100644
--- a/build/js/jsxc/lib/otr/build/otr.js
+++ b/build/js/jsxc/lib/otr/build/otr.js
@@ -1,7 +1,7 @@
/*!
- otr.js v0.2.13 - 2014-09-07
- (c) 2014 - Arlo Breault <arlolra@gmail.com>
+ otr.js v0.2.14 - 2015-01-16
+ (c) 2015 - Arlo Breault <arlolra@gmail.com>
Freely distributed under the MPL v2.0 license.
This file is concatenated for the browser.
@@ -1620,10 +1620,12 @@
this.smpstate = CONST.SMPSTATE_EXPECT0
- // assume utf8 question
- question = CryptoJS.enc.Latin1
- .parse(question)
- .toString(CryptoJS.enc.Utf8)
+ if (question) {
+ // assume utf8 question
+ question = CryptoJS.enc.Latin1
+ .parse(question)
+ .toString(CryptoJS.enc.Utf8)
+ }
// invoke question
this.trigger('question', [question])
@@ -2410,7 +2412,8 @@
// utf8 inputs
secret = CryptoJS.enc.Utf8.parse(secret).toString(CryptoJS.enc.Latin1)
- question = CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1)
+ if (question)
+ question = CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1)
this.sm.rcvSecret(secret, question)
}
@@ -2473,7 +2476,7 @@
if (msg) this.io(msg, meta)
}
- OTR.prototype.receiveMsg = function (msg) {
+ OTR.prototype.receiveMsg = function (msg, meta) {
// parse type
msg = Parse.parseMsg(this, msg)
@@ -2524,7 +2527,7 @@
this.doAKE(msg)
}
- if (msg.msg) this.trigger('ui', [msg.msg, !!msg.encrypted])
+ if (msg.msg) this.trigger('ui', [msg.msg, !!msg.encrypted, meta])
}
OTR.prototype.checkInstanceTags = function (it) {
diff --git a/build/js/jsxc/lib/otr/build/otr.min.js b/build/js/jsxc/lib/otr/build/otr.min.js
index 2173bc9..7d48baf 100644
--- a/build/js/jsxc/lib/otr/build/otr.min.js
+++ b/build/js/jsxc/lib/otr/build/otr.min.js
@@ -1,7 +1,7 @@
/*!
- otr.js v0.2.13 - 2014-09-07
- (c) 2014 - Arlo Breault <arlolra@gmail.com>
+ otr.js v0.2.14 - 2015-01-16
+ (c) 2015 - Arlo Breault <arlolra@gmail.com>
Freely distributed under the MPL v2.0 license.
This file is concatenated for the browser.
@@ -9,5 +9,5 @@
*/
-!function(root,factory){"function"==typeof define&&define.amd?define(["bigint","crypto","eventemitter"],function(BigInt,CryptoJS,EventEmitter){var root={BigInt:BigInt,CryptoJS:CryptoJS,EventEmitter:EventEmitter,OTR:{},DSA:{}};return factory.call(root)}):(root.OTR={},root.DSA={},factory.call(root))}(this,function(){return function(){"use strict";var root=this,CONST={N:"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF",G:"2",MSGSTATE_PLAINTEXT:0,MSGSTATE_ENCRYPTED:1,MSGSTATE_FINISHED:2,AUTHSTATE_NONE:0,AUTHSTATE_AWAITING_DHKEY:1,AUTHSTATE_AWAITING_REVEALSIG:2,AUTHSTATE_AWAITING_SIG:3,WHITESPACE_TAG:" ",WHITESPACE_TAG_V2:" ",WHITESPACE_TAG_V3:" ",OTR_TAG:"?OTR",OTR_VERSION_1:"\x00",OTR_VERSION_2:"\x00",OTR_VERSION_3:"\x00",SMPSTATE_EXPECT0:0,SMPSTATE_EXPECT1:1,SMPSTATE_EXPECT2:2,SMPSTATE_EXPECT3:3,SMPSTATE_EXPECT4:4,STATUS_SEND_QUERY:0,STATUS_AKE_INIT:1,STATUS_AKE_SUCCESS:2,STATUS_END_OTR:3};"undefined"!=typeof module&&module.exports?module.exports=CONST:root.OTR.CONST=CONST}.call(this),function(){"use strict";function intCompare(x,y){var z=~(x^y);return z&=z>>16,z&=z>>8,z&=z>>4,z&=z>>2,z&=z>>1,1&z}var CryptoJS,BigInt,root=this,HLP={};"undefined"!=typeof module&&module.exports?(module.exports=HLP={},CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js")):(root.OTR&&(root.OTR.HLP=HLP),root.DSA&&(root.DSA.HLP=HLP),CryptoJS=root.CryptoJS,BigInt=root.BigInt);var DTS={BYTE:1,SHORT:2,INT:4,CTR:8,MAC:20,SIG:40},WRAPPER_BEGIN="?OTR",WRAPPER_END=".",TWO=BigInt.str2bigInt("2",10);HLP.debug=function(msg){this.debug&&"function"!=typeof this.debug&&"undefined"!=typeof console&&console.log(msg)},HLP.extend=function(child,parent){function Ctor(){this.constructor=child}for(var key in parent)Object.hasOwnProperty.call(parent,key)&&(child[key]=parent[key]);Ctor.prototype=parent.prototype,child.prototype=new Ctor,child.__super__=parent.prototype},HLP.compare=function(str1,str2){if(str1.length!==str2.length)return!1;for(var i=0,result=0;i<str1.length;i++)result|=str1[i].charCodeAt(0)^str2[i].charCodeAt(0);return intCompare(result,0)},HLP.randomExponent=function(){return BigInt.randBigInt(1536)},HLP.smpHash=function(version,fmpi,smpi){var sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(HLP.packBytes(version,DTS.BYTE))),sha256.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(fmpi))),smpi&&sha256.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(smpi)));var hash=sha256.finalize();return HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1))},HLP.makeMac=function(aesctr,m){var pass=CryptoJS.enc.Latin1.parse(m),mac=CryptoJS.HmacSHA256(CryptoJS.enc.Latin1.parse(aesctr),pass);return HLP.mask(mac.toString(CryptoJS.enc.Latin1),0,160)},HLP.make1Mac=function(aesctr,m){var pass=CryptoJS.enc.Latin1.parse(m),mac=CryptoJS.HmacSHA1(CryptoJS.enc.Latin1.parse(aesctr),pass);return mac.toString(CryptoJS.enc.Latin1)},HLP.encryptAes=function(msg,c,iv){var opts={mode:CryptoJS.mode.CTR,iv:CryptoJS.enc.Latin1.parse(iv),padding:CryptoJS.pad.NoPadding},aesctr=CryptoJS.AES.encrypt(msg,CryptoJS.enc.Latin1.parse(c),opts),aesctr_decoded=CryptoJS.enc.Base64.parse(aesctr.toString());return CryptoJS.enc.Latin1.stringify(aesctr_decoded)},HLP.decryptAes=function(msg,c,iv){msg=CryptoJS.enc.Latin1.parse(msg);var opts={mode:CryptoJS.mode.CTR,iv:CryptoJS.enc.Latin1.parse(iv),padding:CryptoJS.pad.NoPadding};return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(msg),CryptoJS.enc.Latin1.parse(c),opts)},HLP.multPowMod=function(a,b,c,d,e){return BigInt.multMod(BigInt.powMod(a,b,e),BigInt.powMod(c,d,e),e)},HLP.ZKP=function(v,c,d,e){return BigInt.equals(c,HLP.smpHash(v,d,e))},HLP.GTOE=function(a,b){return BigInt.equals(a,b)||BigInt.greater(a,b)},HLP.between=function(x,a,b){return BigInt.greater(x,a)&&BigInt.greater(b,x)},HLP.checkGroup=function(g,N_MINUS_2){return HLP.GTOE(g,TWO)&&HLP.GTOE(N_MINUS_2,g)},HLP.h1=function(b,secbytes){var sha1=CryptoJS.algo.SHA1.create();return sha1.update(CryptoJS.enc.Latin1.parse(b)),sha1.update(CryptoJS.enc.Latin1.parse(secbytes)),sha1.finalize().toString(CryptoJS.enc.Latin1)},HLP.h2=function(b,secbytes){var sha256=CryptoJS.algo.SHA256.create();return sha256.update(CryptoJS.enc.Latin1.parse(b)),sha256.update(CryptoJS.enc.Latin1.parse(secbytes)),sha256.finalize().toString(CryptoJS.enc.Latin1)},HLP.mask=function(bytes,start,n){return bytes.substr(start/8,n/8)};var _toString=String.fromCharCode;HLP.packBytes=function(val,bytes){val=val.toString(16);for(var nex,res="";bytes>0;bytes--)nex=val.length?val.substr(-2,2):"0",val=val.substr(0,val.length-2),res=_toString(parseInt(nex,16))+res;return res},HLP.packINT=function(d){return HLP.packBytes(d,DTS.INT)},HLP.packCtr=function(d){return HLP.padCtr(HLP.packBytes(d,DTS.CTR))},HLP.padCtr=function(ctr){return ctr+"\x00\x00\x00\x00\x00\x00\x00\x00"},HLP.unpackCtr=function(d){return d=HLP.toByteArray(d.substring(0,8)),HLP.unpack(d)},HLP.unpack=function(arr){for(var val=0,i=0,len=arr.length;len>i;i++)val=256*val+arr[i];return val},HLP.packData=function(d){return HLP.packINT(d.length)+d},HLP.bits2bigInt=function(bits){return bits=HLP.toByteArray(bits),BigInt.ba2bigInt(bits)},HLP.packMPI=function(mpi){return HLP.packData(BigInt.bigInt2bits(BigInt.trim(mpi,0)))},HLP.packSHORT=function(short){return HLP.packBytes(short,DTS.SHORT)},HLP.unpackSHORT=function(short){return short=HLP.toByteArray(short),HLP.unpack(short)},HLP.packTLV=function(type,value){return HLP.packSHORT(type)+HLP.packSHORT(value.length)+value},HLP.readLen=function(msg){return msg=HLP.toByteArray(msg.substring(0,4)),HLP.unpack(msg)},HLP.readData=function(data){var n=HLP.unpack(data.splice(0,4));return[n,data]},HLP.readMPI=function(data){return data=HLP.toByteArray(data),data=HLP.readData(data),BigInt.ba2bigInt(data[1])},HLP.packMPIs=function(arr){return arr.reduce(function(prv,cur){return prv+HLP.packMPI(cur)},"")},HLP.unpackMPIs=function(num,mpis){for(var i=0,arr=[];num>i;i++)arr.push("MPI");return HLP.splitype(arr,mpis).map(function(m){return HLP.readMPI(m)})},HLP.wrapMsg=function(msg,fs,v3,our_it,their_it){msg=CryptoJS.enc.Base64.stringify(CryptoJS.enc.Latin1.parse(msg)),msg=WRAPPER_BEGIN+":"+msg+WRAPPER_END;var its;if(v3&&(its="|",its+=HLP.readLen(our_it).toString(16),its+="|",its+=HLP.readLen(their_it).toString(16)),!fs)return[null,msg];var n=Math.ceil(msg.length/fs);if(n>65535)return["Too many fragments"];if(1==n)return[null,msg];var k,bi,ei,frag,mf,mfs=[];for(k=1;n>=k;k++)bi=(k-1)*fs,ei=k*fs,frag=msg.slice(bi,ei),mf=WRAPPER_BEGIN,v3&&(mf+=its),mf+=","+k+",",mf+=n+",",mf+=frag+",",mfs.push(mf);return[null,mfs]},HLP.splitype=function splitype(arr,msg){var data=[];return arr.forEach(function(a){var str;switch(a){case"PUBKEY":str=splitype(["SHORT","MPI","MPI","MPI","MPI"],msg).join("");break;case"DATA":case"MPI":str=msg.substring(0,HLP.readLen(msg)+4);break;default:str=msg.substring(0,DTS[a])}data.push(str),msg=msg.substring(str.length)}),data};var _bin2num=function(){for(var i=0,_bin2num={};256>i;++i)_bin2num[String.fromCharCode(i)]=i;for(i=128;256>i;++i)_bin2num[String.fromCharCode(63232+i)]=i;return _bin2num}();HLP.toByteArray=function(data){for(var rv=[],ary=data.split(""),i=-1,iz=ary.length,remain=iz%8;remain--;)++i,rv[i]=_bin2num[ary[i]];for(remain=iz>>3;remain--;)rv.push(_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]]);return rv}}.call(this),function(){"use strict";function timer(){var start=(new Date).getTime();return function(s){if(DEBUG&&"undefined"!=typeof console){var t=(new Date).getTime();console.log(s+": "+(t-start)),start=t}}}function makeRandom(min,max){var c=BigInt.randBigInt(BigInt.bitSize(max));return HLP.between(c,min,max)?c:makeRandom(min,max)}function isProbPrime(k,n){var i,B=3e4,l=BigInt.bitSize(k),primes=BigInt.primes;for(0===primes.length&&(primes=BigInt.findPrimes(B)),rpprb.length!=k.length&&(rpprb=BigInt.dup(k)),i=0;i<primes.length&&primes[i]<=B;i++)if(0===BigInt.modInt(k,primes[i])&&!BigInt.equalsInt(k,primes[i]))return 0;for(i=0;n>i;i++){for(BigInt.randBigInt_(rpprb,l,0);!BigInt.greater(k,rpprb);)BigInt.randBigInt_(rpprb,l,0);if(!BigInt.millerRabin(k,rpprb))return 0}return 1}function generatePrimes(bit_length){for(var q,p,rem,counter,t=timer(),repeat=bit_lengths[bit_length].repeat,N=bit_lengths[bit_length].N,LM1=BigInt.twoToThe(bit_length-1),bl4=4*bit_length,brk=!1;;)if(q=BigInt.randBigInt(N,1),q[0]|=1,isProbPrime(q,repeat)){for(t("q"),counter=0;bl4>counter;counter++)if(p=BigInt.randBigInt(bit_length,1),p[0]|=1,rem=BigInt.mod(p,q),rem=BigInt.sub(rem,ONE),p=BigInt.sub(p,rem),!BigInt.greater(LM1,p)&&isProbPrime(p,repeat)){t("p"),primes[bit_length]={p:p,q:q},brk=!0;break}if(brk)break}for(var g,h=BigInt.dup(TWO),pm1=BigInt.sub(p,ONE),e=BigInt.multMod(pm1,BigInt.inverseMod(q,p),p);;){g=BigInt.powMod(h,e,p);{if(!BigInt.equals(g,ONE))return primes[bit_length].g=g,void t("g");h=BigInt.add(h,ONE)}}throw new Error("Unreachable!")}function DSA(obj,opts){if(!(this instanceof DSA))return new DSA(obj,opts);if(opts=opts||{},obj){var self=this;return["p","q","g","y","x"].forEach(function(prop){self[prop]=obj[prop]}),void(this.type=obj.type||KEY_TYPE)}var bit_length=parseInt(opts.bit_length?opts.bit_length:1024,10);if(!bit_lengths[bit_length])throw new Error("Unsupported bit length.");primes[bit_length]||generatePrimes(bit_length),this.p=primes[bit_length].p,this.q=primes[bit_length].q,this.g=primes[bit_length].g,this.type=KEY_TYPE,this.x=makeRandom(ZERO,this.q),this.y=BigInt.powMod(this.g,this.x,this.p),opts.nocache&&(primes[bit_length]=null)}function tokenizeStr(str){var start,end;if(start=str.indexOf("("),end=str.lastIndexOf(")"),0>start||0>end)throw new Error("Malformed S-Expression");str=str.substring(start+1,end);var splt=str.search(/\s/),obj={type:str.substring(0,splt),val:[]};if(str=str.substring(splt+1,end),start=str.indexOf("("),0>start)obj.val.push(str);else for(var i,len,ss,es;start>-1;){for(i=start+1,len=str.length,ss=1,es=0;len>i&&ss>es;i++)"("===str[i]&&ss++,")"===str[i]&&es++;obj.val.push(tokenizeStr(str.substring(start,++i))),str=str.substring(++i),start=str.indexOf("(")}return obj}function parseLibotr(obj){if(!obj.type)throw new Error("Parse error.");var o,val;return"privkeys"===obj.type?(o=[],obj.val.forEach(function(i){o.push(parseLibotr(i))}),o):(o={},obj.val.forEach(function(i){val=i.val[0],"string"==typeof val?0===val.indexOf("#")&&(val=val.substring(1,val.lastIndexOf("#")),val=BigInt.str2bigInt(val,16)):val=parseLibotr(i),o[i.type]=val}),o)}var CryptoJS,BigInt,Worker,WWPath,HLP,root=this;"undefined"!=typeof module&&module.exports?(module.exports=DSA,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),WWPath=require("path").join(__dirname,"/dsa-webworker.js"),HLP=require("./helpers.js")):(Object.keys(root.DSA).forEach(function(k){DSA[k]=root.DSA[k]}),root.DSA=DSA,CryptoJS=root.CryptoJS,BigInt=root.BigInt,Worker=root.Worker,WWPath="dsa-webworker.js",HLP=DSA.HLP);var ZERO=BigInt.str2bigInt("0",10),ONE=BigInt.str2bigInt("1",10),TWO=BigInt.str2bigInt("2",10),KEY_TYPE="\x00\x00",DEBUG=!1,rpprb=[],bit_lengths={1024:{N:160,repeat:40},2048:{N:224,repeat:56}},primes={};DSA.prototype={constructor:DSA,packPublic:function(){var str=this.type;return str+=HLP.packMPI(this.p),str+=HLP.packMPI(this.q),str+=HLP.packMPI(this.g),str+=HLP.packMPI(this.y)},packPrivate:function(){var str=this.packPublic()+HLP.packMPI(this.x);return str=CryptoJS.enc.Latin1.parse(str),str.toString(CryptoJS.enc.Base64)},generateNonce:function(m){var priv=BigInt.bigInt2bits(BigInt.trim(this.x,0)),rand=BigInt.bigInt2bits(BigInt.randBigInt(256)),sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(priv)),sha256.update(m),sha256.update(CryptoJS.enc.Latin1.parse(rand));var hash=sha256.finalize();return hash=HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1)),BigInt.rightShift_(hash,256-BigInt.bitSize(this.q)),HLP.between(hash,ZERO,this.q)?hash:this.generateNonce(m)},sign:function(m){m=CryptoJS.enc.Latin1.parse(m);for(var k,b=BigInt.str2bigInt(m.toString(CryptoJS.enc.Hex),16),r=ZERO,s=ZERO;BigInt.isZero(s)||BigInt.isZero(r);)k=this.generateNonce(m),r=BigInt.mod(BigInt.powMod(this.g,k,this.p),this.q),BigInt.isZero(r)||(s=BigInt.inverseMod(k,this.q),s=BigInt.mult(s,BigInt.add(b,BigInt.mult(this.x,r))),s=BigInt.mod(s,this.q));return[r,s]},fingerprint:function(){var pk=this.packPublic();return this.type===KEY_TYPE&&(pk=pk.substring(2)),pk=CryptoJS.enc.Latin1.parse(pk),CryptoJS.SHA1(pk).toString(CryptoJS.enc.Hex)}},DSA.parsePublic=function(str,priv){var fields=["SHORT","MPI","MPI","MPI","MPI"];priv&&fields.push("MPI"),str=HLP.splitype(fields,str);var obj={type:str[0],p:HLP.readMPI(str[1]),q:HLP.readMPI(str[2]),g:HLP.readMPI(str[3]),y:HLP.readMPI(str[4])};return priv&&(obj.x=HLP.readMPI(str[5])),new DSA(obj)},DSA.parsePrivate=function(str,libotr){return libotr?parseLibotr(tokenizeStr(str))[0]["private-key"].dsa:(str=CryptoJS.enc.Base64.parse(str),str=str.toString(CryptoJS.enc.Latin1),DSA.parsePublic(str,!0))},DSA.verify=function(key,m,r,s){if(!HLP.between(r,ZERO,key.q)||!HLP.between(s,ZERO,key.q))return!1;var hm=CryptoJS.enc.Latin1.parse(m);hm=BigInt.str2bigInt(hm.toString(CryptoJS.enc.Hex),16);var w=BigInt.inverseMod(s,key.q),u1=BigInt.multMod(hm,w,key.q),u2=BigInt.multMod(r,w,key.q);u1=BigInt.powMod(key.g,u1,key.p),u2=BigInt.powMod(key.y,u2,key.p);var v=BigInt.mod(BigInt.multMod(u1,u2,key.p),key.q);return BigInt.equals(v,r)},DSA.createInWebWorker=function(options,cb){var opts={path:WWPath,seed:BigInt.getSeed};options&&"object"==typeof options&&Object.keys(options).forEach(function(k){opts[k]=options[k]}),"undefined"!=typeof module&&module.exports&&(Worker=require("webworker-threads").Worker);var worker=new Worker(opts.path);worker.onmessage=function(e){var data=e.data;switch(data.type){case"debug":if(!DEBUG||"undefined"==typeof console)return;console.log(data.val);break;case"data":worker.terminate(),cb(DSA.parsePrivate(data.val));break;default:throw new Error("Unrecognized type.")}},worker.postMessage({seed:opts.seed(),imports:opts.imports,debug:DEBUG})}}.call(this),function(){"use strict";var CryptoJS,CONST,HLP,root=this,Parse={};"undefined"!=typeof module&&module.exports?(module.exports=Parse,CryptoJS=require("../vendor/crypto.js"),CONST=require("./const.js"),HLP=require("./helpers.js")):(root.OTR.Parse=Parse,CryptoJS=root.CryptoJS,CONST=root.OTR.CONST,HLP=root.OTR.HLP);var tags={};tags[CONST.WHITESPACE_TAG_V2]=CONST.OTR_VERSION_2,tags[CONST.WHITESPACE_TAG_V3]=CONST.OTR_VERSION_3,Parse.parseMsg=function(otr,msg){var ver=[],start=msg.indexOf(CONST.OTR_TAG);if(!~start){if(this.initFragment(otr),ind=msg.indexOf(CONST.WHITESPACE_TAG),~ind){msg=msg.split(""),msg.splice(ind,16);for(var tag,len=msg.length;len>ind;)tag=msg.slice(ind,ind+8).join(""),Object.hasOwnProperty.call(tags,tag)?(msg.splice(ind,8),ver.push(tags[tag])):ind+=8;msg=msg.join("")}return{msg:msg,ver:ver}}var ind=start+CONST.OTR_TAG.length,com=msg[ind];if(","===com||"|"===com)return this.msgFragment(otr,msg.substring(ind+1),"|"===com);if(this.initFragment(otr),~["?","v"].indexOf(com)){"?"===msg[ind]&&(ver.push(CONST.OTR_VERSION_1),ind+=1);var vers={2:CONST.OTR_VERSION_2,3:CONST.OTR_VERSION_3},qs=msg.substring(ind+1),qi=qs.indexOf("?");return qi>=1&&(qs=qs.substring(0,qi).split(""),"v"===msg[ind]&&qs.forEach(function(q){Object.hasOwnProperty.call(vers,q)&&ver.push(vers[q])})),{cls:"query",ver:ver}}if(":"===com){ind+=1;var info=msg.substring(ind,ind+4);if(info.length<4)return{msg:msg};info=CryptoJS.enc.Base64.parse(info).toString(CryptoJS.enc.Latin1);var version=info.substring(0,2),type=info.substring(2);if(!otr["ALLOW_V"+HLP.unpackSHORT(version)])return{msg:msg};ind+=4;var end=msg.substring(ind).indexOf(".");if(!~end)return{msg:msg};msg=CryptoJS.enc.Base64.parse(msg.substring(ind,ind+end)),msg=CryptoJS.enc.Latin1.stringify(msg);var instance_tags;version===CONST.OTR_VERSION_3&&(instance_tags=msg.substring(0,8),msg=msg.substring(8));var cls;return~["","\n","",""].indexOf(type)?cls="ake":""===type&&(cls="data"),{version:version,type:type,msg:msg,cls:cls,instance_tags:instance_tags}}return" Error:"===msg.substring(ind,ind+7)?(otr.ERROR_START_AKE&&otr.sendQueryMsg(),{msg:msg.substring(ind+7),cls:"error"}):{msg:msg}},Parse.initFragment=function(otr){otr.fragment={s:"",j:0,k:0}},Parse.msgFragment=function(otr,msg,v3){if(msg=msg.split(","),v3){var its=msg.shift().split("|"),their_it=HLP.packINT(parseInt(its[0],16)),our_it=HLP.packINT(parseInt(its[1],16));if(otr.checkInstanceTags(their_it+our_it))return}if(!(msg.length<4||isNaN(parseInt(msg[0],10))||isNaN(parseInt(msg[1],10)))){var k=parseInt(msg[0],10),n=parseInt(msg[1],10);return msg=msg[2],k>n||0===n||0===k?void this.initFragment(otr):(1===k?(this.initFragment(otr),otr.fragment={k:1,n:n,s:msg}):n===otr.fragment.n&&k===otr.fragment.k+1?(otr.fragment.s+=msg,otr.fragment.k+=1):this.initFragment(otr),n===k?(msg=otr.fragment.s,this.initFragment(otr),this.parseMsg(otr,msg)):void 0)}}}.call(this),function(){"use strict";function hMac(gx,gy,pk,kid,m){var pass=CryptoJS.enc.Latin1.parse(m),hmac=CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256,pass);return hmac.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(gx))),hmac.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(gy))),hmac.update(CryptoJS.enc.Latin1.parse(pk)),hmac.update(CryptoJS.enc.Latin1.parse(kid)),hmac.finalize().toString(CryptoJS.enc.Latin1)}function AKE(otr){if(!(this instanceof AKE))return new AKE(otr);this.otr=otr,this.our_dh=otr.our_old_dh,this.our_keyid=otr.our_keyid-1,this.their_y=null,this.their_keyid=null,this.their_priv_pk=null,this.ssid=null,this.transmittedRS=!1,this.r=null;var self=this;["sendMsg"].forEach(function(meth){self[meth]=self[meth].bind(self)})}var CryptoJS,BigInt,CONST,HLP,DSA,root=this;"undefined"!=typeof module&&module.exports?(module.exports=AKE,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),CONST=require("./const.js"),HLP=require("./helpers.js"),DSA=require("./dsa.js")):(root.OTR.AKE=AKE,CryptoJS=root.CryptoJS,BigInt=root.BigInt,CONST=root.OTR.CONST,HLP=root.OTR.HLP,DSA=root.DSA);var N=BigInt.str2bigInt(CONST.N,16),N_MINUS_2=BigInt.sub(N,BigInt.str2bigInt("2",10));AKE.prototype={constructor:AKE,createKeys:function(g){var s=BigInt.powMod(g,this.our_dh.privateKey,N),secbytes=HLP.packMPI(s);this.ssid=HLP.mask(HLP.h2("\x00",secbytes),0,64);var tmp=HLP.h2("",secbytes);this.c=HLP.mask(tmp,0,128),this.c_prime=HLP.mask(tmp,128,128),this.m1=HLP.h2("",secbytes),this.m2=HLP.h2("",secbytes),this.m1_prime=HLP.h2("",secbytes),this.m2_prime=HLP.h2("",secbytes)},verifySignMac:function(mac,aesctr,m2,c,their_y,our_dh_pk,m1,ctr){var vmac=HLP.makeMac(aesctr,m2);if(!HLP.compare(mac,vmac))return["MACs do not match."];var x=HLP.decryptAes(aesctr.substring(4),c,ctr);x=HLP.splitype(["PUBKEY","INT","SIG"],x.toString(CryptoJS.enc.Latin1));var m=hMac(their_y,our_dh_pk,x[0],x[1],m1),pub=DSA.parsePublic(x[0]),r=HLP.bits2bigInt(x[2].substring(0,20)),s=HLP.bits2bigInt(x[2].substring(20));return DSA.verify(pub,m,r,s)?[null,HLP.readLen(x[1]),pub]:["Cannot verify signature of m."]},makeM:function(their_y,m1,c,m2){var pk=this.otr.priv.packPublic(),kid=HLP.packINT(this.our_keyid),m=hMac(this.our_dh.publicKey,their_y,pk,kid,m1);m=this.otr.priv.sign(m);var msg=pk+kid;msg+=BigInt.bigInt2bits(m[0],20),msg+=BigInt.bigInt2bits(m[1],20),msg=CryptoJS.enc.Latin1.parse(msg);var aesctr=HLP.packData(HLP.encryptAes(msg,c,HLP.packCtr(0))),mac=HLP.makeMac(aesctr,m2);return aesctr+mac},akeSuccess:function(version){return HLP.debug.call(this.otr,"success"),BigInt.equals(this.their_y,this.our_dh.publicKey)?this.otr.error("equal keys - we have a problem."):(this.otr.our_old_dh=this.our_dh,this.otr.their_priv_pk=this.their_priv_pk,this.their_keyid===this.otr.their_keyid&&BigInt.equals(this.their_y,this.otr.their_y)||this.their_keyid===this.otr.their_keyid-1&&BigInt.equals(this.their_y,this.otr.their_old_y)||(this.otr.their_y=this.their_y,this.otr.their_old_y=null,this.otr.their_keyid=this.their_keyid,this.otr.sessKeys[0]=[new this.otr.DHSession(this.otr.our_dh,this.otr.their_y),null],this.otr.sessKeys[1]=[new this.otr.DHSession(this.otr.our_old_dh,this.otr.their_y),null]),this.otr.ssid=this.ssid,this.otr.transmittedRS=this.transmittedRS,this.otr_version=version,this.otr.authstate=CONST.AUTHSTATE_NONE,this.otr.msgstate=CONST.MSGSTATE_ENCRYPTED,this.r=null,this.myhashed=null,this.dhcommit=null,this.encrypted=null,this.hashed=null,this.otr.trigger("status",[CONST.STATUS_AKE_SUCCESS]),void this.otr.sendStored())},handleAKE:function(msg){var send,vsm,type,version=msg.version;switch(msg.type){case"":if(HLP.debug.call(this.otr,"d-h key message"),msg=HLP.splitype(["DATA","DATA"],msg.msg),this.otr.authstate===CONST.AUTHSTATE_AWAITING_DHKEY){var ourHash=HLP.readMPI(this.myhashed),theirHash=HLP.readMPI(msg[1]);if(BigInt.greater(ourHash,theirHash)){type="",send=this.dhcommit;break}this.our_dh=this.otr.dh(),this.otr.authstate=CONST.AUTHSTATE_NONE,this.r=null,this.myhashed=null}else this.otr.authstate===CONST.AUTHSTATE_AWAITING_SIG&&(this.our_dh=this.otr.dh());this.otr.authstate=CONST.AUTHSTATE_AWAITING_REVEALSIG,this.encrypted=msg[0].substring(4),this.hashed=msg[1].substring(4),type="\n",send=HLP.packMPI(this.our_dh.publicKey);break;case"\n":if(HLP.debug.call(this.otr,"reveal signature message"),msg=HLP.splitype(["MPI"],msg.msg),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_DHKEY){if(this.otr.authstate!==CONST.AUTHSTATE_AWAITING_SIG)return;if(!BigInt.equals(this.their_y,HLP.readMPI(msg[0])))return}if(this.otr.authstate=CONST.AUTHSTATE_AWAITING_SIG,this.their_y=HLP.readMPI(msg[0]),!HLP.checkGroup(this.their_y,N_MINUS_2))return this.otr.error("Illegal g^y.");this.createKeys(this.their_y),type="",send=HLP.packMPI(this.r),send+=this.makeM(this.their_y,this.m1,this.c,this.m2),this.m1=null,this.m2=null,this.c=null;break;case"":if(HLP.debug.call(this.otr,"signature message"),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_REVEALSIG)return;msg=HLP.splitype(["DATA","DATA","MAC"],msg.msg),this.r=HLP.readMPI(msg[0]);var key=CryptoJS.enc.Hex.parse(BigInt.bigInt2str(this.r,16));key=CryptoJS.enc.Latin1.stringify(key);var gxmpi=HLP.decryptAes(this.encrypted,key,HLP.packCtr(0));gxmpi=gxmpi.toString(CryptoJS.enc.Latin1),this.their_y=HLP.readMPI(gxmpi);var hash=CryptoJS.SHA256(CryptoJS.enc.Latin1.parse(gxmpi));return HLP.compare(this.hashed,hash.toString(CryptoJS.enc.Latin1))?HLP.checkGroup(this.their_y,N_MINUS_2)?(this.createKeys(this.their_y),vsm=this.verifySignMac(msg[2],msg[1],this.m2,this.c,this.their_y,this.our_dh.publicKey,this.m1,HLP.packCtr(0)),vsm[0]?this.otr.error(vsm[0]):(this.their_keyid=vsm[1],this.their_priv_pk=vsm[2],send=this.makeM(this.their_y,this.m1_prime,this.c_prime,this.m2_prime),this.m1=null,this.m2=null,this.m1_prime=null,this.m2_prime=null,this.c=null,this.c_prime=null,this.sendMsg(version,"",send),void this.akeSuccess(version))):this.otr.error("Illegal g^x."):this.otr.error("Hashed g^x does not match.");case"":if(HLP.debug.call(this.otr,"data message"),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_SIG)return;return msg=HLP.splitype(["DATA","MAC"],msg.msg),vsm=this.verifySignMac(msg[1],msg[0],this.m2_prime,this.c_prime,this.their_y,this.our_dh.publicKey,this.m1_prime,HLP.packCtr(0)),vsm[0]?this.otr.error(vsm[0]):(this.their_keyid=vsm[1],this.their_priv_pk=vsm[2],this.m1_prime=null,this.m2_prime=null,this.c_prime=null,this.transmittedRS=!0,void this.akeSuccess(version));default:return}this.sendMsg(version,type,send)},sendMsg:function(version,type,msg){var send=version+type,v3=version===CONST.OTR_VERSION_3;return v3&&(HLP.debug.call(this.otr,"instance tags"),send+=this.otr.our_instance_tag,send+=this.otr.their_instance_tag),send+=msg,send=HLP.wrapMsg(send,this.otr.fragment_size,v3,this.otr.our_instance_tag,this.otr.their_instance_tag),send[0]?this.otr.error(send[0]):void this.otr.io(send[1])},initiateAKE:function(version){HLP.debug.call(this.otr,"d-h commit message"),this.otr.trigger("status",[CONST.STATUS_AKE_INIT]),this.otr.authstate=CONST.AUTHSTATE_AWAITING_DHKEY;var gxmpi=HLP.packMPI(this.our_dh.publicKey);gxmpi=CryptoJS.enc.Latin1.parse(gxmpi),this.r=BigInt.randBigInt(128);var key=CryptoJS.enc.Hex.parse(BigInt.bigInt2str(this.r,16));key=CryptoJS.enc.Latin1.stringify(key),this.myhashed=CryptoJS.SHA256(gxmpi),this.myhashed=HLP.packData(this.myhashed.toString(CryptoJS.enc.Latin1)),this.dhcommit=HLP.packData(HLP.encryptAes(gxmpi,key,HLP.packCtr(0))),this.dhcommit+=this.myhashed,this.sendMsg(version,"",this.dhcommit)}}}.call(this),function(){"use strict";function SM(reqs){return this instanceof SM?(this.version=1,this.our_fp=reqs.our_fp,this.their_fp=reqs.their_fp,this.ssid=reqs.ssid,this.debug=!!reqs.debug,void this.init()):new SM(reqs)}var CryptoJS,BigInt,EventEmitter,CONST,HLP,root=this;"undefined"!=typeof module&&module.exports?(module.exports=SM,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),EventEmitter=require("../vendor/eventemitter.js"),CONST=require("./const.js"),HLP=require("./helpers.js")):(root.OTR.SM=SM,CryptoJS=root.CryptoJS,BigInt=root.BigInt,EventEmitter=root.EventEmitter,CONST=root.OTR.CONST,HLP=root.OTR.HLP);var G=BigInt.str2bigInt(CONST.G,10),N=BigInt.str2bigInt(CONST.N,16),N_MINUS_2=BigInt.sub(N,BigInt.str2bigInt("2",10)),Q=BigInt.sub(N,BigInt.str2bigInt("1",10));BigInt.divInt_(Q,2),HLP.extend(SM,EventEmitter),SM.prototype.init=function(){this.smpstate=CONST.SMPSTATE_EXPECT1,this.secret=null},SM.prototype.makeSecret=function(our,secret){var sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(HLP.packBytes(this.version,1))),sha256.update(CryptoJS.enc.Hex.parse(our?this.our_fp:this.their_fp)),sha256.update(CryptoJS.enc.Hex.parse(our?this.their_fp:this.our_fp)),sha256.update(CryptoJS.enc.Latin1.parse(this.ssid)),sha256.update(CryptoJS.enc.Latin1.parse(secret));var hash=sha256.finalize();this.secret=HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1))},SM.prototype.makeG2s=function(){this.a2=HLP.randomExponent(),this.a3=HLP.randomExponent(),this.g2a=BigInt.powMod(G,this.a2,N),this.g3a=BigInt.powMod(G,this.a3,N),HLP.checkGroup(this.g2a,N_MINUS_2)&&HLP.checkGroup(this.g3a,N_MINUS_2)||this.makeG2s()},SM.prototype.computeGs=function(g2a,g3a){this.g2=BigInt.powMod(g2a,this.a2,N),this.g3=BigInt.powMod(g3a,this.a3,N)},SM.prototype.computePQ=function(r){this.p=BigInt.powMod(this.g3,r,N),this.q=HLP.multPowMod(G,r,this.g2,this.secret,N)},SM.prototype.computeR=function(){this.r=BigInt.powMod(this.QoQ,this.a3,N)},SM.prototype.computeRab=function(r){return BigInt.powMod(r,this.a3,N)},SM.prototype.computeC=function(v,r){return HLP.smpHash(v,BigInt.powMod(G,r,N))},SM.prototype.computeD=function(r,a,c){return BigInt.subMod(r,BigInt.multMod(a,c,Q),Q)},SM.prototype.handleSM=function(msg){var send,r2,r3,r7,t1,t2,t3,t4,rab,tmp2,cR,d7,ms,trust,expectStates={2:CONST.SMPSTATE_EXPECT1,3:CONST.SMPSTATE_EXPECT2,4:CONST.SMPSTATE_EXPECT3,5:CONST.SMPSTATE_EXPECT4,7:CONST.SMPSTATE_EXPECT1};if(6===msg.type)return this.init(),void this.trigger("abort");if(this.smpstate!==expectStates[msg.type])return this.abort();switch(this.smpstate){case CONST.SMPSTATE_EXPECT1:HLP.debug.call(this,"smp tlv 2");var ind,question;return 7===msg.type&&(ind=msg.msg.indexOf("\x00"),question=msg.msg.substring(0,ind),msg.msg=msg.msg.substring(ind+1)),ms=HLP.readLen(msg.msg.substr(0,4)),6!==ms?this.abort():(msg=HLP.unpackMPIs(6,msg.msg.substring(4)),HLP.checkGroup(msg[0],N_MINUS_2)&&HLP.checkGroup(msg[3],N_MINUS_2)&&HLP.ZKP(1,msg[1],HLP.multPowMod(G,msg[2],msg[0],msg[1],N))&&HLP.ZKP(2,msg[4],HLP.multPowMod(G,msg[5],msg[3],msg[4],N))?(this.g3ao=msg[3],this.makeG2s(),r2=HLP.randomExponent(),r3=HLP.randomExponent(),this.c2=this.computeC(3,r2),this.c3=this.computeC(4,r3),this.d2=this.computeD(r2,this.a2,this.c2),this.d3=this.computeD(r3,this.a3,this.c3),this.computeGs(msg[0],msg[3]),this.smpstate=CONST.SMPSTATE_EXPECT0,question=CryptoJS.enc.Latin1.parse(question).toString(CryptoJS.enc.Utf8),void this.trigger("question",[question])):this.abort());case CONST.SMPSTATE_EXPECT2:if(HLP.debug.call(this,"smp tlv 3"),ms=HLP.readLen(msg.msg.substr(0,4)),11!==ms)return this.abort();if(msg=HLP.unpackMPIs(11,msg.msg.substring(4)),!(HLP.checkGroup(msg[0],N_MINUS_2)&&HLP.checkGroup(msg[3],N_MINUS_2)&&HLP.checkGroup(msg[6],N_MINUS_2)&&HLP.checkGroup(msg[7],N_MINUS_2)))return this.abort();if(!HLP.ZKP(3,msg[1],HLP.multPowMod(G,msg[2],msg[0],msg[1],N)))return this.abort();if(!HLP.ZKP(4,msg[4],HLP.multPowMod(G,msg[5],msg[3],msg[4],N)))return this.abort();if(this.g3ao=msg[3],this.computeGs(msg[0],msg[3]),t1=HLP.multPowMod(this.g3,msg[9],msg[6],msg[8],N),t2=HLP.multPowMod(G,msg[9],this.g2,msg[10],N),t2=BigInt.multMod(t2,BigInt.powMod(msg[7],msg[8],N),N),!HLP.ZKP(5,msg[8],t1,t2))return this.abort();var r4=HLP.randomExponent();this.computePQ(r4);var r5=HLP.randomExponent(),r6=HLP.randomExponent(),tmp=HLP.multPowMod(G,r5,this.g2,r6,N),cP=HLP.smpHash(6,BigInt.powMod(this.g3,r5,N),tmp),d5=this.computeD(r5,r4,cP),d6=this.computeD(r6,this.secret,cP);this.QoQ=BigInt.divMod(this.q,msg[7],N),this.PoP=BigInt.divMod(this.p,msg[6],N),this.computeR(),r7=HLP.randomExponent(),tmp2=BigInt.powMod(this.QoQ,r7,N),cR=HLP.smpHash(7,BigInt.powMod(G,r7,N),tmp2),d7=this.computeD(r7,this.a3,cR),this.smpstate=CONST.SMPSTATE_EXPECT4,send=HLP.packINT(8)+HLP.packMPIs([this.p,this.q,cP,d5,d6,this.r,cR,d7]),send=HLP.packTLV(4,send);break;case CONST.SMPSTATE_EXPECT3:if(HLP.debug.call(this,"smp tlv 4"),ms=HLP.readLen(msg.msg.substr(0,4)),8!==ms)return this.abort();if(msg=HLP.unpackMPIs(8,msg.msg.substring(4)),!HLP.checkGroup(msg[0],N_MINUS_2)||!HLP.checkGroup(msg[1],N_MINUS_2)||!HLP.checkGroup(msg[5],N_MINUS_2))return this.abort();if(t1=HLP.multPowMod(this.g3,msg[3],msg[0],msg[2],N),t2=HLP.multPowMod(G,msg[3],this.g2,msg[4],N),t2=BigInt.multMod(t2,BigInt.powMod(msg[1],msg[2],N),N),!HLP.ZKP(6,msg[2],t1,t2))return this.abort();if(t3=HLP.multPowMod(G,msg[7],this.g3ao,msg[6],N),this.QoQ=BigInt.divMod(msg[1],this.q,N),t4=HLP.multPowMod(this.QoQ,msg[7],msg[5],msg[6],N),!HLP.ZKP(7,msg[6],t3,t4))return this.abort();this.computeR(),r7=HLP.randomExponent(),tmp2=BigInt.powMod(this.QoQ,r7,N),cR=HLP.smpHash(8,BigInt.powMod(G,r7,N),tmp2),d7=this.computeD(r7,this.a3,cR),send=HLP.packINT(3)+HLP.packMPIs([this.r,cR,d7]),send=HLP.packTLV(5,send),rab=this.computeRab(msg[5]),trust=!!BigInt.equals(rab,BigInt.divMod(msg[0],this.p,N)),this.trigger("trust",[trust,"answered"]),this.init();break;case CONST.SMPSTATE_EXPECT4:return HLP.debug.call(this,"smp tlv 5"),ms=HLP.readLen(msg.msg.substr(0,4)),3!==ms?this.abort():(msg=HLP.unpackMPIs(3,msg.msg.substring(4)),HLP.checkGroup(msg[0],N_MINUS_2)?(t3=HLP.multPowMod(G,msg[2],this.g3ao,msg[1],N),t4=HLP.multPowMod(this.QoQ,msg[2],msg[0],msg[1],N),HLP.ZKP(8,msg[1],t3,t4)?(rab=this.computeRab(msg[0]),trust=!!BigInt.equals(rab,this.PoP),this.trigger("trust",[trust,"asked"]),void this.init()):this.abort()):this.abort())}this.sendMsg(send)},SM.prototype.sendMsg=function(send){this.trigger("send",[this.ssid,"\x00"+send])},SM.prototype.rcvSecret=function(secret,question){HLP.debug.call(this,"receive secret");var fn,our=!1;this.smpstate===CONST.SMPSTATE_EXPECT0?fn=this.answer:(fn=this.initiate,our=!0),this.makeSecret(our,secret),fn.call(this,question)},SM.prototype.answer=function(){HLP.debug.call(this,"smp answer");var r4=HLP.randomExponent();this.computePQ(r4);var r5=HLP.randomExponent(),r6=HLP.randomExponent(),tmp=HLP.multPowMod(G,r5,this.g2,r6,N),cP=HLP.smpHash(5,BigInt.powMod(this.g3,r5,N),tmp),d5=this.computeD(r5,r4,cP),d6=this.computeD(r6,this.secret,cP);this.smpstate=CONST.SMPSTATE_EXPECT3;var send=HLP.packINT(11)+HLP.packMPIs([this.g2a,this.c2,this.d2,this.g3a,this.c3,this.d3,this.p,this.q,cP,d5,d6]);
-this.sendMsg(HLP.packTLV(3,send))},SM.prototype.initiate=function(question){HLP.debug.call(this,"smp initiate"),this.smpstate!==CONST.SMPSTATE_EXPECT1&&this.abort(),this.makeG2s();var r2=HLP.randomExponent(),r3=HLP.randomExponent();this.c2=this.computeC(1,r2),this.c3=this.computeC(2,r3),this.d2=this.computeD(r2,this.a2,this.c2),this.d3=this.computeD(r3,this.a3,this.c3),this.smpstate=CONST.SMPSTATE_EXPECT2;var send="",type=2;question&&(send+=question,send+="\x00",type=7),send+=HLP.packINT(6)+HLP.packMPIs([this.g2a,this.c2,this.d2,this.g3a,this.c3,this.d3]),this.sendMsg(HLP.packTLV(type,send))},SM.prototype.abort=function(){this.init(),this.sendMsg(HLP.packTLV(6,"")),this.trigger("abort")}}.call(this),function(){"use strict";function OTRCB(cb){this.cb=cb}function OTR(options){if(!(this instanceof OTR))return new OTR(options);if(options=options||{},options.priv&&!(options.priv instanceof DSA))throw new Error("Requires long-lived DSA key.");if(this.priv=options.priv?options.priv:new DSA,this.fragment_size=options.fragment_size||0,this.fragment_size<0)throw new Error("Fragment size must be a positive integer.");if(this.send_interval=options.send_interval||0,this.send_interval<0)throw new Error("Send interval must be a positive integer.");this.outgoing=[],this.our_instance_tag=options.instance_tag||OTR.makeInstanceTag(),this.debug=!!options.debug,this.smw=options.smw,this.init();var self=this;["sendMsg","receiveMsg"].forEach(function(meth){self[meth]=self[meth].bind(self)}),EventEmitter.call(this)}var CryptoJS,BigInt,EventEmitter,Worker,SMWPath,CONST,HLP,Parse,AKE,SM,DSA,root=this;"undefined"!=typeof module&&module.exports?(module.exports=OTR,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),EventEmitter=require("../vendor/eventemitter.js"),SMWPath=require("path").join(__dirname,"/sm-webworker.js"),CONST=require("./const.js"),HLP=require("./helpers.js"),Parse=require("./parse.js"),AKE=require("./ake.js"),SM=require("./sm.js"),DSA=require("./dsa.js"),OTR.CONST=CONST):(Object.keys(root.OTR).forEach(function(k){OTR[k]=root.OTR[k]}),root.OTR=OTR,CryptoJS=root.CryptoJS,BigInt=root.BigInt,EventEmitter=root.EventEmitter,Worker=root.Worker,SMWPath="sm-webworker.js",CONST=OTR.CONST,HLP=OTR.HLP,Parse=OTR.Parse,AKE=OTR.AKE,SM=OTR.SM,DSA=root.DSA);var G=BigInt.str2bigInt(CONST.G,10),N=BigInt.str2bigInt(CONST.N,16),MAX_INT=Math.pow(2,53)-1,MAX_UINT=Math.pow(2,31)-1;HLP.extend(OTR,EventEmitter),OTR.prototype.init=function(){this.msgstate=CONST.MSGSTATE_PLAINTEXT,this.authstate=CONST.AUTHSTATE_NONE,this.ALLOW_V2=!0,this.ALLOW_V3=!0,this.REQUIRE_ENCRYPTION=!1,this.SEND_WHITESPACE_TAG=!1,this.WHITESPACE_START_AKE=!1,this.ERROR_START_AKE=!1,Parse.initFragment(this),this.their_y=null,this.their_old_y=null,this.their_keyid=0,this.their_priv_pk=null,this.their_instance_tag="\x00\x00\x00\x00",this.our_dh=this.dh(),this.our_old_dh=this.dh(),this.our_keyid=2,this.sessKeys=[new Array(2),new Array(2)],this.storedMgs=[],this.oldMacKeys=[],this.sm=null,this._akeInit(),this.receivedPlaintext=!1},OTR.prototype._akeInit=function(){this.ake=new AKE(this),this.transmittedRS=!1,this.ssid=null},OTR.prototype._SMW=function(otr,reqs){this.otr=otr;var opts={path:SMWPath,seed:BigInt.getSeed};"object"==typeof otr.smw&&Object.keys(otr.smw).forEach(function(k){opts[k]=otr.smw[k]}),"undefined"!=typeof module&&module.exports&&(Worker=require("webworker-threads").Worker),this.worker=new Worker(opts.path);var self=this;this.worker.onmessage=function(e){var d=e.data;d&&self.trigger(d.method,d.args)},this.worker.postMessage({type:"seed",seed:opts.seed(),imports:opts.imports}),this.worker.postMessage({type:"init",reqs:reqs})},HLP.extend(OTR.prototype._SMW,EventEmitter),["handleSM","rcvSecret","abort"].forEach(function(m){OTR.prototype._SMW.prototype[m]=function(){this.worker.postMessage({type:"method",method:m,args:Array.prototype.slice.call(arguments,0)})}}),OTR.prototype._smInit=function(){var reqs={ssid:this.ssid,our_fp:this.priv.fingerprint(),their_fp:this.their_priv_pk.fingerprint(),debug:this.debug};this.smw?(this.sm&&this.sm.worker.terminate(),this.sm=new this._SMW(this,reqs)):this.sm=new SM(reqs);var self=this;["trust","abort","question"].forEach(function(e){self.sm.on(e,function(){self.trigger("smp",[e].concat(Array.prototype.slice.call(arguments)))})}),this.sm.on("send",function(ssid,send){self.ssid===ssid&&(send=self.prepareMsg(send),self.io(send))})},OTR.prototype.io=function(msg,meta){msg=[].concat(msg).map(function(m){return{msg:m,meta:meta}}),this.outgoing=this.outgoing.concat(msg);var self=this;!function send(first){if(!first){if(!self.outgoing.length)return;var elem=self.outgoing.shift(),cb=null;elem.meta instanceof OTRCB&&(cb=elem.meta.cb,elem.meta=null),self.trigger("io",[elem.msg,elem.meta]),cb&&cb()}setTimeout(send,first?0:self.send_interval)}(!0)},OTR.prototype.dh=function(){var keys={privateKey:BigInt.randBigInt(320)};return keys.publicKey=BigInt.powMod(G,keys.privateKey,N),keys},OTR.prototype.DHSession=function DHSession(our_dh,their_y){if(!(this instanceof DHSession))return new DHSession(our_dh,their_y);var s=BigInt.powMod(their_y,our_dh.privateKey,N),secbytes=HLP.packMPI(s);this.id=HLP.mask(HLP.h2("\x00",secbytes),0,64);var sq=BigInt.greater(our_dh.publicKey,their_y),sendbyte=sq?"":"",rcvbyte=sq?"":"";this.sendenc=HLP.mask(HLP.h1(sendbyte,secbytes),0,128),this.sendmac=CryptoJS.SHA1(CryptoJS.enc.Latin1.parse(this.sendenc)),this.sendmac=this.sendmac.toString(CryptoJS.enc.Latin1),this.rcvenc=HLP.mask(HLP.h1(rcvbyte,secbytes),0,128),this.rcvmac=CryptoJS.SHA1(CryptoJS.enc.Latin1.parse(this.rcvenc)),this.rcvmac=this.rcvmac.toString(CryptoJS.enc.Latin1),this.rcvmacused=!1,this.extra_symkey=HLP.h2("ÿ",secbytes),this.send_counter=0,this.rcv_counter=0},OTR.prototype.rotateOurKeys=function(){var self=this;this.sessKeys[1].forEach(function(sk){sk&&sk.rcvmacused&&self.oldMacKeys.push(sk.rcvmac)}),this.our_old_dh=this.our_dh,this.our_dh=this.dh(),this.our_keyid+=1,this.sessKeys[1][0]=this.sessKeys[0][0],this.sessKeys[1][1]=this.sessKeys[0][1],this.sessKeys[0]=[this.their_y?new this.DHSession(this.our_dh,this.their_y):null,this.their_old_y?new this.DHSession(this.our_dh,this.their_old_y):null]},OTR.prototype.rotateTheirKeys=function(their_y){this.their_keyid+=1;var self=this;this.sessKeys.forEach(function(sk){sk[1]&&sk[1].rcvmacused&&self.oldMacKeys.push(sk[1].rcvmac)}),this.their_old_y=this.their_y,this.sessKeys[0][1]=this.sessKeys[0][0],this.sessKeys[1][1]=this.sessKeys[1][0],this.their_y=their_y,this.sessKeys[0][0]=new this.DHSession(this.our_dh,this.their_y),this.sessKeys[1][0]=new this.DHSession(this.our_old_dh,this.their_y)},OTR.prototype.prepareMsg=function(msg,esk){if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED||0===this.their_keyid)return this.notify("Not ready to encrypt.");var sessKeys=this.sessKeys[1][0];if(sessKeys.send_counter>=MAX_INT)return this.notify("Should have rekeyed by now.");sessKeys.send_counter+=1;var ctr=HLP.packCtr(sessKeys.send_counter),send=this.ake.otr_version+"",v3=this.ake.otr_version===CONST.OTR_VERSION_3;if(v3&&(send+=this.our_instance_tag,send+=this.their_instance_tag),send+="\x00",send+=HLP.packINT(this.our_keyid-1),send+=HLP.packINT(this.their_keyid),send+=HLP.packMPI(this.our_dh.publicKey),send+=ctr.substring(0,8),Math.ceil(msg.length/8)>=MAX_UINT)return this.notify("Message is too long.");var aes=HLP.encryptAes(CryptoJS.enc.Latin1.parse(msg),sessKeys.sendenc,ctr);return send+=HLP.packData(aes),send+=HLP.make1Mac(send,sessKeys.sendmac),send+=HLP.packData(this.oldMacKeys.splice(0).join("")),send=HLP.wrapMsg(send,this.fragment_size,v3,this.our_instance_tag,this.their_instance_tag),send[0]?this.notify(send[0]):(esk&&this.trigger("file",["send",sessKeys.extra_symkey,esk]),send[1])},OTR.prototype.handleDataMsg=function(msg){var vt=msg.version+msg.type;this.ake.otr_version===CONST.OTR_VERSION_3&&(vt+=msg.instance_tags);var types=["BYTE","INT","INT","MPI","CTR","DATA","MAC","DATA"];msg=HLP.splitype(types,msg.msg);var ign=""===msg[0];if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED||8!==msg.length)return void(ign||this.error("Received an unreadable encrypted message."));var our_keyid=this.our_keyid-HLP.readLen(msg[2]),their_keyid=this.their_keyid-HLP.readLen(msg[1]);if(0>our_keyid||our_keyid>1)return void(ign||this.error("Not of our latest keys."));if(0>their_keyid||their_keyid>1)return void(ign||this.error("Not of your latest keys."));var their_y=their_keyid?this.their_old_y:this.their_y;if(1===their_keyid&&!their_y)return void(ign||this.error("Do not have that key."));var sessKeys=this.sessKeys[our_keyid][their_keyid],ctr=HLP.unpackCtr(msg[4]);if(ctr<=sessKeys.rcv_counter)return void(ign||this.error("Counter in message is not larger."));sessKeys.rcv_counter=ctr,vt+=msg.slice(0,6).join("");var vmac=HLP.make1Mac(vt,sessKeys.rcvmac);if(!HLP.compare(msg[6],vmac))return void(ign||this.error("MACs do not match."));sessKeys.rcvmacused=!0;var out=HLP.decryptAes(msg[5].substring(4),sessKeys.rcvenc,HLP.padCtr(msg[4]));out=out.toString(CryptoJS.enc.Latin1),our_keyid||this.rotateOurKeys(),their_keyid||this.rotateTheirKeys(HLP.readMPI(msg[3]));var ind=out.indexOf("\x00");return~ind&&(this.handleTLVs(out.substring(ind+1),sessKeys),out=out.substring(0,ind)),out=CryptoJS.enc.Latin1.parse(out),out.toString(CryptoJS.enc.Utf8)},OTR.prototype.handleTLVs=function(tlvs,sessKeys){for(var type,len,msg;tlvs.length&&(type=HLP.unpackSHORT(tlvs.substr(0,2)),len=HLP.unpackSHORT(tlvs.substr(2,2)),msg=tlvs.substr(4,len),!(msg.length<len));){switch(type){case 1:this.msgstate=CONST.MSGSTATE_FINISHED,this.trigger("status",[CONST.STATUS_END_OTR]);break;case 2:case 3:case 4:case 5:case 6:case 7:if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED)return void(this.sm&&this.sm.abort());this.sm||this._smInit(),this.sm.handleSM({msg:msg,type:type});break;case 8:msg=msg.substring(4),msg=CryptoJS.enc.Latin1.parse(msg),msg=msg.toString(CryptoJS.enc.Utf8),this.trigger("file",["receive",sessKeys.extra_symkey,msg])}tlvs=tlvs.substring(4+len)}},OTR.prototype.smpSecret=function(secret,question){return this.msgstate!==CONST.MSGSTATE_ENCRYPTED?this.notify("Must be encrypted for SMP."):"string"!=typeof secret||secret.length<1?this.notify("Secret is required."):(this.sm||this._smInit(),secret=CryptoJS.enc.Utf8.parse(secret).toString(CryptoJS.enc.Latin1),question=CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1),void this.sm.rcvSecret(secret,question))},OTR.prototype.sendQueryMsg=function(){var versions={},msg=CONST.OTR_TAG;this.ALLOW_V2&&(versions[2]=!0),this.ALLOW_V3&&(versions[3]=!0);var vs=Object.keys(versions);vs.length&&(msg+="v",vs.forEach(function(v){"1"!==v&&(msg+=v)}),msg+="?"),this.io(msg),this.trigger("status",[CONST.STATUS_SEND_QUERY])},OTR.prototype.sendMsg=function(msg,meta){switch((this.REQUIRE_ENCRYPTION||this.msgstate!==CONST.MSGSTATE_PLAINTEXT)&&(msg=CryptoJS.enc.Utf8.parse(msg),msg=msg.toString(CryptoJS.enc.Latin1)),this.msgstate){case CONST.MSGSTATE_PLAINTEXT:if(this.REQUIRE_ENCRYPTION)return this.storedMgs.push({msg:msg,meta:meta}),void this.sendQueryMsg();this.SEND_WHITESPACE_TAG&&!this.receivedPlaintext&&(msg+=CONST.WHITESPACE_TAG,this.ALLOW_V3&&(msg+=CONST.WHITESPACE_TAG_V3),this.ALLOW_V2&&(msg+=CONST.WHITESPACE_TAG_V2));break;case CONST.MSGSTATE_FINISHED:return this.storedMgs.push({msg:msg,meta:meta}),void this.notify("Message cannot be sent at this time.","warn");case CONST.MSGSTATE_ENCRYPTED:msg=this.prepareMsg(msg);break;default:throw new Error("Unknown message state.")}msg&&this.io(msg,meta)},OTR.prototype.receiveMsg=function(msg){if(msg=Parse.parseMsg(this,msg)){switch(msg.cls){case"error":return void this.notify(msg.msg);case"ake":return msg.version===CONST.OTR_VERSION_3&&this.checkInstanceTags(msg.instance_tags)?void this.notify("Received a message intended for a different session.","warn"):void this.ake.handleAKE(msg);case"data":if(msg.version===CONST.OTR_VERSION_3&&this.checkInstanceTags(msg.instance_tags))return void this.notify("Received a message intended for a different session.","warn");msg.msg=this.handleDataMsg(msg),msg.encrypted=!0;break;case"query":this.msgstate===CONST.MSGSTATE_ENCRYPTED&&this._akeInit(),this.doAKE(msg);break;default:(this.REQUIRE_ENCRYPTION||this.msgstate!==CONST.MSGSTATE_PLAINTEXT)&&this.notify("Received an unencrypted message.","warn"),this.receivedPlaintext=!0,this.WHITESPACE_START_AKE&&msg.ver.length>0&&this.doAKE(msg)}msg.msg&&this.trigger("ui",[msg.msg,!!msg.encrypted])}},OTR.prototype.checkInstanceTags=function(it){var their_it=HLP.readLen(it.substr(0,4)),our_it=HLP.readLen(it.substr(4,4));if(our_it&&our_it!==HLP.readLen(this.our_instance_tag))return!0;if(HLP.readLen(this.their_instance_tag)){if(HLP.readLen(this.their_instance_tag)!==their_it)return!0}else{if(100>their_it)return!0;this.their_instance_tag=HLP.packINT(their_it)}},OTR.prototype.doAKE=function(msg){this.ALLOW_V3&&~msg.ver.indexOf(CONST.OTR_VERSION_3)?this.ake.initiateAKE(CONST.OTR_VERSION_3):this.ALLOW_V2&&~msg.ver.indexOf(CONST.OTR_VERSION_2)?this.ake.initiateAKE(CONST.OTR_VERSION_2):this.notify("OTR conversation requested, but no compatible protocol version found.","warn")},OTR.prototype.error=function(err){this.debug||(err="An OTR error has occurred."),this.io("?OTR Error:"+err),this.notify(err)},OTR.prototype.notify=function(err,severity){this.trigger("error",[err,severity||"error"])},OTR.prototype.sendStored=function(){var self=this;this.storedMgs.splice(0).forEach(function(elem){var msg=self.prepareMsg(elem.msg);self.io(msg,elem.meta)})},OTR.prototype.sendFile=function(filename){if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED)return this.notify("Not ready to encrypt.");if(this.ake.otr_version!==CONST.OTR_VERSION_3)return this.notify("Protocol v3 required.");if(!filename)return this.notify("Please specify a filename.");var l1name=CryptoJS.enc.Utf8.parse(filename);if(l1name=l1name.toString(CryptoJS.enc.Latin1),l1name.length>=65532)return this.notify("Filename is too long.");var msg="\x00";msg+="\x00\b",msg+=HLP.packSHORT(4+l1name.length),msg+="\x00\x00\x00",msg+=l1name,msg=this.prepareMsg(msg,filename),this.io(msg)},OTR.prototype.endOtr=function(cb){this.msgstate===CONST.MSGSTATE_ENCRYPTED&&("function"==typeof cb&&(cb=new OTRCB(cb)),this.sendMsg("\x00\x00\x00\x00",cb),this.sm&&(this.smw&&this.sm.worker.terminate(),this.sm=null)),this.msgstate=CONST.MSGSTATE_PLAINTEXT,this.receivedPlaintext=!1,this.trigger("status",[CONST.STATUS_END_OTR])},OTR.makeInstanceTag=function(){var num=BigInt.randBigInt(32);return BigInt.greater(BigInt.str2bigInt("100",16),num)?OTR.makeInstanceTag():HLP.packINT(parseInt(BigInt.bigInt2str(num,10),10))}}.call(this),{OTR:this.OTR,DSA:this.DSA}}); \ No newline at end of file
+!function(root,factory){"function"==typeof define&&define.amd?define(["bigint","crypto","eventemitter"],function(BigInt,CryptoJS,EventEmitter){var root={BigInt:BigInt,CryptoJS:CryptoJS,EventEmitter:EventEmitter,OTR:{},DSA:{}};return factory.call(root)}):(root.OTR={},root.DSA={},factory.call(root))}(this,function(){return function(){"use strict";var root=this,CONST={N:"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF",G:"2",MSGSTATE_PLAINTEXT:0,MSGSTATE_ENCRYPTED:1,MSGSTATE_FINISHED:2,AUTHSTATE_NONE:0,AUTHSTATE_AWAITING_DHKEY:1,AUTHSTATE_AWAITING_REVEALSIG:2,AUTHSTATE_AWAITING_SIG:3,WHITESPACE_TAG:" ",WHITESPACE_TAG_V2:" ",WHITESPACE_TAG_V3:" ",OTR_TAG:"?OTR",OTR_VERSION_1:"\x00",OTR_VERSION_2:"\x00",OTR_VERSION_3:"\x00",SMPSTATE_EXPECT0:0,SMPSTATE_EXPECT1:1,SMPSTATE_EXPECT2:2,SMPSTATE_EXPECT3:3,SMPSTATE_EXPECT4:4,STATUS_SEND_QUERY:0,STATUS_AKE_INIT:1,STATUS_AKE_SUCCESS:2,STATUS_END_OTR:3};"undefined"!=typeof module&&module.exports?module.exports=CONST:root.OTR.CONST=CONST}.call(this),function(){"use strict";function intCompare(x,y){var z=~(x^y);return z&=z>>16,z&=z>>8,z&=z>>4,z&=z>>2,z&=z>>1,1&z}var CryptoJS,BigInt,root=this,HLP={};"undefined"!=typeof module&&module.exports?(module.exports=HLP={},CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js")):(root.OTR&&(root.OTR.HLP=HLP),root.DSA&&(root.DSA.HLP=HLP),CryptoJS=root.CryptoJS,BigInt=root.BigInt);var DTS={BYTE:1,SHORT:2,INT:4,CTR:8,MAC:20,SIG:40},WRAPPER_BEGIN="?OTR",WRAPPER_END=".",TWO=BigInt.str2bigInt("2",10);HLP.debug=function(msg){this.debug&&"function"!=typeof this.debug&&"undefined"!=typeof console&&console.log(msg)},HLP.extend=function(child,parent){function Ctor(){this.constructor=child}for(var key in parent)Object.hasOwnProperty.call(parent,key)&&(child[key]=parent[key]);Ctor.prototype=parent.prototype,child.prototype=new Ctor,child.__super__=parent.prototype},HLP.compare=function(str1,str2){if(str1.length!==str2.length)return!1;for(var i=0,result=0;i<str1.length;i++)result|=str1[i].charCodeAt(0)^str2[i].charCodeAt(0);return intCompare(result,0)},HLP.randomExponent=function(){return BigInt.randBigInt(1536)},HLP.smpHash=function(version,fmpi,smpi){var sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(HLP.packBytes(version,DTS.BYTE))),sha256.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(fmpi))),smpi&&sha256.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(smpi)));var hash=sha256.finalize();return HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1))},HLP.makeMac=function(aesctr,m){var pass=CryptoJS.enc.Latin1.parse(m),mac=CryptoJS.HmacSHA256(CryptoJS.enc.Latin1.parse(aesctr),pass);return HLP.mask(mac.toString(CryptoJS.enc.Latin1),0,160)},HLP.make1Mac=function(aesctr,m){var pass=CryptoJS.enc.Latin1.parse(m),mac=CryptoJS.HmacSHA1(CryptoJS.enc.Latin1.parse(aesctr),pass);return mac.toString(CryptoJS.enc.Latin1)},HLP.encryptAes=function(msg,c,iv){var opts={mode:CryptoJS.mode.CTR,iv:CryptoJS.enc.Latin1.parse(iv),padding:CryptoJS.pad.NoPadding},aesctr=CryptoJS.AES.encrypt(msg,CryptoJS.enc.Latin1.parse(c),opts),aesctr_decoded=CryptoJS.enc.Base64.parse(aesctr.toString());return CryptoJS.enc.Latin1.stringify(aesctr_decoded)},HLP.decryptAes=function(msg,c,iv){msg=CryptoJS.enc.Latin1.parse(msg);var opts={mode:CryptoJS.mode.CTR,iv:CryptoJS.enc.Latin1.parse(iv),padding:CryptoJS.pad.NoPadding};return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(msg),CryptoJS.enc.Latin1.parse(c),opts)},HLP.multPowMod=function(a,b,c,d,e){return BigInt.multMod(BigInt.powMod(a,b,e),BigInt.powMod(c,d,e),e)},HLP.ZKP=function(v,c,d,e){return BigInt.equals(c,HLP.smpHash(v,d,e))},HLP.GTOE=function(a,b){return BigInt.equals(a,b)||BigInt.greater(a,b)},HLP.between=function(x,a,b){return BigInt.greater(x,a)&&BigInt.greater(b,x)},HLP.checkGroup=function(g,N_MINUS_2){return HLP.GTOE(g,TWO)&&HLP.GTOE(N_MINUS_2,g)},HLP.h1=function(b,secbytes){var sha1=CryptoJS.algo.SHA1.create();return sha1.update(CryptoJS.enc.Latin1.parse(b)),sha1.update(CryptoJS.enc.Latin1.parse(secbytes)),sha1.finalize().toString(CryptoJS.enc.Latin1)},HLP.h2=function(b,secbytes){var sha256=CryptoJS.algo.SHA256.create();return sha256.update(CryptoJS.enc.Latin1.parse(b)),sha256.update(CryptoJS.enc.Latin1.parse(secbytes)),sha256.finalize().toString(CryptoJS.enc.Latin1)},HLP.mask=function(bytes,start,n){return bytes.substr(start/8,n/8)};var _toString=String.fromCharCode;HLP.packBytes=function(val,bytes){val=val.toString(16);for(var nex,res="";bytes>0;bytes--)nex=val.length?val.substr(-2,2):"0",val=val.substr(0,val.length-2),res=_toString(parseInt(nex,16))+res;return res},HLP.packINT=function(d){return HLP.packBytes(d,DTS.INT)},HLP.packCtr=function(d){return HLP.padCtr(HLP.packBytes(d,DTS.CTR))},HLP.padCtr=function(ctr){return ctr+"\x00\x00\x00\x00\x00\x00\x00\x00"},HLP.unpackCtr=function(d){return d=HLP.toByteArray(d.substring(0,8)),HLP.unpack(d)},HLP.unpack=function(arr){for(var val=0,i=0,len=arr.length;len>i;i++)val=256*val+arr[i];return val},HLP.packData=function(d){return HLP.packINT(d.length)+d},HLP.bits2bigInt=function(bits){return bits=HLP.toByteArray(bits),BigInt.ba2bigInt(bits)},HLP.packMPI=function(mpi){return HLP.packData(BigInt.bigInt2bits(BigInt.trim(mpi,0)))},HLP.packSHORT=function(short){return HLP.packBytes(short,DTS.SHORT)},HLP.unpackSHORT=function(short){return short=HLP.toByteArray(short),HLP.unpack(short)},HLP.packTLV=function(type,value){return HLP.packSHORT(type)+HLP.packSHORT(value.length)+value},HLP.readLen=function(msg){return msg=HLP.toByteArray(msg.substring(0,4)),HLP.unpack(msg)},HLP.readData=function(data){var n=HLP.unpack(data.splice(0,4));return[n,data]},HLP.readMPI=function(data){return data=HLP.toByteArray(data),data=HLP.readData(data),BigInt.ba2bigInt(data[1])},HLP.packMPIs=function(arr){return arr.reduce(function(prv,cur){return prv+HLP.packMPI(cur)},"")},HLP.unpackMPIs=function(num,mpis){for(var i=0,arr=[];num>i;i++)arr.push("MPI");return HLP.splitype(arr,mpis).map(function(m){return HLP.readMPI(m)})},HLP.wrapMsg=function(msg,fs,v3,our_it,their_it){msg=CryptoJS.enc.Base64.stringify(CryptoJS.enc.Latin1.parse(msg)),msg=WRAPPER_BEGIN+":"+msg+WRAPPER_END;var its;if(v3&&(its="|",its+=HLP.readLen(our_it).toString(16),its+="|",its+=HLP.readLen(their_it).toString(16)),!fs)return[null,msg];var n=Math.ceil(msg.length/fs);if(n>65535)return["Too many fragments"];if(1==n)return[null,msg];var k,bi,ei,frag,mf,mfs=[];for(k=1;n>=k;k++)bi=(k-1)*fs,ei=k*fs,frag=msg.slice(bi,ei),mf=WRAPPER_BEGIN,v3&&(mf+=its),mf+=","+k+",",mf+=n+",",mf+=frag+",",mfs.push(mf);return[null,mfs]},HLP.splitype=function splitype(arr,msg){var data=[];return arr.forEach(function(a){var str;switch(a){case"PUBKEY":str=splitype(["SHORT","MPI","MPI","MPI","MPI"],msg).join("");break;case"DATA":case"MPI":str=msg.substring(0,HLP.readLen(msg)+4);break;default:str=msg.substring(0,DTS[a])}data.push(str),msg=msg.substring(str.length)}),data};var _bin2num=function(){for(var i=0,_bin2num={};256>i;++i)_bin2num[String.fromCharCode(i)]=i;for(i=128;256>i;++i)_bin2num[String.fromCharCode(63232+i)]=i;return _bin2num}();HLP.toByteArray=function(data){for(var rv=[],ary=data.split(""),i=-1,iz=ary.length,remain=iz%8;remain--;)++i,rv[i]=_bin2num[ary[i]];for(remain=iz>>3;remain--;)rv.push(_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]],_bin2num[ary[++i]]);return rv}}.call(this),function(){"use strict";function timer(){var start=(new Date).getTime();return function(s){if(DEBUG&&"undefined"!=typeof console){var t=(new Date).getTime();console.log(s+": "+(t-start)),start=t}}}function makeRandom(min,max){var c=BigInt.randBigInt(BigInt.bitSize(max));return HLP.between(c,min,max)?c:makeRandom(min,max)}function isProbPrime(k,n){var i,B=3e4,l=BigInt.bitSize(k),primes=BigInt.primes;for(0===primes.length&&(primes=BigInt.findPrimes(B)),rpprb.length!=k.length&&(rpprb=BigInt.dup(k)),i=0;i<primes.length&&primes[i]<=B;i++)if(0===BigInt.modInt(k,primes[i])&&!BigInt.equalsInt(k,primes[i]))return 0;for(i=0;n>i;i++){for(BigInt.randBigInt_(rpprb,l,0);!BigInt.greater(k,rpprb);)BigInt.randBigInt_(rpprb,l,0);if(!BigInt.millerRabin(k,rpprb))return 0}return 1}function generatePrimes(bit_length){for(var q,p,rem,counter,t=timer(),repeat=bit_lengths[bit_length].repeat,N=bit_lengths[bit_length].N,LM1=BigInt.twoToThe(bit_length-1),bl4=4*bit_length,brk=!1;;)if(q=BigInt.randBigInt(N,1),q[0]|=1,isProbPrime(q,repeat)){for(t("q"),counter=0;bl4>counter;counter++)if(p=BigInt.randBigInt(bit_length,1),p[0]|=1,rem=BigInt.mod(p,q),rem=BigInt.sub(rem,ONE),p=BigInt.sub(p,rem),!BigInt.greater(LM1,p)&&isProbPrime(p,repeat)){t("p"),primes[bit_length]={p:p,q:q},brk=!0;break}if(brk)break}for(var g,h=BigInt.dup(TWO),pm1=BigInt.sub(p,ONE),e=BigInt.multMod(pm1,BigInt.inverseMod(q,p),p);;){g=BigInt.powMod(h,e,p);{if(!BigInt.equals(g,ONE))return primes[bit_length].g=g,void t("g");h=BigInt.add(h,ONE)}}throw new Error("Unreachable!")}function DSA(obj,opts){if(!(this instanceof DSA))return new DSA(obj,opts);if(opts=opts||{},obj){var self=this;return["p","q","g","y","x"].forEach(function(prop){self[prop]=obj[prop]}),void(this.type=obj.type||KEY_TYPE)}var bit_length=parseInt(opts.bit_length?opts.bit_length:1024,10);if(!bit_lengths[bit_length])throw new Error("Unsupported bit length.");primes[bit_length]||generatePrimes(bit_length),this.p=primes[bit_length].p,this.q=primes[bit_length].q,this.g=primes[bit_length].g,this.type=KEY_TYPE,this.x=makeRandom(ZERO,this.q),this.y=BigInt.powMod(this.g,this.x,this.p),opts.nocache&&(primes[bit_length]=null)}function tokenizeStr(str){var start,end;if(start=str.indexOf("("),end=str.lastIndexOf(")"),0>start||0>end)throw new Error("Malformed S-Expression");str=str.substring(start+1,end);var splt=str.search(/\s/),obj={type:str.substring(0,splt),val:[]};if(str=str.substring(splt+1,end),start=str.indexOf("("),0>start)obj.val.push(str);else for(var i,len,ss,es;start>-1;){for(i=start+1,len=str.length,ss=1,es=0;len>i&&ss>es;i++)"("===str[i]&&ss++,")"===str[i]&&es++;obj.val.push(tokenizeStr(str.substring(start,++i))),str=str.substring(++i),start=str.indexOf("(")}return obj}function parseLibotr(obj){if(!obj.type)throw new Error("Parse error.");var o,val;return"privkeys"===obj.type?(o=[],obj.val.forEach(function(i){o.push(parseLibotr(i))}),o):(o={},obj.val.forEach(function(i){val=i.val[0],"string"==typeof val?0===val.indexOf("#")&&(val=val.substring(1,val.lastIndexOf("#")),val=BigInt.str2bigInt(val,16)):val=parseLibotr(i),o[i.type]=val}),o)}var CryptoJS,BigInt,Worker,WWPath,HLP,root=this;"undefined"!=typeof module&&module.exports?(module.exports=DSA,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),WWPath=require("path").join(__dirname,"/dsa-webworker.js"),HLP=require("./helpers.js")):(Object.keys(root.DSA).forEach(function(k){DSA[k]=root.DSA[k]}),root.DSA=DSA,CryptoJS=root.CryptoJS,BigInt=root.BigInt,Worker=root.Worker,WWPath="dsa-webworker.js",HLP=DSA.HLP);var ZERO=BigInt.str2bigInt("0",10),ONE=BigInt.str2bigInt("1",10),TWO=BigInt.str2bigInt("2",10),KEY_TYPE="\x00\x00",DEBUG=!1,rpprb=[],bit_lengths={1024:{N:160,repeat:40},2048:{N:224,repeat:56}},primes={};DSA.prototype={constructor:DSA,packPublic:function(){var str=this.type;return str+=HLP.packMPI(this.p),str+=HLP.packMPI(this.q),str+=HLP.packMPI(this.g),str+=HLP.packMPI(this.y)},packPrivate:function(){var str=this.packPublic()+HLP.packMPI(this.x);return str=CryptoJS.enc.Latin1.parse(str),str.toString(CryptoJS.enc.Base64)},generateNonce:function(m){var priv=BigInt.bigInt2bits(BigInt.trim(this.x,0)),rand=BigInt.bigInt2bits(BigInt.randBigInt(256)),sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(priv)),sha256.update(m),sha256.update(CryptoJS.enc.Latin1.parse(rand));var hash=sha256.finalize();return hash=HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1)),BigInt.rightShift_(hash,256-BigInt.bitSize(this.q)),HLP.between(hash,ZERO,this.q)?hash:this.generateNonce(m)},sign:function(m){m=CryptoJS.enc.Latin1.parse(m);for(var k,b=BigInt.str2bigInt(m.toString(CryptoJS.enc.Hex),16),r=ZERO,s=ZERO;BigInt.isZero(s)||BigInt.isZero(r);)k=this.generateNonce(m),r=BigInt.mod(BigInt.powMod(this.g,k,this.p),this.q),BigInt.isZero(r)||(s=BigInt.inverseMod(k,this.q),s=BigInt.mult(s,BigInt.add(b,BigInt.mult(this.x,r))),s=BigInt.mod(s,this.q));return[r,s]},fingerprint:function(){var pk=this.packPublic();return this.type===KEY_TYPE&&(pk=pk.substring(2)),pk=CryptoJS.enc.Latin1.parse(pk),CryptoJS.SHA1(pk).toString(CryptoJS.enc.Hex)}},DSA.parsePublic=function(str,priv){var fields=["SHORT","MPI","MPI","MPI","MPI"];priv&&fields.push("MPI"),str=HLP.splitype(fields,str);var obj={type:str[0],p:HLP.readMPI(str[1]),q:HLP.readMPI(str[2]),g:HLP.readMPI(str[3]),y:HLP.readMPI(str[4])};return priv&&(obj.x=HLP.readMPI(str[5])),new DSA(obj)},DSA.parsePrivate=function(str,libotr){return libotr?parseLibotr(tokenizeStr(str))[0]["private-key"].dsa:(str=CryptoJS.enc.Base64.parse(str),str=str.toString(CryptoJS.enc.Latin1),DSA.parsePublic(str,!0))},DSA.verify=function(key,m,r,s){if(!HLP.between(r,ZERO,key.q)||!HLP.between(s,ZERO,key.q))return!1;var hm=CryptoJS.enc.Latin1.parse(m);hm=BigInt.str2bigInt(hm.toString(CryptoJS.enc.Hex),16);var w=BigInt.inverseMod(s,key.q),u1=BigInt.multMod(hm,w,key.q),u2=BigInt.multMod(r,w,key.q);u1=BigInt.powMod(key.g,u1,key.p),u2=BigInt.powMod(key.y,u2,key.p);var v=BigInt.mod(BigInt.multMod(u1,u2,key.p),key.q);return BigInt.equals(v,r)},DSA.createInWebWorker=function(options,cb){var opts={path:WWPath,seed:BigInt.getSeed};options&&"object"==typeof options&&Object.keys(options).forEach(function(k){opts[k]=options[k]}),"undefined"!=typeof module&&module.exports&&(Worker=require("webworker-threads").Worker);var worker=new Worker(opts.path);worker.onmessage=function(e){var data=e.data;switch(data.type){case"debug":if(!DEBUG||"undefined"==typeof console)return;console.log(data.val);break;case"data":worker.terminate(),cb(DSA.parsePrivate(data.val));break;default:throw new Error("Unrecognized type.")}},worker.postMessage({seed:opts.seed(),imports:opts.imports,debug:DEBUG})}}.call(this),function(){"use strict";var CryptoJS,CONST,HLP,root=this,Parse={};"undefined"!=typeof module&&module.exports?(module.exports=Parse,CryptoJS=require("../vendor/crypto.js"),CONST=require("./const.js"),HLP=require("./helpers.js")):(root.OTR.Parse=Parse,CryptoJS=root.CryptoJS,CONST=root.OTR.CONST,HLP=root.OTR.HLP);var tags={};tags[CONST.WHITESPACE_TAG_V2]=CONST.OTR_VERSION_2,tags[CONST.WHITESPACE_TAG_V3]=CONST.OTR_VERSION_3,Parse.parseMsg=function(otr,msg){var ver=[],start=msg.indexOf(CONST.OTR_TAG);if(!~start){if(this.initFragment(otr),ind=msg.indexOf(CONST.WHITESPACE_TAG),~ind){msg=msg.split(""),msg.splice(ind,16);for(var tag,len=msg.length;len>ind;)tag=msg.slice(ind,ind+8).join(""),Object.hasOwnProperty.call(tags,tag)?(msg.splice(ind,8),ver.push(tags[tag])):ind+=8;msg=msg.join("")}return{msg:msg,ver:ver}}var ind=start+CONST.OTR_TAG.length,com=msg[ind];if(","===com||"|"===com)return this.msgFragment(otr,msg.substring(ind+1),"|"===com);if(this.initFragment(otr),~["?","v"].indexOf(com)){"?"===msg[ind]&&(ver.push(CONST.OTR_VERSION_1),ind+=1);var vers={2:CONST.OTR_VERSION_2,3:CONST.OTR_VERSION_3},qs=msg.substring(ind+1),qi=qs.indexOf("?");return qi>=1&&(qs=qs.substring(0,qi).split(""),"v"===msg[ind]&&qs.forEach(function(q){Object.hasOwnProperty.call(vers,q)&&ver.push(vers[q])})),{cls:"query",ver:ver}}if(":"===com){ind+=1;var info=msg.substring(ind,ind+4);if(info.length<4)return{msg:msg};info=CryptoJS.enc.Base64.parse(info).toString(CryptoJS.enc.Latin1);var version=info.substring(0,2),type=info.substring(2);if(!otr["ALLOW_V"+HLP.unpackSHORT(version)])return{msg:msg};ind+=4;var end=msg.substring(ind).indexOf(".");if(!~end)return{msg:msg};msg=CryptoJS.enc.Base64.parse(msg.substring(ind,ind+end)),msg=CryptoJS.enc.Latin1.stringify(msg);var instance_tags;version===CONST.OTR_VERSION_3&&(instance_tags=msg.substring(0,8),msg=msg.substring(8));var cls;return~["","\n","",""].indexOf(type)?cls="ake":""===type&&(cls="data"),{version:version,type:type,msg:msg,cls:cls,instance_tags:instance_tags}}return" Error:"===msg.substring(ind,ind+7)?(otr.ERROR_START_AKE&&otr.sendQueryMsg(),{msg:msg.substring(ind+7),cls:"error"}):{msg:msg}},Parse.initFragment=function(otr){otr.fragment={s:"",j:0,k:0}},Parse.msgFragment=function(otr,msg,v3){if(msg=msg.split(","),v3){var its=msg.shift().split("|"),their_it=HLP.packINT(parseInt(its[0],16)),our_it=HLP.packINT(parseInt(its[1],16));if(otr.checkInstanceTags(their_it+our_it))return}if(!(msg.length<4||isNaN(parseInt(msg[0],10))||isNaN(parseInt(msg[1],10)))){var k=parseInt(msg[0],10),n=parseInt(msg[1],10);return msg=msg[2],k>n||0===n||0===k?void this.initFragment(otr):(1===k?(this.initFragment(otr),otr.fragment={k:1,n:n,s:msg}):n===otr.fragment.n&&k===otr.fragment.k+1?(otr.fragment.s+=msg,otr.fragment.k+=1):this.initFragment(otr),n===k?(msg=otr.fragment.s,this.initFragment(otr),this.parseMsg(otr,msg)):void 0)}}}.call(this),function(){"use strict";function hMac(gx,gy,pk,kid,m){var pass=CryptoJS.enc.Latin1.parse(m),hmac=CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256,pass);return hmac.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(gx))),hmac.update(CryptoJS.enc.Latin1.parse(HLP.packMPI(gy))),hmac.update(CryptoJS.enc.Latin1.parse(pk)),hmac.update(CryptoJS.enc.Latin1.parse(kid)),hmac.finalize().toString(CryptoJS.enc.Latin1)}function AKE(otr){if(!(this instanceof AKE))return new AKE(otr);this.otr=otr,this.our_dh=otr.our_old_dh,this.our_keyid=otr.our_keyid-1,this.their_y=null,this.their_keyid=null,this.their_priv_pk=null,this.ssid=null,this.transmittedRS=!1,this.r=null;var self=this;["sendMsg"].forEach(function(meth){self[meth]=self[meth].bind(self)})}var CryptoJS,BigInt,CONST,HLP,DSA,root=this;"undefined"!=typeof module&&module.exports?(module.exports=AKE,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),CONST=require("./const.js"),HLP=require("./helpers.js"),DSA=require("./dsa.js")):(root.OTR.AKE=AKE,CryptoJS=root.CryptoJS,BigInt=root.BigInt,CONST=root.OTR.CONST,HLP=root.OTR.HLP,DSA=root.DSA);var N=BigInt.str2bigInt(CONST.N,16),N_MINUS_2=BigInt.sub(N,BigInt.str2bigInt("2",10));AKE.prototype={constructor:AKE,createKeys:function(g){var s=BigInt.powMod(g,this.our_dh.privateKey,N),secbytes=HLP.packMPI(s);this.ssid=HLP.mask(HLP.h2("\x00",secbytes),0,64);var tmp=HLP.h2("",secbytes);this.c=HLP.mask(tmp,0,128),this.c_prime=HLP.mask(tmp,128,128),this.m1=HLP.h2("",secbytes),this.m2=HLP.h2("",secbytes),this.m1_prime=HLP.h2("",secbytes),this.m2_prime=HLP.h2("",secbytes)},verifySignMac:function(mac,aesctr,m2,c,their_y,our_dh_pk,m1,ctr){var vmac=HLP.makeMac(aesctr,m2);if(!HLP.compare(mac,vmac))return["MACs do not match."];var x=HLP.decryptAes(aesctr.substring(4),c,ctr);x=HLP.splitype(["PUBKEY","INT","SIG"],x.toString(CryptoJS.enc.Latin1));var m=hMac(their_y,our_dh_pk,x[0],x[1],m1),pub=DSA.parsePublic(x[0]),r=HLP.bits2bigInt(x[2].substring(0,20)),s=HLP.bits2bigInt(x[2].substring(20));return DSA.verify(pub,m,r,s)?[null,HLP.readLen(x[1]),pub]:["Cannot verify signature of m."]},makeM:function(their_y,m1,c,m2){var pk=this.otr.priv.packPublic(),kid=HLP.packINT(this.our_keyid),m=hMac(this.our_dh.publicKey,their_y,pk,kid,m1);m=this.otr.priv.sign(m);var msg=pk+kid;msg+=BigInt.bigInt2bits(m[0],20),msg+=BigInt.bigInt2bits(m[1],20),msg=CryptoJS.enc.Latin1.parse(msg);var aesctr=HLP.packData(HLP.encryptAes(msg,c,HLP.packCtr(0))),mac=HLP.makeMac(aesctr,m2);return aesctr+mac},akeSuccess:function(version){return HLP.debug.call(this.otr,"success"),BigInt.equals(this.their_y,this.our_dh.publicKey)?this.otr.error("equal keys - we have a problem."):(this.otr.our_old_dh=this.our_dh,this.otr.their_priv_pk=this.their_priv_pk,this.their_keyid===this.otr.their_keyid&&BigInt.equals(this.their_y,this.otr.their_y)||this.their_keyid===this.otr.their_keyid-1&&BigInt.equals(this.their_y,this.otr.their_old_y)||(this.otr.their_y=this.their_y,this.otr.their_old_y=null,this.otr.their_keyid=this.their_keyid,this.otr.sessKeys[0]=[new this.otr.DHSession(this.otr.our_dh,this.otr.their_y),null],this.otr.sessKeys[1]=[new this.otr.DHSession(this.otr.our_old_dh,this.otr.their_y),null]),this.otr.ssid=this.ssid,this.otr.transmittedRS=this.transmittedRS,this.otr_version=version,this.otr.authstate=CONST.AUTHSTATE_NONE,this.otr.msgstate=CONST.MSGSTATE_ENCRYPTED,this.r=null,this.myhashed=null,this.dhcommit=null,this.encrypted=null,this.hashed=null,this.otr.trigger("status",[CONST.STATUS_AKE_SUCCESS]),void this.otr.sendStored())},handleAKE:function(msg){var send,vsm,type,version=msg.version;switch(msg.type){case"":if(HLP.debug.call(this.otr,"d-h key message"),msg=HLP.splitype(["DATA","DATA"],msg.msg),this.otr.authstate===CONST.AUTHSTATE_AWAITING_DHKEY){var ourHash=HLP.readMPI(this.myhashed),theirHash=HLP.readMPI(msg[1]);if(BigInt.greater(ourHash,theirHash)){type="",send=this.dhcommit;break}this.our_dh=this.otr.dh(),this.otr.authstate=CONST.AUTHSTATE_NONE,this.r=null,this.myhashed=null}else this.otr.authstate===CONST.AUTHSTATE_AWAITING_SIG&&(this.our_dh=this.otr.dh());this.otr.authstate=CONST.AUTHSTATE_AWAITING_REVEALSIG,this.encrypted=msg[0].substring(4),this.hashed=msg[1].substring(4),type="\n",send=HLP.packMPI(this.our_dh.publicKey);break;case"\n":if(HLP.debug.call(this.otr,"reveal signature message"),msg=HLP.splitype(["MPI"],msg.msg),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_DHKEY){if(this.otr.authstate!==CONST.AUTHSTATE_AWAITING_SIG)return;if(!BigInt.equals(this.their_y,HLP.readMPI(msg[0])))return}if(this.otr.authstate=CONST.AUTHSTATE_AWAITING_SIG,this.their_y=HLP.readMPI(msg[0]),!HLP.checkGroup(this.their_y,N_MINUS_2))return this.otr.error("Illegal g^y.");this.createKeys(this.their_y),type="",send=HLP.packMPI(this.r),send+=this.makeM(this.their_y,this.m1,this.c,this.m2),this.m1=null,this.m2=null,this.c=null;break;case"":if(HLP.debug.call(this.otr,"signature message"),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_REVEALSIG)return;msg=HLP.splitype(["DATA","DATA","MAC"],msg.msg),this.r=HLP.readMPI(msg[0]);var key=CryptoJS.enc.Hex.parse(BigInt.bigInt2str(this.r,16));key=CryptoJS.enc.Latin1.stringify(key);var gxmpi=HLP.decryptAes(this.encrypted,key,HLP.packCtr(0));gxmpi=gxmpi.toString(CryptoJS.enc.Latin1),this.their_y=HLP.readMPI(gxmpi);var hash=CryptoJS.SHA256(CryptoJS.enc.Latin1.parse(gxmpi));return HLP.compare(this.hashed,hash.toString(CryptoJS.enc.Latin1))?HLP.checkGroup(this.their_y,N_MINUS_2)?(this.createKeys(this.their_y),vsm=this.verifySignMac(msg[2],msg[1],this.m2,this.c,this.their_y,this.our_dh.publicKey,this.m1,HLP.packCtr(0)),vsm[0]?this.otr.error(vsm[0]):(this.their_keyid=vsm[1],this.their_priv_pk=vsm[2],send=this.makeM(this.their_y,this.m1_prime,this.c_prime,this.m2_prime),this.m1=null,this.m2=null,this.m1_prime=null,this.m2_prime=null,this.c=null,this.c_prime=null,this.sendMsg(version,"",send),void this.akeSuccess(version))):this.otr.error("Illegal g^x."):this.otr.error("Hashed g^x does not match.");case"":if(HLP.debug.call(this.otr,"data message"),this.otr.authstate!==CONST.AUTHSTATE_AWAITING_SIG)return;return msg=HLP.splitype(["DATA","MAC"],msg.msg),vsm=this.verifySignMac(msg[1],msg[0],this.m2_prime,this.c_prime,this.their_y,this.our_dh.publicKey,this.m1_prime,HLP.packCtr(0)),vsm[0]?this.otr.error(vsm[0]):(this.their_keyid=vsm[1],this.their_priv_pk=vsm[2],this.m1_prime=null,this.m2_prime=null,this.c_prime=null,this.transmittedRS=!0,void this.akeSuccess(version));default:return}this.sendMsg(version,type,send)},sendMsg:function(version,type,msg){var send=version+type,v3=version===CONST.OTR_VERSION_3;return v3&&(HLP.debug.call(this.otr,"instance tags"),send+=this.otr.our_instance_tag,send+=this.otr.their_instance_tag),send+=msg,send=HLP.wrapMsg(send,this.otr.fragment_size,v3,this.otr.our_instance_tag,this.otr.their_instance_tag),send[0]?this.otr.error(send[0]):void this.otr.io(send[1])},initiateAKE:function(version){HLP.debug.call(this.otr,"d-h commit message"),this.otr.trigger("status",[CONST.STATUS_AKE_INIT]),this.otr.authstate=CONST.AUTHSTATE_AWAITING_DHKEY;var gxmpi=HLP.packMPI(this.our_dh.publicKey);gxmpi=CryptoJS.enc.Latin1.parse(gxmpi),this.r=BigInt.randBigInt(128);var key=CryptoJS.enc.Hex.parse(BigInt.bigInt2str(this.r,16));key=CryptoJS.enc.Latin1.stringify(key),this.myhashed=CryptoJS.SHA256(gxmpi),this.myhashed=HLP.packData(this.myhashed.toString(CryptoJS.enc.Latin1)),this.dhcommit=HLP.packData(HLP.encryptAes(gxmpi,key,HLP.packCtr(0))),this.dhcommit+=this.myhashed,this.sendMsg(version,"",this.dhcommit)}}}.call(this),function(){"use strict";function SM(reqs){return this instanceof SM?(this.version=1,this.our_fp=reqs.our_fp,this.their_fp=reqs.their_fp,this.ssid=reqs.ssid,this.debug=!!reqs.debug,void this.init()):new SM(reqs)}var CryptoJS,BigInt,EventEmitter,CONST,HLP,root=this;"undefined"!=typeof module&&module.exports?(module.exports=SM,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),EventEmitter=require("../vendor/eventemitter.js"),CONST=require("./const.js"),HLP=require("./helpers.js")):(root.OTR.SM=SM,CryptoJS=root.CryptoJS,BigInt=root.BigInt,EventEmitter=root.EventEmitter,CONST=root.OTR.CONST,HLP=root.OTR.HLP);var G=BigInt.str2bigInt(CONST.G,10),N=BigInt.str2bigInt(CONST.N,16),N_MINUS_2=BigInt.sub(N,BigInt.str2bigInt("2",10)),Q=BigInt.sub(N,BigInt.str2bigInt("1",10));BigInt.divInt_(Q,2),HLP.extend(SM,EventEmitter),SM.prototype.init=function(){this.smpstate=CONST.SMPSTATE_EXPECT1,this.secret=null},SM.prototype.makeSecret=function(our,secret){var sha256=CryptoJS.algo.SHA256.create();sha256.update(CryptoJS.enc.Latin1.parse(HLP.packBytes(this.version,1))),sha256.update(CryptoJS.enc.Hex.parse(our?this.our_fp:this.their_fp)),sha256.update(CryptoJS.enc.Hex.parse(our?this.their_fp:this.our_fp)),sha256.update(CryptoJS.enc.Latin1.parse(this.ssid)),sha256.update(CryptoJS.enc.Latin1.parse(secret));var hash=sha256.finalize();this.secret=HLP.bits2bigInt(hash.toString(CryptoJS.enc.Latin1))},SM.prototype.makeG2s=function(){this.a2=HLP.randomExponent(),this.a3=HLP.randomExponent(),this.g2a=BigInt.powMod(G,this.a2,N),this.g3a=BigInt.powMod(G,this.a3,N),HLP.checkGroup(this.g2a,N_MINUS_2)&&HLP.checkGroup(this.g3a,N_MINUS_2)||this.makeG2s()},SM.prototype.computeGs=function(g2a,g3a){this.g2=BigInt.powMod(g2a,this.a2,N),this.g3=BigInt.powMod(g3a,this.a3,N)},SM.prototype.computePQ=function(r){this.p=BigInt.powMod(this.g3,r,N),this.q=HLP.multPowMod(G,r,this.g2,this.secret,N)},SM.prototype.computeR=function(){this.r=BigInt.powMod(this.QoQ,this.a3,N)},SM.prototype.computeRab=function(r){return BigInt.powMod(r,this.a3,N)},SM.prototype.computeC=function(v,r){return HLP.smpHash(v,BigInt.powMod(G,r,N))},SM.prototype.computeD=function(r,a,c){return BigInt.subMod(r,BigInt.multMod(a,c,Q),Q)},SM.prototype.handleSM=function(msg){var send,r2,r3,r7,t1,t2,t3,t4,rab,tmp2,cR,d7,ms,trust,expectStates={2:CONST.SMPSTATE_EXPECT1,3:CONST.SMPSTATE_EXPECT2,4:CONST.SMPSTATE_EXPECT3,5:CONST.SMPSTATE_EXPECT4,7:CONST.SMPSTATE_EXPECT1};if(6===msg.type)return this.init(),void this.trigger("abort");if(this.smpstate!==expectStates[msg.type])return this.abort();switch(this.smpstate){case CONST.SMPSTATE_EXPECT1:HLP.debug.call(this,"smp tlv 2");var ind,question;return 7===msg.type&&(ind=msg.msg.indexOf("\x00"),question=msg.msg.substring(0,ind),msg.msg=msg.msg.substring(ind+1)),ms=HLP.readLen(msg.msg.substr(0,4)),6!==ms?this.abort():(msg=HLP.unpackMPIs(6,msg.msg.substring(4)),HLP.checkGroup(msg[0],N_MINUS_2)&&HLP.checkGroup(msg[3],N_MINUS_2)&&HLP.ZKP(1,msg[1],HLP.multPowMod(G,msg[2],msg[0],msg[1],N))&&HLP.ZKP(2,msg[4],HLP.multPowMod(G,msg[5],msg[3],msg[4],N))?(this.g3ao=msg[3],this.makeG2s(),r2=HLP.randomExponent(),r3=HLP.randomExponent(),this.c2=this.computeC(3,r2),this.c3=this.computeC(4,r3),this.d2=this.computeD(r2,this.a2,this.c2),this.d3=this.computeD(r3,this.a3,this.c3),this.computeGs(msg[0],msg[3]),this.smpstate=CONST.SMPSTATE_EXPECT0,question&&(question=CryptoJS.enc.Latin1.parse(question).toString(CryptoJS.enc.Utf8)),void this.trigger("question",[question])):this.abort());case CONST.SMPSTATE_EXPECT2:if(HLP.debug.call(this,"smp tlv 3"),ms=HLP.readLen(msg.msg.substr(0,4)),11!==ms)return this.abort();if(msg=HLP.unpackMPIs(11,msg.msg.substring(4)),!(HLP.checkGroup(msg[0],N_MINUS_2)&&HLP.checkGroup(msg[3],N_MINUS_2)&&HLP.checkGroup(msg[6],N_MINUS_2)&&HLP.checkGroup(msg[7],N_MINUS_2)))return this.abort();if(!HLP.ZKP(3,msg[1],HLP.multPowMod(G,msg[2],msg[0],msg[1],N)))return this.abort();if(!HLP.ZKP(4,msg[4],HLP.multPowMod(G,msg[5],msg[3],msg[4],N)))return this.abort();if(this.g3ao=msg[3],this.computeGs(msg[0],msg[3]),t1=HLP.multPowMod(this.g3,msg[9],msg[6],msg[8],N),t2=HLP.multPowMod(G,msg[9],this.g2,msg[10],N),t2=BigInt.multMod(t2,BigInt.powMod(msg[7],msg[8],N),N),!HLP.ZKP(5,msg[8],t1,t2))return this.abort();var r4=HLP.randomExponent();this.computePQ(r4);var r5=HLP.randomExponent(),r6=HLP.randomExponent(),tmp=HLP.multPowMod(G,r5,this.g2,r6,N),cP=HLP.smpHash(6,BigInt.powMod(this.g3,r5,N),tmp),d5=this.computeD(r5,r4,cP),d6=this.computeD(r6,this.secret,cP);this.QoQ=BigInt.divMod(this.q,msg[7],N),this.PoP=BigInt.divMod(this.p,msg[6],N),this.computeR(),r7=HLP.randomExponent(),tmp2=BigInt.powMod(this.QoQ,r7,N),cR=HLP.smpHash(7,BigInt.powMod(G,r7,N),tmp2),d7=this.computeD(r7,this.a3,cR),this.smpstate=CONST.SMPSTATE_EXPECT4,send=HLP.packINT(8)+HLP.packMPIs([this.p,this.q,cP,d5,d6,this.r,cR,d7]),send=HLP.packTLV(4,send);break;case CONST.SMPSTATE_EXPECT3:if(HLP.debug.call(this,"smp tlv 4"),ms=HLP.readLen(msg.msg.substr(0,4)),8!==ms)return this.abort();if(msg=HLP.unpackMPIs(8,msg.msg.substring(4)),!HLP.checkGroup(msg[0],N_MINUS_2)||!HLP.checkGroup(msg[1],N_MINUS_2)||!HLP.checkGroup(msg[5],N_MINUS_2))return this.abort();if(t1=HLP.multPowMod(this.g3,msg[3],msg[0],msg[2],N),t2=HLP.multPowMod(G,msg[3],this.g2,msg[4],N),t2=BigInt.multMod(t2,BigInt.powMod(msg[1],msg[2],N),N),!HLP.ZKP(6,msg[2],t1,t2))return this.abort();if(t3=HLP.multPowMod(G,msg[7],this.g3ao,msg[6],N),this.QoQ=BigInt.divMod(msg[1],this.q,N),t4=HLP.multPowMod(this.QoQ,msg[7],msg[5],msg[6],N),!HLP.ZKP(7,msg[6],t3,t4))return this.abort();this.computeR(),r7=HLP.randomExponent(),tmp2=BigInt.powMod(this.QoQ,r7,N),cR=HLP.smpHash(8,BigInt.powMod(G,r7,N),tmp2),d7=this.computeD(r7,this.a3,cR),send=HLP.packINT(3)+HLP.packMPIs([this.r,cR,d7]),send=HLP.packTLV(5,send),rab=this.computeRab(msg[5]),trust=!!BigInt.equals(rab,BigInt.divMod(msg[0],this.p,N)),this.trigger("trust",[trust,"answered"]),this.init();break;case CONST.SMPSTATE_EXPECT4:return HLP.debug.call(this,"smp tlv 5"),ms=HLP.readLen(msg.msg.substr(0,4)),3!==ms?this.abort():(msg=HLP.unpackMPIs(3,msg.msg.substring(4)),HLP.checkGroup(msg[0],N_MINUS_2)?(t3=HLP.multPowMod(G,msg[2],this.g3ao,msg[1],N),t4=HLP.multPowMod(this.QoQ,msg[2],msg[0],msg[1],N),HLP.ZKP(8,msg[1],t3,t4)?(rab=this.computeRab(msg[0]),trust=!!BigInt.equals(rab,this.PoP),this.trigger("trust",[trust,"asked"]),void this.init()):this.abort()):this.abort())}this.sendMsg(send)},SM.prototype.sendMsg=function(send){this.trigger("send",[this.ssid,"\x00"+send])},SM.prototype.rcvSecret=function(secret,question){HLP.debug.call(this,"receive secret");var fn,our=!1;this.smpstate===CONST.SMPSTATE_EXPECT0?fn=this.answer:(fn=this.initiate,our=!0),this.makeSecret(our,secret),fn.call(this,question)},SM.prototype.answer=function(){HLP.debug.call(this,"smp answer");var r4=HLP.randomExponent();this.computePQ(r4);var r5=HLP.randomExponent(),r6=HLP.randomExponent(),tmp=HLP.multPowMod(G,r5,this.g2,r6,N),cP=HLP.smpHash(5,BigInt.powMod(this.g3,r5,N),tmp),d5=this.computeD(r5,r4,cP),d6=this.computeD(r6,this.secret,cP);this.smpstate=CONST.SMPSTATE_EXPECT3;var send=HLP.packINT(11)+HLP.packMPIs([this.g2a,this.c2,this.d2,this.g3a,this.c3,this.d3,this.p,this.q,cP,d5,d6]);
+this.sendMsg(HLP.packTLV(3,send))},SM.prototype.initiate=function(question){HLP.debug.call(this,"smp initiate"),this.smpstate!==CONST.SMPSTATE_EXPECT1&&this.abort(),this.makeG2s();var r2=HLP.randomExponent(),r3=HLP.randomExponent();this.c2=this.computeC(1,r2),this.c3=this.computeC(2,r3),this.d2=this.computeD(r2,this.a2,this.c2),this.d3=this.computeD(r3,this.a3,this.c3),this.smpstate=CONST.SMPSTATE_EXPECT2;var send="",type=2;question&&(send+=question,send+="\x00",type=7),send+=HLP.packINT(6)+HLP.packMPIs([this.g2a,this.c2,this.d2,this.g3a,this.c3,this.d3]),this.sendMsg(HLP.packTLV(type,send))},SM.prototype.abort=function(){this.init(),this.sendMsg(HLP.packTLV(6,"")),this.trigger("abort")}}.call(this),function(){"use strict";function OTRCB(cb){this.cb=cb}function OTR(options){if(!(this instanceof OTR))return new OTR(options);if(options=options||{},options.priv&&!(options.priv instanceof DSA))throw new Error("Requires long-lived DSA key.");if(this.priv=options.priv?options.priv:new DSA,this.fragment_size=options.fragment_size||0,this.fragment_size<0)throw new Error("Fragment size must be a positive integer.");if(this.send_interval=options.send_interval||0,this.send_interval<0)throw new Error("Send interval must be a positive integer.");this.outgoing=[],this.our_instance_tag=options.instance_tag||OTR.makeInstanceTag(),this.debug=!!options.debug,this.smw=options.smw,this.init();var self=this;["sendMsg","receiveMsg"].forEach(function(meth){self[meth]=self[meth].bind(self)}),EventEmitter.call(this)}var CryptoJS,BigInt,EventEmitter,Worker,SMWPath,CONST,HLP,Parse,AKE,SM,DSA,root=this;"undefined"!=typeof module&&module.exports?(module.exports=OTR,CryptoJS=require("../vendor/crypto.js"),BigInt=require("../vendor/bigint.js"),EventEmitter=require("../vendor/eventemitter.js"),SMWPath=require("path").join(__dirname,"/sm-webworker.js"),CONST=require("./const.js"),HLP=require("./helpers.js"),Parse=require("./parse.js"),AKE=require("./ake.js"),SM=require("./sm.js"),DSA=require("./dsa.js"),OTR.CONST=CONST):(Object.keys(root.OTR).forEach(function(k){OTR[k]=root.OTR[k]}),root.OTR=OTR,CryptoJS=root.CryptoJS,BigInt=root.BigInt,EventEmitter=root.EventEmitter,Worker=root.Worker,SMWPath="sm-webworker.js",CONST=OTR.CONST,HLP=OTR.HLP,Parse=OTR.Parse,AKE=OTR.AKE,SM=OTR.SM,DSA=root.DSA);var G=BigInt.str2bigInt(CONST.G,10),N=BigInt.str2bigInt(CONST.N,16),MAX_INT=Math.pow(2,53)-1,MAX_UINT=Math.pow(2,31)-1;HLP.extend(OTR,EventEmitter),OTR.prototype.init=function(){this.msgstate=CONST.MSGSTATE_PLAINTEXT,this.authstate=CONST.AUTHSTATE_NONE,this.ALLOW_V2=!0,this.ALLOW_V3=!0,this.REQUIRE_ENCRYPTION=!1,this.SEND_WHITESPACE_TAG=!1,this.WHITESPACE_START_AKE=!1,this.ERROR_START_AKE=!1,Parse.initFragment(this),this.their_y=null,this.their_old_y=null,this.their_keyid=0,this.their_priv_pk=null,this.their_instance_tag="\x00\x00\x00\x00",this.our_dh=this.dh(),this.our_old_dh=this.dh(),this.our_keyid=2,this.sessKeys=[new Array(2),new Array(2)],this.storedMgs=[],this.oldMacKeys=[],this.sm=null,this._akeInit(),this.receivedPlaintext=!1},OTR.prototype._akeInit=function(){this.ake=new AKE(this),this.transmittedRS=!1,this.ssid=null},OTR.prototype._SMW=function(otr,reqs){this.otr=otr;var opts={path:SMWPath,seed:BigInt.getSeed};"object"==typeof otr.smw&&Object.keys(otr.smw).forEach(function(k){opts[k]=otr.smw[k]}),"undefined"!=typeof module&&module.exports&&(Worker=require("webworker-threads").Worker),this.worker=new Worker(opts.path);var self=this;this.worker.onmessage=function(e){var d=e.data;d&&self.trigger(d.method,d.args)},this.worker.postMessage({type:"seed",seed:opts.seed(),imports:opts.imports}),this.worker.postMessage({type:"init",reqs:reqs})},HLP.extend(OTR.prototype._SMW,EventEmitter),["handleSM","rcvSecret","abort"].forEach(function(m){OTR.prototype._SMW.prototype[m]=function(){this.worker.postMessage({type:"method",method:m,args:Array.prototype.slice.call(arguments,0)})}}),OTR.prototype._smInit=function(){var reqs={ssid:this.ssid,our_fp:this.priv.fingerprint(),their_fp:this.their_priv_pk.fingerprint(),debug:this.debug};this.smw?(this.sm&&this.sm.worker.terminate(),this.sm=new this._SMW(this,reqs)):this.sm=new SM(reqs);var self=this;["trust","abort","question"].forEach(function(e){self.sm.on(e,function(){self.trigger("smp",[e].concat(Array.prototype.slice.call(arguments)))})}),this.sm.on("send",function(ssid,send){self.ssid===ssid&&(send=self.prepareMsg(send),self.io(send))})},OTR.prototype.io=function(msg,meta){msg=[].concat(msg).map(function(m){return{msg:m,meta:meta}}),this.outgoing=this.outgoing.concat(msg);var self=this;!function send(first){if(!first){if(!self.outgoing.length)return;var elem=self.outgoing.shift(),cb=null;elem.meta instanceof OTRCB&&(cb=elem.meta.cb,elem.meta=null),self.trigger("io",[elem.msg,elem.meta]),cb&&cb()}setTimeout(send,first?0:self.send_interval)}(!0)},OTR.prototype.dh=function(){var keys={privateKey:BigInt.randBigInt(320)};return keys.publicKey=BigInt.powMod(G,keys.privateKey,N),keys},OTR.prototype.DHSession=function DHSession(our_dh,their_y){if(!(this instanceof DHSession))return new DHSession(our_dh,their_y);var s=BigInt.powMod(their_y,our_dh.privateKey,N),secbytes=HLP.packMPI(s);this.id=HLP.mask(HLP.h2("\x00",secbytes),0,64);var sq=BigInt.greater(our_dh.publicKey,their_y),sendbyte=sq?"":"",rcvbyte=sq?"":"";this.sendenc=HLP.mask(HLP.h1(sendbyte,secbytes),0,128),this.sendmac=CryptoJS.SHA1(CryptoJS.enc.Latin1.parse(this.sendenc)),this.sendmac=this.sendmac.toString(CryptoJS.enc.Latin1),this.rcvenc=HLP.mask(HLP.h1(rcvbyte,secbytes),0,128),this.rcvmac=CryptoJS.SHA1(CryptoJS.enc.Latin1.parse(this.rcvenc)),this.rcvmac=this.rcvmac.toString(CryptoJS.enc.Latin1),this.rcvmacused=!1,this.extra_symkey=HLP.h2("ÿ",secbytes),this.send_counter=0,this.rcv_counter=0},OTR.prototype.rotateOurKeys=function(){var self=this;this.sessKeys[1].forEach(function(sk){sk&&sk.rcvmacused&&self.oldMacKeys.push(sk.rcvmac)}),this.our_old_dh=this.our_dh,this.our_dh=this.dh(),this.our_keyid+=1,this.sessKeys[1][0]=this.sessKeys[0][0],this.sessKeys[1][1]=this.sessKeys[0][1],this.sessKeys[0]=[this.their_y?new this.DHSession(this.our_dh,this.their_y):null,this.their_old_y?new this.DHSession(this.our_dh,this.their_old_y):null]},OTR.prototype.rotateTheirKeys=function(their_y){this.their_keyid+=1;var self=this;this.sessKeys.forEach(function(sk){sk[1]&&sk[1].rcvmacused&&self.oldMacKeys.push(sk[1].rcvmac)}),this.their_old_y=this.their_y,this.sessKeys[0][1]=this.sessKeys[0][0],this.sessKeys[1][1]=this.sessKeys[1][0],this.their_y=their_y,this.sessKeys[0][0]=new this.DHSession(this.our_dh,this.their_y),this.sessKeys[1][0]=new this.DHSession(this.our_old_dh,this.their_y)},OTR.prototype.prepareMsg=function(msg,esk){if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED||0===this.their_keyid)return this.notify("Not ready to encrypt.");var sessKeys=this.sessKeys[1][0];if(sessKeys.send_counter>=MAX_INT)return this.notify("Should have rekeyed by now.");sessKeys.send_counter+=1;var ctr=HLP.packCtr(sessKeys.send_counter),send=this.ake.otr_version+"",v3=this.ake.otr_version===CONST.OTR_VERSION_3;if(v3&&(send+=this.our_instance_tag,send+=this.their_instance_tag),send+="\x00",send+=HLP.packINT(this.our_keyid-1),send+=HLP.packINT(this.their_keyid),send+=HLP.packMPI(this.our_dh.publicKey),send+=ctr.substring(0,8),Math.ceil(msg.length/8)>=MAX_UINT)return this.notify("Message is too long.");var aes=HLP.encryptAes(CryptoJS.enc.Latin1.parse(msg),sessKeys.sendenc,ctr);return send+=HLP.packData(aes),send+=HLP.make1Mac(send,sessKeys.sendmac),send+=HLP.packData(this.oldMacKeys.splice(0).join("")),send=HLP.wrapMsg(send,this.fragment_size,v3,this.our_instance_tag,this.their_instance_tag),send[0]?this.notify(send[0]):(esk&&this.trigger("file",["send",sessKeys.extra_symkey,esk]),send[1])},OTR.prototype.handleDataMsg=function(msg){var vt=msg.version+msg.type;this.ake.otr_version===CONST.OTR_VERSION_3&&(vt+=msg.instance_tags);var types=["BYTE","INT","INT","MPI","CTR","DATA","MAC","DATA"];msg=HLP.splitype(types,msg.msg);var ign=""===msg[0];if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED||8!==msg.length)return void(ign||this.error("Received an unreadable encrypted message."));var our_keyid=this.our_keyid-HLP.readLen(msg[2]),their_keyid=this.their_keyid-HLP.readLen(msg[1]);if(0>our_keyid||our_keyid>1)return void(ign||this.error("Not of our latest keys."));if(0>their_keyid||their_keyid>1)return void(ign||this.error("Not of your latest keys."));var their_y=their_keyid?this.their_old_y:this.their_y;if(1===their_keyid&&!their_y)return void(ign||this.error("Do not have that key."));var sessKeys=this.sessKeys[our_keyid][their_keyid],ctr=HLP.unpackCtr(msg[4]);if(ctr<=sessKeys.rcv_counter)return void(ign||this.error("Counter in message is not larger."));sessKeys.rcv_counter=ctr,vt+=msg.slice(0,6).join("");var vmac=HLP.make1Mac(vt,sessKeys.rcvmac);if(!HLP.compare(msg[6],vmac))return void(ign||this.error("MACs do not match."));sessKeys.rcvmacused=!0;var out=HLP.decryptAes(msg[5].substring(4),sessKeys.rcvenc,HLP.padCtr(msg[4]));out=out.toString(CryptoJS.enc.Latin1),our_keyid||this.rotateOurKeys(),their_keyid||this.rotateTheirKeys(HLP.readMPI(msg[3]));var ind=out.indexOf("\x00");return~ind&&(this.handleTLVs(out.substring(ind+1),sessKeys),out=out.substring(0,ind)),out=CryptoJS.enc.Latin1.parse(out),out.toString(CryptoJS.enc.Utf8)},OTR.prototype.handleTLVs=function(tlvs,sessKeys){for(var type,len,msg;tlvs.length&&(type=HLP.unpackSHORT(tlvs.substr(0,2)),len=HLP.unpackSHORT(tlvs.substr(2,2)),msg=tlvs.substr(4,len),!(msg.length<len));){switch(type){case 1:this.msgstate=CONST.MSGSTATE_FINISHED,this.trigger("status",[CONST.STATUS_END_OTR]);break;case 2:case 3:case 4:case 5:case 6:case 7:if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED)return void(this.sm&&this.sm.abort());this.sm||this._smInit(),this.sm.handleSM({msg:msg,type:type});break;case 8:msg=msg.substring(4),msg=CryptoJS.enc.Latin1.parse(msg),msg=msg.toString(CryptoJS.enc.Utf8),this.trigger("file",["receive",sessKeys.extra_symkey,msg])}tlvs=tlvs.substring(4+len)}},OTR.prototype.smpSecret=function(secret,question){return this.msgstate!==CONST.MSGSTATE_ENCRYPTED?this.notify("Must be encrypted for SMP."):"string"!=typeof secret||secret.length<1?this.notify("Secret is required."):(this.sm||this._smInit(),secret=CryptoJS.enc.Utf8.parse(secret).toString(CryptoJS.enc.Latin1),question&&(question=CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1)),void this.sm.rcvSecret(secret,question))},OTR.prototype.sendQueryMsg=function(){var versions={},msg=CONST.OTR_TAG;this.ALLOW_V2&&(versions[2]=!0),this.ALLOW_V3&&(versions[3]=!0);var vs=Object.keys(versions);vs.length&&(msg+="v",vs.forEach(function(v){"1"!==v&&(msg+=v)}),msg+="?"),this.io(msg),this.trigger("status",[CONST.STATUS_SEND_QUERY])},OTR.prototype.sendMsg=function(msg,meta){switch((this.REQUIRE_ENCRYPTION||this.msgstate!==CONST.MSGSTATE_PLAINTEXT)&&(msg=CryptoJS.enc.Utf8.parse(msg),msg=msg.toString(CryptoJS.enc.Latin1)),this.msgstate){case CONST.MSGSTATE_PLAINTEXT:if(this.REQUIRE_ENCRYPTION)return this.storedMgs.push({msg:msg,meta:meta}),void this.sendQueryMsg();this.SEND_WHITESPACE_TAG&&!this.receivedPlaintext&&(msg+=CONST.WHITESPACE_TAG,this.ALLOW_V3&&(msg+=CONST.WHITESPACE_TAG_V3),this.ALLOW_V2&&(msg+=CONST.WHITESPACE_TAG_V2));break;case CONST.MSGSTATE_FINISHED:return this.storedMgs.push({msg:msg,meta:meta}),void this.notify("Message cannot be sent at this time.","warn");case CONST.MSGSTATE_ENCRYPTED:msg=this.prepareMsg(msg);break;default:throw new Error("Unknown message state.")}msg&&this.io(msg,meta)},OTR.prototype.receiveMsg=function(msg,meta){if(msg=Parse.parseMsg(this,msg)){switch(msg.cls){case"error":return void this.notify(msg.msg);case"ake":return msg.version===CONST.OTR_VERSION_3&&this.checkInstanceTags(msg.instance_tags)?void this.notify("Received a message intended for a different session.","warn"):void this.ake.handleAKE(msg);case"data":if(msg.version===CONST.OTR_VERSION_3&&this.checkInstanceTags(msg.instance_tags))return void this.notify("Received a message intended for a different session.","warn");msg.msg=this.handleDataMsg(msg),msg.encrypted=!0;break;case"query":this.msgstate===CONST.MSGSTATE_ENCRYPTED&&this._akeInit(),this.doAKE(msg);break;default:(this.REQUIRE_ENCRYPTION||this.msgstate!==CONST.MSGSTATE_PLAINTEXT)&&this.notify("Received an unencrypted message.","warn"),this.receivedPlaintext=!0,this.WHITESPACE_START_AKE&&msg.ver.length>0&&this.doAKE(msg)}msg.msg&&this.trigger("ui",[msg.msg,!!msg.encrypted,meta])}},OTR.prototype.checkInstanceTags=function(it){var their_it=HLP.readLen(it.substr(0,4)),our_it=HLP.readLen(it.substr(4,4));if(our_it&&our_it!==HLP.readLen(this.our_instance_tag))return!0;if(HLP.readLen(this.their_instance_tag)){if(HLP.readLen(this.their_instance_tag)!==their_it)return!0}else{if(100>their_it)return!0;this.their_instance_tag=HLP.packINT(their_it)}},OTR.prototype.doAKE=function(msg){this.ALLOW_V3&&~msg.ver.indexOf(CONST.OTR_VERSION_3)?this.ake.initiateAKE(CONST.OTR_VERSION_3):this.ALLOW_V2&&~msg.ver.indexOf(CONST.OTR_VERSION_2)?this.ake.initiateAKE(CONST.OTR_VERSION_2):this.notify("OTR conversation requested, but no compatible protocol version found.","warn")},OTR.prototype.error=function(err){this.debug||(err="An OTR error has occurred."),this.io("?OTR Error:"+err),this.notify(err)},OTR.prototype.notify=function(err,severity){this.trigger("error",[err,severity||"error"])},OTR.prototype.sendStored=function(){var self=this;this.storedMgs.splice(0).forEach(function(elem){var msg=self.prepareMsg(elem.msg);self.io(msg,elem.meta)})},OTR.prototype.sendFile=function(filename){if(this.msgstate!==CONST.MSGSTATE_ENCRYPTED)return this.notify("Not ready to encrypt.");if(this.ake.otr_version!==CONST.OTR_VERSION_3)return this.notify("Protocol v3 required.");if(!filename)return this.notify("Please specify a filename.");var l1name=CryptoJS.enc.Utf8.parse(filename);if(l1name=l1name.toString(CryptoJS.enc.Latin1),l1name.length>=65532)return this.notify("Filename is too long.");var msg="\x00";msg+="\x00\b",msg+=HLP.packSHORT(4+l1name.length),msg+="\x00\x00\x00",msg+=l1name,msg=this.prepareMsg(msg,filename),this.io(msg)},OTR.prototype.endOtr=function(cb){this.msgstate===CONST.MSGSTATE_ENCRYPTED&&("function"==typeof cb&&(cb=new OTRCB(cb)),this.sendMsg("\x00\x00\x00\x00",cb),this.sm&&(this.smw&&this.sm.worker.terminate(),this.sm=null)),this.msgstate=CONST.MSGSTATE_PLAINTEXT,this.receivedPlaintext=!1,this.trigger("status",[CONST.STATUS_END_OTR])},OTR.makeInstanceTag=function(){var num=BigInt.randBigInt(32);return BigInt.greater(BigInt.str2bigInt("100",16),num)?OTR.makeInstanceTag():HLP.packINT(parseInt(BigInt.bigInt2str(num,10),10))}}.call(this),{OTR:this.OTR,DSA:this.DSA}}); \ No newline at end of file
diff --git a/build/js/jsxc/lib/strophe.caps.js b/build/js/jsxc/lib/strophe.caps.js
index de2ffdc..7acd9d9 100644
--- a/build/js/jsxc/lib/strophe.caps.js
+++ b/build/js/jsxc/lib/strophe.caps.js
@@ -191,13 +191,18 @@
* Returns: (Boolean) - false, to automatically remove the handler.
*/
_handleDiscoInfoReply: function(stanza) {
- var query = stanza.querySelector('query'), node = query.getAttribute('node').split('#'), ver = node[1], from = stanza.getAttribute('from');
+ var query = stanza.querySelector('query');
+ var from = stanza.getAttribute('from');
+ var node = query.getAttribute('node');
+ var ver = (node)? node.split('#')[1] : this._jidVerIndex[from]; //fix open prosody issue
+
if (!this._knownCapabilities[ver]) {
var childNodes = query.childNodes, childNodesLen = childNodes.length;
this._knownCapabilities[ver] = {
features: [],
identities: []
};
+
for (var i = 0; i < childNodesLen; i++) {
var node = childNodes[i];
if (node.nodeName == 'feature') {
@@ -205,10 +210,11 @@
} else if (node.nodeName == 'identity') {
this._knownCapabilities[ver]['identities'].push(this._attributesToJsObject(node.attributes));
} else {
- if (_knownCapabilities[ver][node.nodeName])
- _knownCapabilities[ver][node.nodeName] = [];
+ if (typeof this._knownCapabilities[ver][node.nodeName] === 'undefined')
+ this._knownCapabilities[ver][node.nodeName] = [];
this._knownCapabilities[ver][node.nodeName].push(this._attributesToJsObject(node.attributes));
}
+
}
this._jidVerIndex[from] = ver;
} else if (!this._jidVerIndex[from] || !this._jidVerIndex[from] !== ver) {
diff --git a/build/js/ojsxc.js b/build/js/ojsxc.js
index be62583..3be831a 100644
--- a/build/js/ojsxc.js
+++ b/build/js/ojsxc.js
@@ -1,13 +1,13 @@
/*!
- * ojsxc v1.0.0 - 2014-11-06
+ * ojsxc v1.1.0-beta - 2015-02-03
*
- * Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
+ * Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
*
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0
+ * @version 1.1.0-beta
* @license MIT
*/
@@ -115,11 +115,6 @@ $(function() {
displayRosterMinimized: function() {
return OC.currentUser != null;
},
- otr: {
- debug: true,
- SEND_WHITESPACE_TAG: true,
- WHITESPACE_START_AKE: true
- },
defaultAvatar: function(jid) {
var cache = jsxc.storage.getUserItem('defaultAvatars') || {};
var user = jid.replace(/@.+/, '');