var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(c){return c.raw=c};$jscomp.createTemplateTagFirstArgWithRaw=function(c,g){c.raw=g;return c};
!function(c,g,f){c.fn.selectRange=function(a,b){void 0===b&&(b=a);return this.each(function(){if("selectionStart"in this)this.selectionStart=a,this.selectionEnd=b;else if(this.setSelectionRange)this.setSelectionRange(a,b);else if(this.createTextRange){var d=this.createTextRange();d.collapse(!0);d.moveEnd("character",b);d.moveStart("character",a);d.select()}})};c.fn.outerHeightSum=function(){var a=0;this.each(function(){a+=c(this).outerHeight()});return a};XF.Chat=XF.Element.newHandler({options:{host:"",
port:2999,path:"",communication:"direct",limit:60,audio:"",messagesUrl:"/index.php?chat/messages",postUrl:"/index.php?chat/post",writeUrl:"/index.php?chat/writing",editUrl:"/index.php?chat/edit",deleteUrl:"/index.php?chat/delete",reportUrl:"/index.php?chat/report",longPollingUrl:"/index.php?chat/long-polling",enabledAudio:!1,permissions:{},ignore:[],startUpdate:!1,readingMode:!1,highlightMessages:[]},typers:{},init:function(){this.$input=this.$target.find(".input.message").on("keydown",c.proxy(this,
"keyDowned"));this.$messagesBlock=this.$target.find(".messages");this.$messages=this.$messagesBlock.find(".message-list-wrapper");this.$messageTyping=this.$target.find(".message--typing");this.$messageTypingName=this.$messageTyping.find(".typing_name");this.$smilieBox=this.$target.find('.button[data-xf-init="smilie-box"]');this.$sendButton=this.$target.find(".button.send").click(c.proxy(this,"postMessage"));this.$editorBlock=this.$target.find(".editor-block");this.options.readingMode?this.scrollBottom(!0):
(this.inputTextAreaHandler=XF.Element.getHandler(this.$input,"textarea-handler"),this.messageTemplate=c(".js-rtcMessage").html(),this.$messagesBlock.css({"padding-right":this.$messagesBlock.outerWidth()-this.$messagesBlock[0].clientWidth+"px"}),this.options.audio&&(this._disableSound="true"===XF.Cookie.get("chat_disable_sound"),this.$audio=c("").attr("src",this.options.audio)),this.scrollBottom(!0),this.connection(),this.events(),this.options.startUpdate&&this.fetchMessages());this.options.highlightMessages&&
this.highlightMessages(this.options.highlightMessages)},loaded:!1,editMode:!1,editMessageId:!1,postMessage:function(){if(!this.loaded){var a=this;this.$input.prop("disabled",!0);this.loaded=XF.ajax("POST",this.options.postUrl,{message_id:this.editMode?this.editMessageId:!1,message:this.$input.val()},function(){},{global:!1,skipDefaultSuccess:!0}).always(function(){a.loaded=!1;a.$input.prop("disabled",!1).focus();a.editMode?a.disableEditMode():a.$input.val("").focus();a.inputTextAreaHandler.update()})}},
actionEdit:function(a,b){var d=this;XF.ajax("GET",this.options.editUrl,{message_id:b},function(e){e.message&&(d.enableEditMode(e.message.message_id),d.$input.val(e.message.message).focus())},{global:!1,skipDefaultSuccess:!0})},actionDelete:function(a,b){XF.ajax("POST",this.options.deleteUrl,{message_id:b},function(){},{global:!1,skipDefaultSuccess:!0})},actionReport:function(a,b){XF.loadOverlay(XF.stringTranslate(decodeURIComponent(this.options.reportUrl),{"{messageId}":b}))},canEdit:function(a){return this.hasPermission("canEdit")&&
a.user_id==XF.config.userId?!0:this.hasPermission("canEditAny")},canDelete:function(a){return this.hasPermission("canDelete")&&a.user_id==XF.config.userId?!0:this.hasPermission("canDeleteAny")},canReport:function(){return this.hasPermission("canReport")},hasPermission:function(a){return this.options.permissions.hasOwnProperty(a)&&this.options.permissions[a]},isTo:function(a){return a.to_user_id&&a.to_user_id==XF.config.userId},isPm:function(a){return a.pm_user_id},controls:function(a){return{controls:this.hasControls(a),
is_to:this.isTo(a),is_pm:this.isPm(a),can_edit:this.canEdit(a),can_delete:this.canDelete(a),can_report:this.canReport()}},hasControls:function(a){return this.canEdit(a)||this.canDelete(a)||this.canReport()},loadMessage:function(a){if(-1===this.options.ignore.indexOf(a.user_id)){c.extend(a,this.controls(a));var b=c(c.parseHTML(Mustache.render(this.messageTemplate,a)));XF.activate(this.$messages.append(b));this.typers.hasOwnProperty(a.user_id)&&(delete this.typers[a.user_id],clearTimeout(this.typingTimeouts[a.user_id]),
this.checkTyping());a.user_id!=XF.config.userId&&this.play();this.limit();this.scrollBottom()}},messageEdited:function(a){var b=this.$messages.find('.message[data-message-id="'+a.message_id+'"]');b.length&&(a.to_user_id&&(a.to_user_id==XF.config.userId?b.hasClass("to-selected")||b.addClass("to-selected"):b.hasClass("to-selected")&&b.removeClass("to-selected")),XF.activate(b.find(".message-text").html(c(a.message))),this.scrollBottom())},messagesDeleted:function(a){var b=this;a.message_ids&&c.each(a.message_ids,
function(){b.$messages.find('.message[data-message-id="'+this+'"]').remove()});a.user_id&&b.$messages.find('.message[data-user-id="'+a.user_id+'"]').remove()},chatCleared:function(){this.$messages.empty()},updateIgnore:function(a){this.options.ignore=c.isArray(a)?a:[]},typingTimeouts:{},userWriting:function(a){var b=this;if(a.user_id!=XF.config.userId){this.typingTimeouts.hasOwnProperty(a.user_id)&&clearTimeout(this.typingTimeouts[a.user_id]);this.typers[a.user_id]=a.username;this.checkTyping();var d=
(null==a?0:a.timeout)?1E3*a.timeout:7500;this.typingTimeouts[a.user_id]=setTimeout(function(){delete b.typers[a.user_id];b.checkTyping()}.bind(this),d)}},checkTyping:function(){var a=Object.keys(this.typers);a.length?(1==a.length&&this.$messageTypingName.text(XF.phrase("rtc_x_writing_message",{"{username}":this.typers[a[0]]})),2==a.length&&this.$messageTypingName.text(XF.phrase("rtc_x_and_y_writing_message",{"{username1}":this.typers[a[0]],"{username2}":this.typers[a[1]]})),2');a.appendTo(this.$messages);var b=c(''),d=this.$messagesBlock.height();for(a.append(b.clone());this.$messages.height()this.options.limit){var b=a.length-this.options.limit;a.each(function(d,e){c(e).remove();if(d+1>=b)return!1})}},enableEditMode:function(a){this.editMode||(this.oldInputValue=this.$input.val());this.editMessageId=a;this.editMode=!0},disableEditMode:function(){this.$input.val(this.oldInputValue).focus();this.oldInputValue=
"";this.editMessageId=0;this.editMode=!1}});XF.ChatInsert=XF.Click.newHandler({eventNameSpace:"XFChatInsert",options:{insert:"",isReplacer:!1,replace:"",regex:""},init:function(){},click:function(a){a.preventDefault();c(f).trigger(this.getTriggerName(),this.getTriggerParams())},getTriggerName:function(){return this.options.isReplacer?"chat:first-replace":"chat:insert"},getTriggerParams:function(){return this.options.isReplacer?[this.options.insert,this.options.replace,new RegExp(this.options.regex)]:
[this.options.insert]}});XF.ChatMessageAction=XF.Click.newHandler({eventNameSpace:"XFChatAction",options:{action:""},init:function(){},click:function(a){a.preventDefault();c(f).trigger("chat:action-"+this.options.action,[this.$target.closest(".message").data("messageId")])}});XF.ChatDisableSound=XF.Element.newHandler({options:{},init:function(){"true"===XF.Cookie.get("chat_disable_sound")&&this.$target.find(".fa-volume-up").removeClass("fa-volume-up").addClass("fa-volume-off");this.$target.click(c.proxy(this,
"disable"))},disable:function(a){a.preventDefault();XF.Cookie.set("chat_disable_sound","true"!==XF.Cookie.get("chat_disable_sound"));"true"===XF.Cookie.get("chat_disable_sound")?this.$target.find(".fa-volume-up").removeClass("fa-volume-up").addClass("fa-volume-off"):this.$target.find(".fa-volume-off").removeClass("fa-volume-off").addClass("fa-volume-up");c(f).trigger("chat:disable-sound")}});XF.WindowPopup=XF.Click.newHandler({eventNameSpace:"XFWindowPopup",options:{name:"",left:0,top:0,width:600,
height:400,autoLeftTop:!1},init:function(){this.options.autoLeftTop&&(this.options.left=(screen.width-this.options.width)/2,this.options.top=(screen.height-this.options.height)/2)},click:function(a){a.preventDefault();g.open(this.$target.attr("href"),this.options.name,"toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width="+this.options.width+",height="+this.options.height+",left="+this.options.left+",top="+this.options.top)}});XF.Element.register("chat","XF.Chat");XF.Element.register("chat-disable-sound",
"XF.ChatDisableSound");XF.Click.register("chat-insert","XF.ChatInsert");XF.Click.register("chat-reload","XF.ChatReload");XF.Click.register("chat-message-action","XF.ChatMessageAction");XF.Click.register("window-popup","XF.WindowPopup")}(window.jQuery,window,document);