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>2014-10-31 16:06:28 +0300
committersualko <github@spam.herberth.eu>2014-10-31 16:06:28 +0300
commit83527673f25600be380d0d000ef5896edf7e7d1a (patch)
treeb3f175fa3980d61fa11a7dfa06b03cc21a41f87b /build
parenta957d7574e11477f32908392703c18375df39bb2 (diff)
build 1.0.0-beta2
Diffstat (limited to 'build')
-rw-r--r--build/appinfo/app.php2
-rw-r--r--build/appinfo/info.xml2
-rw-r--r--build/appinfo/version2
-rw-r--r--build/css/jsxc.oc.css4
-rw-r--r--build/js/admin.js4
-rw-r--r--build/js/eof.js4
-rw-r--r--build/js/jsxc/jsxc.css2
-rw-r--r--build/js/jsxc/jsxc.js28
-rw-r--r--build/js/jsxc/jsxc.lib.js19
-rw-r--r--build/js/jsxc/jsxc.lib.webrtc.js9
-rw-r--r--build/js/jsxc/jsxc.min.js16
-rw-r--r--build/js/jsxc/jsxc.min.js.map2
-rw-r--r--build/js/jsxc/lib/jsxc.dep.js (renamed from build/js/jsxc/jsxc.dep.js)6
-rw-r--r--build/js/jsxc/lib/jsxc.dep.min.js (renamed from build/js/jsxc/jsxc.dep.min.js)4
-rw-r--r--build/js/jsxc/lib/jsxc.dep.min.js.map (renamed from build/js/jsxc/jsxc.dep.min.js.map)0
-rw-r--r--build/js/ojsxc.js4
16 files changed, 61 insertions, 47 deletions
diff --git a/build/appinfo/app.php b/build/appinfo/app.php
index 41b55c1..272120d 100644
--- a/build/appinfo/app.php
+++ b/build/appinfo/app.php
@@ -39,7 +39,7 @@ if(DEBUG === true) {
OCP\Util::addScript ( 'ojsxc', 'jsxc/lib/jquery.colorbox-min' );
OCP\Util::addScript ( 'ojsxc', 'jsxc/lib/jquery.slimscroll' );
OCP\Util::addScript ( 'ojsxc', 'jsxc/lib/jquery.fullscreen' );
- OCP\Util::addScript ( 'ojsxc', 'jsxc/jsxc.dep.min' );
+ OCP\Util::addScript ( 'ojsxc', 'jsxc/lib/jsxc.dep.min' );
OCP\Util::addScript ( 'ojsxc', 'jsxc/jsxc.min' );
}
diff --git a/build/appinfo/info.xml b/build/appinfo/info.xml
index 56f2f34..bfcee11 100644
--- a/build/appinfo/info.xml
+++ b/build/appinfo/info.xml
@@ -3,7 +3,7 @@
<id>ojsxc</id>
<name>JavaScript XMPP Chat</name>
<description>XMPP Chat with OTR</description>
- <version>1.0.0-beta1</version>
+ <version>1.0.0-beta2</version>
<licence>MIT</licence>
<author>Klaus Herberth</author>
<require>5</require>
diff --git a/build/appinfo/version b/build/appinfo/version
index 547326a..1cff6ec 100644
--- a/build/appinfo/version
+++ b/build/appinfo/version
@@ -1 +1 @@
-1.0.0-beta1 \ No newline at end of file
+1.0.0-beta2 \ No newline at end of file
diff --git a/build/css/jsxc.oc.css b/build/css/jsxc.oc.css
index fe38a31..59f1cf4 100644
--- a/build/css/jsxc.oc.css
+++ b/build/css/jsxc.oc.css
@@ -1,5 +1,5 @@
/*!
- * ojsxc v1.0.0-beta1 - 2014-10-29
+ * ojsxc v1.0.0-beta2 - 2014-10-31
*
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -7,7 +7,7 @@
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0-beta1
+ * @version 1.0.0-beta2
* @license MIT
*/
diff --git a/build/js/admin.js b/build/js/admin.js
index 40d8fa2..bcdbf4a 100644
--- a/build/js/admin.js
+++ b/build/js/admin.js
@@ -1,5 +1,5 @@
/*!
- * ojsxc v1.0.0-beta1 - 2014-10-29
+ * ojsxc v1.0.0-beta2 - 2014-10-31
*
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -7,7 +7,7 @@
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0-beta1
+ * @version 1.0.0-beta2
* @license MIT
*/
diff --git a/build/js/eof.js b/build/js/eof.js
index 36ffc54..33ff1be 100644
--- a/build/js/eof.js
+++ b/build/js/eof.js
@@ -1,5 +1,5 @@
/*!
- * ojsxc v1.0.0-beta1 - 2014-10-29
+ * ojsxc v1.0.0-beta2 - 2014-10-31
*
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -7,7 +7,7 @@
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0-beta1
+ * @version 1.0.0-beta2
* @license MIT
*/
diff --git a/build/js/jsxc/jsxc.css b/build/js/jsxc/jsxc.css
index a6fd35e..7692f9b 100644
--- a/build/js/jsxc/jsxc.css
+++ b/build/js/jsxc/jsxc.css
@@ -178,6 +178,7 @@ li .jsxc_name:hover {
margin-right: 5px;
border: 1px solid #000 !important;
line-height: 100%;
+ cursor: pointer;
}
.jsxc_spot.jsxc_online, .jsxc_spot.jsxc_chat {
@@ -1070,6 +1071,7 @@ div.jsxc_settings li {
height: 30px;
line-height: 30px;
text-align: left;
+ cursor: pointer;
}
div.jsxc_settings li:first-child {
diff --git a/build/js/jsxc/jsxc.js b/build/js/jsxc/jsxc.js
index a604852..19c47d0 100644
--- a/build/js/jsxc/jsxc.js
+++ b/build/js/jsxc/jsxc.js
@@ -1,7 +1,7 @@
/*! This file is concatenated for the browser. */
/*!
- * jsxc v1.0.0-beta1 - 2014-10-29
+ * jsxc v1.0.0-beta2 - 2014-10-31
*
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -9,7 +9,7 @@
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0-beta1
+ * @version 1.0.0-beta2
* @license MIT
*/
@@ -25,7 +25,7 @@ var jsxc;
*/
jsxc = {
/** Version of jsxc */
- version: '1.0.0-beta1',
+ version: '1.0.0-beta2',
/** True if i'm the master */
master: false,
@@ -2319,7 +2319,11 @@ var jsxc;
var options = {};
options = {
onComplete: function() {
- $('#jsxc_dialog .jsxc_close').click(jsxc.gui.dialog.close);
+ $('#jsxc_dialog .jsxc_close').click(function(ev) {
+ ev.preventDefault();
+
+ jsxc.gui.dialog.close();
+ });
// workaround for old colorbox version (used by firstrunwizard)
if (options.closeButton === false) {
@@ -3338,6 +3342,7 @@ var jsxc;
jsxc.storage.removeUserItem('windowlist');
jsxc.storage.removeUserItem('own');
jsxc.storage.removeUserItem('avatar', 'own');
+ jsxc.storage.removeUserItem('otrlist');
// submit login form
if (jsxc.triggeredFromForm) {
@@ -3768,8 +3773,6 @@ var jsxc;
return true;
}
- $(document).trigger('message.jsxc', [ from, body ]);
-
var win = jsxc.gui.window.init(bid);
// If we now the full jid, we use it
@@ -3780,6 +3783,8 @@ var jsxc;
});
}
+ $(document).trigger('message.jsxc', [ from, body ]);
+
// create related otr object
if (jsxc.master && !jsxc.otr.objects[bid]) {
jsxc.otr.create(bid);
@@ -3947,7 +3952,7 @@ var jsxc;
* @private
*/
_sendMessage: function(jid, msg, uid) {
- var data = jsxc.storage.getUserItem('buddy', jsxc.jidToBid(jid));
+ var data = jsxc.storage.getUserItem('buddy', jsxc.jidToBid(jid)) || {};
var isBar = (Strophe.getBareJidFromJid(jid) === jid);
var type = data.type || 'chat';
@@ -5872,7 +5877,7 @@ var jsxc;
}(jQuery));
/*!
- * jsxc v1.0.0-beta1 - 2014-10-29
+ * jsxc v1.0.0-beta2 - 2014-10-31
*
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -5880,7 +5885,7 @@ var jsxc;
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0-beta1
+ * @version 1.0.0-beta2
* @license MIT
*/
@@ -6073,11 +6078,12 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
* Return list of video capable resources.
*
* @memberOf jsxc.webrtc
- * @param bid
+ * @param jid
* @returns {Array}
*/
- getCapableRes: function(bid) {
+ getCapableRes: function(jid) {
var self = jsxc.webrtc;
+ var bid = jsxc.jidToBid(jid);
var res = jsxc.storage.getUserItem('res', bid) || [];
var available = [];
diff --git a/build/js/jsxc/jsxc.lib.js b/build/js/jsxc/jsxc.lib.js
index 2058c36..7d58e41 100644
--- a/build/js/jsxc/jsxc.lib.js
+++ b/build/js/jsxc/jsxc.lib.js
@@ -1,5 +1,5 @@
/*!
- * jsxc v1.0.0-beta1 - 2014-10-29
+ * jsxc v1.0.0-beta2 - 2014-10-31
*
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -7,7 +7,7 @@
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0-beta1
+ * @version 1.0.0-beta2
* @license MIT
*/
@@ -23,7 +23,7 @@ var jsxc;
*/
jsxc = {
/** Version of jsxc */
- version: '1.0.0-beta1',
+ version: '1.0.0-beta2',
/** True if i'm the master */
master: false,
@@ -2317,7 +2317,11 @@ var jsxc;
var options = {};
options = {
onComplete: function() {
- $('#jsxc_dialog .jsxc_close').click(jsxc.gui.dialog.close);
+ $('#jsxc_dialog .jsxc_close').click(function(ev) {
+ ev.preventDefault();
+
+ jsxc.gui.dialog.close();
+ });
// workaround for old colorbox version (used by firstrunwizard)
if (options.closeButton === false) {
@@ -3336,6 +3340,7 @@ var jsxc;
jsxc.storage.removeUserItem('windowlist');
jsxc.storage.removeUserItem('own');
jsxc.storage.removeUserItem('avatar', 'own');
+ jsxc.storage.removeUserItem('otrlist');
// submit login form
if (jsxc.triggeredFromForm) {
@@ -3766,8 +3771,6 @@ var jsxc;
return true;
}
- $(document).trigger('message.jsxc', [ from, body ]);
-
var win = jsxc.gui.window.init(bid);
// If we now the full jid, we use it
@@ -3778,6 +3781,8 @@ var jsxc;
});
}
+ $(document).trigger('message.jsxc', [ from, body ]);
+
// create related otr object
if (jsxc.master && !jsxc.otr.objects[bid]) {
jsxc.otr.create(bid);
@@ -3945,7 +3950,7 @@ var jsxc;
* @private
*/
_sendMessage: function(jid, msg, uid) {
- var data = jsxc.storage.getUserItem('buddy', jsxc.jidToBid(jid));
+ var data = jsxc.storage.getUserItem('buddy', jsxc.jidToBid(jid)) || {};
var isBar = (Strophe.getBareJidFromJid(jid) === jid);
var type = data.type || 'chat';
diff --git a/build/js/jsxc/jsxc.lib.webrtc.js b/build/js/jsxc/jsxc.lib.webrtc.js
index 60e52f4..a1801ef 100644
--- a/build/js/jsxc/jsxc.lib.webrtc.js
+++ b/build/js/jsxc/jsxc.lib.webrtc.js
@@ -1,5 +1,5 @@
/*!
- * jsxc v1.0.0-beta1 - 2014-10-29
+ * jsxc v1.0.0-beta2 - 2014-10-31
*
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -7,7 +7,7 @@
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0-beta1
+ * @version 1.0.0-beta2
* @license MIT
*/
@@ -200,11 +200,12 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
* Return list of video capable resources.
*
* @memberOf jsxc.webrtc
- * @param bid
+ * @param jid
* @returns {Array}
*/
- getCapableRes: function(bid) {
+ getCapableRes: function(jid) {
var self = jsxc.webrtc;
+ var bid = jsxc.jidToBid(jid);
var res = jsxc.storage.getUserItem('res', bid) || [];
var available = [];
diff --git a/build/js/jsxc/jsxc.min.js b/build/js/jsxc/jsxc.min.js
index faa8a9b..6ec57db 100644
--- a/build/js/jsxc/jsxc.min.js
+++ b/build/js/jsxc/jsxc.min.js
@@ -1,6 +1,6 @@
/*! This file is concatenated for the browser. */
/*!
- * jsxc v1.0.0-beta1 - 2014-10-29
+ * jsxc v1.0.0-beta2 - 2014-10-31
*
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -8,14 +8,14 @@
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0-beta1
+ * @version 1.0.0-beta2
* @license MIT
*/
-var jsxc;!function($){"use strict";jsxc={version:"1.0.0-beta1",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]||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.");if(jsxc.options.checkFlash&&!jsxc.hasFlash())return void jsxc.debug("No flash plugin for cross-domain requests.");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},hasFlash:function(){return"undefined"==typeof navigator.plugins||0===navigator.plugins.length?!!new ActiveXObject("ShockwaveFlash.ShockwaveFlash"):navigator.plugins["Shockwave Flash"]},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,password:null,overwrite:!1,onlogin:!0},loginForm:{form:null,jid:null,pass:null,preJid:function(jid){return jid}},logoutElement:null,debug:function(){},checkFlash:!0,numberOfMsg:10,defaultLang:"en",autoLang:!0,rosterAppend:"body",notification:!0,popupDuration:6e3,root:"",loginTimeout:6e5,displayRosterMinimized:function(){return!1},hideOffline:!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(){jsxc.xmpp.resFriendReq(from,!1),jsxc.gui.dialog.close()}),$("#jsxc_dialog .jsxc_approve").click(function(){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(){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(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_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.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}$(document).trigger("message.jsxc",[from,body]);var win=jsxc.gui.window.init(bid);return"chat"===type&&(win.data("jid",from),jsxc.storage.updateUserItem("buddy",bid,{jid:from})),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;return 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.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.0.0-beta2",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]||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.");if(jsxc.options.checkFlash&&!jsxc.hasFlash())return void jsxc.debug("No flash plugin for cross-domain requests.");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},hasFlash:function(){return"undefined"==typeof navigator.plugins||0===navigator.plugins.length?!!new ActiveXObject("ShockwaveFlash.ShockwaveFlash"):navigator.plugins["Shockwave Flash"]},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,password:null,overwrite:!1,onlogin:!0},loginForm:{form:null,jid:null,pass:null,preJid:function(jid){return jid}},logoutElement:null,debug:function(){},checkFlash:!0,numberOfMsg:10,defaultLang:"en",autoLang:!0,rosterAppend:"body",notification:!0,popupDuration:6e3,root:"",loginTimeout:6e5,displayRosterMinimized:function(){return!1},hideOffline:!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(){jsxc.xmpp.resFriendReq(from,!1),jsxc.gui.dialog.close()}),$("#jsxc_dialog .jsxc_approve").click(function(){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(){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_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;return 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.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"}}
}(jQuery);/*!
- * jsxc v1.0.0-beta1 - 2014-10-29
+ * jsxc v1.0.0-beta2 - 2014-10-31
*
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -23,8 +23,8 @@ var jsxc;!function($){"use strict";jsxc={version:"1.0.0-beta1",master:!1,role_al
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0-beta1
+ * @version 1.0.0-beta2
* @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(bid){var self=jsxc.webrtc,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,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 d2c562b..927514d 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","checkFlash","hasFlash","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","plugins","ActiveXObject","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","numberOfMsg","rosterAppend","popupDuration","root","hideOffline","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","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","stopPropagation","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","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","chat","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","priority","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","muteNotification","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","dnd","Mute","Unmute","Subscription","both","online","away","xa","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","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","checkFlash","hasFlash","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","plugins","ActiveXObject","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","numberOfMsg","rosterAppend","popupDuration","root","hideOffline","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","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","stopPropagation","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","chat","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","priority","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","muteNotification","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","dnd","Mute","Unmute","Subscription","both","online","away","xa","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
diff --git a/build/js/jsxc/jsxc.dep.js b/build/js/jsxc/lib/jsxc.dep.js
index b2a0518..0c2acdd 100644
--- a/build/js/jsxc/jsxc.dep.js
+++ b/build/js/jsxc/lib/jsxc.dep.js
@@ -1,8 +1,8 @@
-/*! * jsxc v1.0.0-beta1 - 2014-10-29
+/*!
+ * jsxc v1.0.0-beta2 - 2014-10-31
*
* This file concatenates all dependencies of jsxc.
*
- * For the list of concatenated files and there licenses please see http://www.jsxc.org/ @github.
*/
/*!
@@ -9153,7 +9153,7 @@ getUserMediaWithConstraints = function(um, resolution, bandwidth, fps) {
}(jQuery));
/*!
- * Source: build/lib/otr/build/dep/salsa20.js, license: GPLv3, url: https://github.com/neoatlantis/node-salsa20 */
+ * Source: build/lib/otr/build/dep/salsa20.js, license: AGPL3, url: https://github.com/neoatlantis/node-salsa20 */
// Salsa20 implementation
// Contributed to Cryptocat by Dmitry Chestnykh
// 21-01-2013
diff --git a/build/js/jsxc/jsxc.dep.min.js b/build/js/jsxc/lib/jsxc.dep.min.js
index 7214bc3..cd8624d 100644
--- a/build/js/jsxc/jsxc.dep.min.js
+++ b/build/js/jsxc/lib/jsxc.dep.min.js
@@ -1,8 +1,8 @@
-/*! * jsxc v1.0.0-beta1 - 2014-10-29
+/*!
+ * jsxc v1.0.0-beta2 - 2014-10-31
*
* This file concatenates all dependencies of jsxc.
*
- * For the list of concatenated files and there licenses please see http://www.jsxc.org/ @github.
*/
/*!
* Source: build/lib/strophe.js, license: multiple, url: http://strophe.im/strophejs/ */
diff --git a/build/js/jsxc/jsxc.dep.min.js.map b/build/js/jsxc/lib/jsxc.dep.min.js.map
index 4bb0586..4bb0586 100644
--- a/build/js/jsxc/jsxc.dep.min.js.map
+++ b/build/js/jsxc/lib/jsxc.dep.min.js.map
diff --git a/build/js/ojsxc.js b/build/js/ojsxc.js
index d9684f2..d416ea1 100644
--- a/build/js/ojsxc.js
+++ b/build/js/ojsxc.js
@@ -1,5 +1,5 @@
/*!
- * ojsxc v1.0.0-beta1 - 2014-10-29
+ * ojsxc v1.0.0-beta2 - 2014-10-31
*
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -7,7 +7,7 @@
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
- * @version 1.0.0-beta1
+ * @version 1.0.0-beta2
* @license MIT
*/