var Bnet;(function(n){var t;(function(t){var r=function(){function t(){this.newMessageBannerVisible=ko.observable(!1);this.gatedMedia=ko.observableArray();this.adultMode=ko.observable(!1);this.loggedInMembershipId=ko.observable("0");this.whoIsTyping=ko.observable("")}return t.prototype.reset=function(){this.newMessageBannerVisible(!1);this.gatedMedia([]);this.whoIsTyping("")},t.prototype.isHidden=function(t){var i=n.Utilities.Array.firstIndexOf(this.gatedMedia(),function(n){return n===t});return i!==-1},t.prototype.hide=function(n){this.isHidden(n)||this.gatedMedia.push(n)},t.prototype.show=function(t){var i=n.Utilities.Array.firstIndexOf(this.gatedMedia(),function(n){return n===t});i>=0&&this.gatedMedia.splice(i,1)},t.prototype.formatBody=function(t,i,r){return t=n.Utilities.MessageBody.populateLink(t,i,this.loggedInMembershipId(),this.adultMode(),r,this.isHidden(i)),t=Utility.parseBBCode(t,!0,!0),bungieNetPlatform.linkHelper.injectLinks(t)},t}(),i;t.UIViewModel=r;i=function(){function t(n,t,i){var r=this;this.client=n;this.viewModel=t;this.selectors=i;this.autoScrolling=!1;this.stickToBottom=!0;this.$textInput=null;n.submitStartedEvent=function(){r.submitStartedEvent()};n.submitStoppedEvent=function(n){r.submitStoppedEvent(n)};n.loadingComplete=function(){r.adjustScrollPositionAfterLoadingNewBatch()};n.whoIsTypingChanged=function(n){r.whoIsTypingChanged(n)}}return t.prototype.reset=function(){this.autoScrolling=!1;this.stickToBottom=!0;this.viewModel.reset()},t.prototype.adjustScrollPositionAfterLoadingNewBatch=function(){this.client.olderMessagesAdded>0?this.scrollToSamePosition():(this.viewModel.newMessageBannerVisible(!this.stickToBottom),this.stickToBottom&&(Modernizr.touch&&$(this.selectors.chatContainer).css("overflow","auto"),this.scrollToBottom()))},t.prototype.handleScrolling=function(){var n=$(this.selectors.chatContainer);n.scrollTop()+n.innerHeight()+5>n[0].scrollHeight?(this.stickToBottom=!0,this.viewModel.newMessageBannerVisible(!1)):this.autoScrolling||(this.stickToBottom=!1);this.autoScrolling||n.scrollTop()!==0||this.client.loadMessages(!0,!1);this.autoScrolling=!1},t.prototype.submitStartedEvent=function(){if(this.selectors.textAreaContainer!==undefined&&this.selectors.textAreaContainer!==null){var n=$(this.selectors.textAreaContainer);n.destinyLoader({delayBeforeAppear:300,size:30,startOnInit:!0,left:"5%"})}},t.prototype.submitStoppedEvent=function(n){if(this.selectors.textAreaContainer!==undefined&&this.selectors.textAreaContainer!==null){var t=$(this.selectors.textAreaContainer);t.destinyLoader("stop")}n!==null?Utility.alert(n.errorMessage):this.clearInputArea(this.$textInput)},t.prototype.clearInputArea=function(n){n.val("");setTimeout(function(){n.focus()},1)},t.prototype.validateAndSubmitMessage=function(n,t){(this.$textInput=n,this.isValidInput(n))&&(this.stickToBottom=!0,this.client.submitMessage(t),this.scrollToBottom())},t.prototype.scrollToBottom=function(){var n=this;this.autoScrolling=!0;setTimeout(function(){$(n.selectors.chatContainer).scrollTop($(n.selectors.chatMessage).height()*3)},100)},t.prototype.scrollToSamePosition=function(){for(var t=0,r=this.client.viewModel.messages,i,n=0;n<this.client.olderMessagesAdded;n++)i=$(this.selectors.chatMessage+" [data-messageId="+r()[n].messageId+"]"),t+=i.outerHeight();this.client.olderMessagesAdded=0;this.autoScrolling=!0;$(this.selectors.chatContainer).scrollTop(t)},t.prototype.isValidInput=function(t){var o=this,u=n.Utilities.Validation.getErrors(t),i,r,e,f;if(u.length>0){for(i=0;i<u.length;i++)r=u[i].element,e=r.attr("data-errorMessage-"+u[i].type),$(".error").filter(function(){return $(o).data("for").get(0)===r.get(0)}).length<1&&(f=$('<span class="error">'+e+"<\/span>"),r.focus().before(f),f.data("for",r));return!1}return!0},t.prototype.setupScrolling=function(){var t=this,n=$(this.selectors.chatContainer);n.off("scroll.nextPageChat");n.on("scroll.nextPageChat",function(){t.handleScrolling()});n.customScroll({forcePreventBodyScroll:!0})},t.prototype.addEventListeners=function(){var n=this,t;this.setupScrolling();t=$(this.selectors.stableParentElement);$(this.selectors.newMessage).on("click",function(){n.scrollToBottom()});if(Modernizr.mobile)t.on("click",this.selectors.submitButton,function(i){i.preventDefault();var r=t.find(n.selectors.textArea);n.validateAndSubmitMessage(r,r.val())});else t.on("keydown",this.selectors.textArea,function(t){if(t.which!==13||t.shiftKey)t.which===13&&t.shiftKey?n.client.sendTyping():n.client.sendTyping();else{t.preventDefault();var i=$(t.currentTarget);i.parent().find(".error").remove();n.validateAndSubmitMessage(i,i.val())}});t.on("click",this.selectors.showGated,function(t){var i=$(t.currentTarget),r=i.closest("[data-messageId]").attr("data-messageId");n.viewModel.hide(r)});t.on("click",this.selectors.hideGated,function(t){t.preventDefault();t.stopImmediatePropagation();var i=$(t.currentTarget),r=i.attr("data-messageId");n.viewModel.show(r)});this.setUpImgLightBox(this.selectors.lightboxedImage)},t.prototype.whoIsTypingChanged=function(n){this.viewModel.whoIsTyping(this.buildWhoIsTyping(n))},t.prototype.buildWhoIsTyping=function(n){var t="";switch(n.length){case 0:break;case 1:t=Localizer.Format(Localizer.Community.useristyping,{user:n[0].displayName});break;case 2:t=Localizer.Format(Localizer.Community.twousersaretyping,{user1:n[0].displayName,user2:n[1].displayName});break;case 3:t=Localizer.Format(Localizer.Community.threeusersaretyping,{user1:n[0].displayName,user2:n[1].displayName,user3:n[2].displayName});break;default:t=Localizer.Community.moreusersaretyping}return t},t.prototype.setUpImgLightBox=function(n){$(document).on("click",n,function(n){var t=n.currentTarget;n.preventDefault();n.stopImmediatePropagation();Utility.showMediaLightBox('<img class="img_lightbox" src="'+t.src+'" alt="" /><br /><a class="extraContent" href="'+t.src+'">'+t.src+"<\/a>")})},t}();t.ChatUI=i})(t=n.Chat||(n.Chat={}))})(Bnet||(Bnet={})),function(n){var t;(function(t){var u=function(){function n(){this.messages=ko.observableArray();this.users={};this.isLoadingOlder=ko.observable(!1);this.isSending=ko.observable(!1)}return n.prototype.reset=function(){this.messages([]);this.users={}},n}(),i,r;t.ChatViewModel=u;i=function(){function t(){this.MaxTypers=10;this.TypingFrequency=5e3;this.activeTimerId=0;this.typers=[];this.whoIsTypingChanged=null}return t.prototype.addTyper=function(t){var f=this,i=!1,r=(new Date).getTime(),u=n.Utilities.Array.firstIndexOf(this.typers,function(n){return n.displayName===t});u>=0?this.typers[u].lastTyping=r:this.typers.length<this.MaxTypers&&(this.typers.push({displayName:t,lastTyping:r}),i=!0);this.removeOldTypers()&&(i=!0);i&&this.onWhoIsTypingChanged();this.activeTimerId===0&&(this.activeTimerId=setInterval(function(){f.processTimeout()},1e3))},t.prototype.removeTyper=function(t){var i=n.Utilities.Array.firstIndexOf(this.typers,function(n){return n.displayName===t});i>=0&&(this.typers.splice(i,1),this.onWhoIsTypingChanged())},t.prototype.processTimeout=function(){this.removeOldTypers()&&this.onWhoIsTypingChanged();this.typers.length===0&&(clearTimeout(this.activeTimerId),this.activeTimerId=0)},t.prototype.onWhoIsTypingChanged=function(){this.whoIsTypingChanged!=null&&this.whoIsTypingChanged(this.typers)},t.prototype.removeOldTypers=function(){for(var n=0,t=!1,i=(new Date).getTime()-(this.TypingFrequency+1e3);n<this.typers.length;)this.typers[n].lastTyping<i?(this.typers.splice(n,1),t=!0):n++;return t},t}();r=function(){function t(n,t){var r=this;this.signedInUser=n;this.viewModel=t;this.loading=!1;this.hasMoreOlder=!0;this.reloadWhenDone=!1;this.autoReloadCount=0;this.lastTyping=0;this.PlaceholderMessageID="p";this.newMessageLength=0;this.olderMessagesAdded=0;this.whoIsTypingManager=new i;this.whoIsTypingChanged=null;this.whoIsTypingManager.whoIsTypingChanged=function(n){r.whoIsTypingChanged!=null&&r.whoIsTypingChanged(n)};this.addEventMuxSubscriptions()}return t.prototype.reset=function(){this.loading=!1;this.hasMoreOlder=!0;this.reloadWhenDone=!1;this.autoReloadCount=0;this.newMessageLength=0;this.olderMessagesAdded=0;this.viewModel.reset()},t.prototype.start=function(){this.loadMessages(!1,!1)},t.prototype.addEventMuxSubscriptions=function(){var t=this;n.EventMux.subscribe(Globals.RealTimeEventType.ConversationChanged,function(n){t.viewModel.conversationId==n.conversationId&&t.loadMessages(!1,!0)});n.EventMux.subscribe(Globals.RealTimeEventType.Typing,function(n){t.viewModel.conversationId==n.conversationId&&t.whoIsTypingManager.addTyper(n.whoIsTyping)})},t.prototype.sendTyping=function(){var n=(new Date).getTime(),t;n-this.lastTyping>5e3&&(this.lastTyping=n,t={conversationId:this.viewModel.conversationId},bungieNetPlatform.messageService.UserIsTyping(t,function(){},function(){}))},t.prototype.onSubmitMessageStarted=function(){this.lastTyping=0;this.viewModel.isSending(!0);this.submitStartedEvent!=null&&this.submitStartedEvent()},t.prototype.onSubmitMessageStopped=function(n){this.viewModel.isSending(!1);this.submitStoppedEvent!=null&&this.submitStoppedEvent(n)},t.prototype.submitMessage=function(n){var t=this,i;this.viewModel.isSending()||(this.onSubmitMessageStarted(),this.addMessageLocally(n),i={body:n,subject:"",conversationId:this.viewModel.conversationId},bungieNetPlatform.messageService.SaveMessageV4(i,function(){t.onSubmitMessageStopped(null)},function(n){t.onSubmitMessageStopped(n)}))},t.prototype.addMessageLocally=function(t){this.viewModel.users[this.signedInUser.membershipId]=this.signedInUser;var i={messageId:this.PlaceholderMessageID,conversationId:"0",dateSent:(new Date).toString("yyyy-MM-ddTHH:mm:ssZ"),subject:"",body:n.Utilities.String.htmlEncode(t),isAutoResponse:!1,memberFromId:this.signedInUser.membershipId,isDeleted:!1,fromServer:!1,folderId:null,systemId:null,invitationId:null};this.viewModel.messages.push(i)},t.prototype.onLoadingStarted=function(n){this.loading=!0;this.viewModel.isLoadingOlder(n)},t.prototype.onLoadingStopped=function(){this.loading=!1;this.viewModel.isLoadingOlder(!1);this.loadingComplete!==null&&this.loadingComplete()},t.prototype.getOldestMessageId=function(){for(var t="9223372036854775807",i=this.viewModel.messages(),n=0;n<i.length;n++)if(t=i[n].messageId,t!=this.PlaceholderMessageID)break;return t},t.prototype.getNewestMessageId=function(){for(var t="0",i=this.viewModel.messages(),n=i.length-1;n>=0;n--)if(t=i[n].messageId,t!=this.PlaceholderMessageID)break;return t},t.prototype.loadMessages=function(n,t){var i=this,u,r,f;if(this.loading){this.reloadWhenDone=t;return}if(u="9223372036854775807",r="0",n){if(!this.hasMoreOlder)return;u=this.getOldestMessageId()}else r=this.getNewestMessageId();this.onLoadingStarted(n);f=this.viewModel.conversationId;bungieNetPlatform.messageService.GetConversationThreadV3(f,1,0,u,r,function(t){var f,u;if(n&&(i.olderMessagesAdded=t.results.length),i.newMessageLength=i.viewModel.messages().length+t.results.length,i.viewModel.users=$.extend(i.viewModel.users,t.users),f=i.viewModel.messages,n)for(i.hasMoreOlder=t.hasMore,u=0;u<t.results.length;u++)f.unshift(i.markAsFromServer(t.results[u]));else{for(i.removePlaceholderMessages(f),u=t.results.length-1;u>=0;u--)i.removeTyper(t.results[u].memberFromId),f.push(i.markAsFromServer(t.results[u]));t.hasMore&&r!="0"&&(i.reloadWhenDone=!0)}i.reloadWhenDone?(i.reloadWhenDone=!1,i.autoReloadCount++,i.autoReloadCount<20?i.loadMessages(n,!1):i.autoReloadCount=0):i.autoReloadCount=0;i.onLoadingStopped()},function(){i.onLoadingStopped()})},t.prototype.removeTyper=function(n){this.whoIsTypingManager.removeTyper(this.viewModel.users[n].displayName)},t.prototype.markAsFromServer=function(n){return n.fromServer=!0,n},t.prototype.removePlaceholderMessages=function(n){while(n().length>0&&!n()[n().length-1].fromServer)n.pop()},t}();t.Client=r})(t=n.Chat||(n.Chat={}))}(Bnet||(Bnet={}))