").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()+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]){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(c,a){if(!a){return}var b=this;if(this.chats[c]){this._store(c,this._addDateStamp(this.chats[c]));this._store(c,this._addMessage("a",this.chats[c],this.username,a))}$(this).trigger("sendingMessage",[c,a]);AjaxIM.post(this.actions.send,{to:c,body:a},function(d){if(d.type=="success"&&d.success=="sent"){$(b).trigger("sendMessageSuccessful",[c,a])}else{if(d.type=="error"){if(d.error=="not online"){$(b).trigger("sendMessageFailed",["offline",c,a])}else{$(b).trigger("sendMessageFailed",[d.error,c,a])}}}},function(d){b._notConnected();var d=b._addError(b.chats[c],"You are currently not connected or the server is not available. Please ensure that you are signed in and try again.");b._store(d);$(b).trigger("sendMessageFailed",["not connected",c,a])})},status:function(c,b){var a=this;if(!~this.statuses.indexOf(c)){return}$(this.statuses).each(function(){$("#imjs-friends").removeClass("imjs-"+this)});$("#imjs-friends").addClass("imjs-"+c);$(this).trigger("changingStatus",[c,b]);if(c=="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(d){if(d.type=="success"){$(a).trigger("changeStatusSuccessful",[c,null])}},function(d){$(a).trigger("changeStatusFailed",["not connected",c,null])})}else{AjaxIM.post(this.actions.status,{status:c,message:b},function(d){switch(d.type){case"success":$(a).trigger("changeStatusSuccessful",[c,b]);a.current_status=[c,b];store.set(a.username+"-status",a.current_status);break;case"error":default:$(a).trigger("changeStatusFailed",[d.e,c,b]);break}},function(d){$(a).trigger("changeStatusFailed",["not connected",c,b])})}},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)}});AjaxIM.client=null;AjaxIM.init=function(a,b){if(!AjaxIM.client){AjaxIM.client=new AjaxIM(a,b)}return AjaxIM.client};AjaxIM.post=function(b,d,c,a){AjaxIM.request(b,"POST",d,c,a)};AjaxIM.get=function(b,d,c,a){AjaxIM.request(b,"GET",d,c,a)};AjaxIM.request=function(b,c,e,d,a){var f=["timeout","error","notmodified","parseerror"];if(typeof a!="function"){a=function(){}}var g=(b.substring(0,1)!=="/");e.sessionid=cookies.get("sessionid");$.ajax({url:b,data:e,dataType:g?"jsonp":"json",type:c,cache:false,timeout:299000}).done(function(h){_dbg(JSON.stringify(h));d(h)}).fail(function(h,i){_dbg(i);a(i)})};AjaxIM.incoming=function(a){if(!AjaxIM.client){return false}if(a.length){AjaxIM.client._parseMessages(a)}};AjaxIM._=function(a){if(a in AjaxIM.l10n){return AjaxIM.l10n[a]}return a};AjaxIM.l10n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],chatOffline:"%s signed off.",chatAvailable:"%s became available.",chatAway:"%s went away.",notConnected:"You are currently not connected or the server is not available. Please ensure that you are signed in and try again.",notConnectedTip:"You are currently not connected.",defaultAway:"I'm away."};AjaxIM.debug=true;function _dbg(a){if(AjaxIM.debug&&window.console){console.log(a)}}function uid(e){var a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",d="";for(var b=0;b