").append(c.clone()).html()}}else{return{replace_last:false,html:""}}},_addError:function(a,d,f){var e=$(a).find(".imjs-msglog");var b=$(".imjs-tab.imjs-default .imjs-chatbox .imjs-msglog .imjs-error").clone();var c=b.find(".imjs-msg-time");if(c.length){if(!f){f=(new Date()).getTime()}c.html(dateFormat(f,c.html()))}b.find(".imjs-error-error").html(d);b.appendTo(e);e[0].scrollTop=e[0].scrollHeight;return{replace_last:false,html:jQuery("
").append(b.clone()).html()}},_addMessage:function(j,d,c,k,b){var e=d.find(".imjs-msglog > *:last-child");if(e.hasClass("imjs-msg-"+j)){var h=(e.hasClass("imjs-msg-"+j+"-container")?e:e.find(".imjs-msg-"+j+"-container"));var g=$(".imjs-tab.imjs-default .imjs-chatbox .imjs-msglog .imjs-msg-"+j+"-msg").clone().appendTo(h);g.html(g.html().replace("{username}",c))}else{if(!e.length||!e.hasClass("imjs-msg-"+j)){var a=$(".imjs-tab.imjs-default .imjs-chatbox .imjs-msg-"+j).clone().appendTo(d.find(".imjs-msglog"));a.html(a.html().replace("{username}",c));var g=a.find(".imjs-msg-"+j+"-msg")}}k=k.toString().replace(//g,">").replace(/(^|.*)\*([^*]+)\*(.*|$)/,"$1
$2$3");k=k.replace(new RegExp("([A-Za-z][A-Za-z0-9+.-]{1,120}:[A-Za-z0-9/](([A-Za-z0-9$_.+!*,;/?:@&~=-])|%[A-Fa-f0-9]{2}){1,333}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*,;/?:@&~=%-]{0,1000}))?)","g"),'
$1');g.html(g.html().replace("{message}",k));var f=g.find(".imjs-msg-time");if(!b){b=new Date()}if(typeof b!="string"){b=dateFormat(b,f.html())}f.html(b);var i=d.find(".imjs-msglog");i[0].scrollTop=i[0].scrollHeight;return{replace_last:!!h,html:jQuery("
").append(h?e.clone():a.clone()).html()}},_store:function(b,a){if(!a.html.length){return}if(!this.chatstore){this.chatstore={}}if(!(b in this.chatstore)){this.chatstore[b]=[]}else{if(this.chatstore[b].length>300){this.chatstore[b].shift()}}if(a.replace_last){this.chatstore[b].pop()}this.chatstore[b].push(a.html);store.set(this.username+"-chats",this.chatstore)},_friendUpdate:function(f,g,h){if(this.chats[f]){var c=this.chats[f].parents(".imjs-tab");var e="imjs-tab";if(c.data("state")=="active"){e+=" imjs-selected"}e+=" imjs-"+g;c.attr("class",e);var d=$(".imjs-tab.imjs-default .imjs-chatbox .imjs-msglog .imjs-date").clone();var b=d.find(".imjs-msg-time");if(b.length){b.html(dateFormat(b.html()))}var a=d.find(".imjs-date-date").html(AjaxIM.l10n["chat"+g.toUpperCase().slice(0,1)+g.slice(1)].replace(/%s/g,f));var j=this.chats[f].find(".imjs-msglog");d.appendTo(j);j[0].scrollTop=j[0].scrollHeight}if(!this.friends[f]){this.addFriend(f,[g,h],"Friends")}if(this.friends[f]){var i="imjs-friend-"+md5.hex(f+this.friends[f].group);$("#"+i).attr("class","imjs-friend imjs-"+g);$("#"+i).find(".imjs-friend-status").html(h).attr("status",h);if(g=="offline"){$("#"+i+":visible").slideUp();$("#"+i+":hidden").hide()}else{if(!$("#"+i+":visible").length){$("#"+i).slideDown()}}this.friends[f].status=[g,h];this._updateFriendCount()}},_notConnected:function(){$("#imjs-friends").addClass("imjs-not-connected").unbind("click",this.activateTab);if($("#imjs-friends").hasClass("imjs-selected")){this.activateTab($("#imjs-friends"))}},_showReconnect:function(){$("#imjs-reconnect").show()},send:function(d,a){if(!a){return}var b=this;if(this.chats[d]){this._store(d,this._addDateStamp(this.chats[d]));this._store(d,this._addMessage("a",this.chats[d],this.username,a))}$(this).trigger("sendingMessage",[d,a]);var c={type:"message",from:this.username,to:d,body:a};this.sendEvent(c,function(e){if(e._status.sent){$(b).trigger("sendMessageSuccessful",[d,a])}else{if(e.type=="error"){if(e.error=="not online"){$(b).trigger("sendMessageFailed",["offline",d,a])}else{$(b).trigger("sendMessageFailed",[e.error,d,a])}}}},function(e){b._notConnected();var e=b._addError(b.chats[d],"You are currently not connected or the server is not available. Please ensure that you are signed in and try again.");b._store(e);$(b).trigger("sendMessageFailed",["not connected",d,a])})},status:function(d,c){var a=this;if(!~this.statuses.indexOf(d)){return}$(this.statuses).each(function(){$("#imjs-friends").removeClass("imjs-"+this)});$("#imjs-friends").addClass("imjs-"+d);$(this).trigger("changingStatus",[d,c]);if(d=="offline"){a._notConnected();a._showReconnect();store.set(this.username+"-offline",true);a.offline=true;$(".imjs-input").attr("disabled",true);AjaxIM.post(this.actions.signoff,{},function(e){if(e.type=="success"){$(a).trigger("changeStatusSuccessful",[d,null])}},function(e){$(a).trigger("changeStatusFailed",["not connected",d,null])})}else{var b={type:"status",status:d,message:c};this.sendEvent(b,function(e){if(e._status.send){$(a).trigger("sendMessageSuccessful",[username,body])}else{if(e.type=="error"){if(e.error=="not online"){$(a).trigger("sendMessageFailed",["offline",username,body])}else{$(a).trigger("sendMessageFailed",[e.error,username,body])}}}},function(e){a._notConnected();var e=a._addError(a.chats[username],"You are currently not connected or the server is not available. Please ensure that you are signed in and try again.");a._store(e);$(a).trigger("sendMessageFailed",["not connected",username,body])})}},statuses:["offline","available","away"],initTabBar:function(){var a=this;$(document).on("click",".imjs-tab",function(){return a.activateTab.call(a,$(this))});$(document).on("click",".imjs-tab .imjs-close",function(){return a.closeTab.call(a,$(this))});$(document).click(function(b){if(~["imjs-friends"].indexOf(b.target.id)||$(b.target).parents("#imjs-friends").length){return}if($("#imjs-friends").data("state")=="active"){a.activateTab.call(a,$("#imjs-friends"))}else{if($("#imjs-status").data("state")=="active"){a.activateTab.call(a,$("#imjs-status"))}}});$("#imjs-friends").data("state","minimized").click(function(b){if(!$(this).hasClass("imjs-not-connected")&&b.target.id!="imjs-friends-panel"&&!$(b.target).parents("#imjs-friends-panel").length){a.activateTab.call(a,$(this))}}).mouseenter(function(){if($(this).hasClass("imjs-not-connected")){$(".imjs-tooltip").css("display","block").find("p").html(AjaxIM.l10n.notConnectedTip);var c=$(this).offset().left-$(".imjs-tooltip").outerWidth()+($(this).outerWidth()/2);var b=$(this).offset().top-$(".imjs-tooltip").outerHeight(true);$(".imjs-tooltip").css({left:c,top:b})}}).mouseleave(function(){if($(this).hasClass("imjs-not-connected")){$(".imjs-tooltip").css("display","")}});$("#imjs-friends-panel").css("display","none")},activateTab:function(d){var a=d.find(".imjs-chatbox")||false,b;if(d.data("state")!="active"){if(d.attr("id")!="imjs-friends"){$("#imjs-bar > li").not(d).not("#imjs-friends, .imjs-scroll, .imjs-default").add(d.attr("id")=="imjs-status"?"#imjs-friends":"").removeClass("imjs-selected").each(function(){var g=$(this);if(g.data("state")!="closed"){g.data("state","minimized");var e=g.find(".imjs-chatbox");if(e.length){e.css("display","none")}}})}else{$("#imjs-status").removeClass("imjs-selected").data("state","minimized").find(".imjs-chatbox").css("display","none")}if(a&&a.css("display")=="none"){a.css("display","")}d.addClass("imjs-selected").data("state","active");d.find(".imjs-notification").css("display","none").data("count",0);if(a&&(username=a.data("username"))){store.set(this.username+"-activeTab",username)}$(this).trigger("tabToggled",["activated",d])}else{d.removeClass("imjs-selected").data("state","minimized");if(a&&a.css("display")!="none"){a.css("display","none")}store.set(this.username+"-activeTab","");$(this).trigger("tabToggled",["minimized",d])}if(a){if((b=a.find(".imjs-input")).length&&!b.data("height")){b.height(0);if(b[0].scrollHeight>b.height()||b[0].scrollHeight=$("#imjs-bar").height()||d.left<0||d.right>$(document).width()){$(".imjs-scroll").css("display","");c.css("display","none");a=true}});if(!a){$(".imjs-scroll").css("display","none")}if($("#imjs-scroll-left").css("display")!="none"&&$("#imjs-scroll-right").position().top>=$("#imjs-bar").height()){$("#imjs-bar li.imjs-tab:visible").slice(-1).css("display","none")}if($("#imjs-bar li.imjs-tab:visible").length){while($(".imjs-selected").css("display")=="none"){$("#imjs-scroll-right").click()}}this._scrollerIndex()},_scrollerIndex:function(){var a=$("#imjs-bar li.imjs-tab:visible").slice(-1).nextAll("#imjs-bar li.imjs-tab:hidden").not(".imjs-default").filter(function(){return $(this).data("state")!="closed"}).length;var b=$("#imjs-bar li.imjs-tab:visible").eq(0).prevAll("#imjs-bar li.imjs-tab:hidden").not(".imjs-default").filter(function(){return $(this).data("state")!="closed"}).length;$("#imjs-scroll-left").html(b);$("#imjs-scroll-right").html(a)},unconfirmedEvents:{},eventId:1,createEvent:function(){var a={};a.id=this.eventId++;this.unconfirmedEvents[a.id]=evt},sendEvent:function(e,f,a){e.id=this.eventId++;var b=$.extend({},e);b._status={successFunc:f,failureFunc:a};this.unconfirmedEvents[e.id]=b;if(this.socket){this.socket.emit("server",e)}else{var c=this;var d=null;switch(e.type){case"message":d=this.actions.send;break;case"status":d=this.actions.status;break;case"signoff":d=this.actions.signoff;break;default:break}AjaxIM.post(d,e,function(g){if(g){for(var h=0;h