(function(){var e=this,t=e._,n={},a=Array.prototype,i=Object.prototype,r=Function.prototype,s=a.push,o=a.slice,c=a.concat,l=i.toString,u=i.hasOwnProperty,d=a.forEach,h=a.map,p=a.reduce,f=a.reduceRight,m=a.filter,v=a.every,_=a.some,g=a.indexOf,b=a.lastIndexOf,y=Array.isArray,w=Object.keys,x=r.bind,R=function(e){return e instanceof R?e:this instanceof R?(this._wrapped=e,void 0):new R(e)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=R),exports._=R):e._=R,R.VERSION="1.4.4";var j=R.each=R.forEach=function(e,t,a){if(null!=e)if(d&&e.forEach===d)e.forEach(t,a);else if(e.length===+e.length){for(var i=0,r=e.length;r>i;i++)if(t.call(a,e[i],i,e)===n)return}else for(var s in e)if(R.has(e,s)&&t.call(a,e[s],s,e)===n)return};R.map=R.collect=function(e,t,n){var a=[];return null==e?a:h&&e.map===h?e.map(t,n):(j(e,function(e,i,r){a[a.length]=t.call(n,e,i,r)}),a)};var I="Reduce of empty array with no initial value";R.reduce=R.foldl=R.inject=function(e,t,n,a){var i=arguments.length>2;if(null==e&&(e=[]),p&&e.reduce===p)return a&&(t=R.bind(t,a)),i?e.reduce(t,n):e.reduce(t);if(j(e,function(e,r,s){i?n=t.call(a,n,e,r,s):(n=e,i=!0)}),!i)throw new TypeError(I);return n},R.reduceRight=R.foldr=function(e,t,n,a){var i=arguments.length>2;if(null==e&&(e=[]),f&&e.reduceRight===f)return a&&(t=R.bind(t,a)),i?e.reduceRight(t,n):e.reduceRight(t);var r=e.length;if(r!==+r){var s=R.keys(e);r=s.length}if(j(e,function(o,c,l){c=s?s[--r]:--r,i?n=t.call(a,n,e[c],c,l):(n=e[c],i=!0)}),!i)throw new TypeError(I);return n},R.find=R.detect=function(e,t,n){var a;return k(e,function(e,i,r){return t.call(n,e,i,r)?(a=e,!0):void 0}),a},R.filter=R.select=function(e,t,n){var a=[];return null==e?a:m&&e.filter===m?e.filter(t,n):(j(e,function(e,i,r){t.call(n,e,i,r)&&(a[a.length]=e)}),a)},R.reject=function(e,t,n){return R.filter(e,function(e,a,i){return!t.call(n,e,a,i)},n)},R.every=R.all=function(e,t,a){t||(t=R.identity);var i=!0;return null==e?i:v&&e.every===v?e.every(t,a):(j(e,function(e,r,s){return(i=i&&t.call(a,e,r,s))?void 0:n}),!!i)};var k=R.some=R.any=function(e,t,a){t||(t=R.identity);var i=!1;return null==e?i:_&&e.some===_?e.some(t,a):(j(e,function(e,r,s){return i||(i=t.call(a,e,r,s))?n:void 0}),!!i)};R.contains=R.include=function(e,t){return null==e?!1:g&&e.indexOf===g?-1!=e.indexOf(t):k(e,function(e){return e===t})},R.invoke=function(e,t){var n=o.call(arguments,2),a=R.isFunction(t);return R.map(e,function(e){return(a?t:e[t]).apply(e,n)})},R.pluck=function(e,t){return R.map(e,function(e){return e[t]})},R.where=function(e,t,n){return R.isEmpty(t)?n?null:[]:R[n?"find":"filter"](e,function(e){for(var n in t)if(t[n]!==e[n])return!1;return!0})},R.findWhere=function(e,t){return R.where(e,t,!0)},R.max=function(e,t,n){if(!t&&R.isArray(e)&&e[0]===+e[0]&&65535>e.length)return Math.max.apply(Math,e);if(!t&&R.isEmpty(e))return-1/0;var a={computed:-1/0,value:-1/0};return j(e,function(e,i,r){var s=t?t.call(n,e,i,r):e;s>=a.computed&&(a={value:e,computed:s})}),a.value},R.min=function(e,t,n){if(!t&&R.isArray(e)&&e[0]===+e[0]&&65535>e.length)return Math.min.apply(Math,e);if(!t&&R.isEmpty(e))return 1/0;var a={computed:1/0,value:1/0};return j(e,function(e,i,r){var s=t?t.call(n,e,i,r):e;a.computed>s&&(a={value:e,computed:s})}),a.value},R.shuffle=function(e){var t,n=0,a=[];return j(e,function(e){t=R.random(n++),a[n-1]=a[t],a[t]=e}),a};var T=function(e){return R.isFunction(e)?e:function(t){return t[e]}};R.sortBy=function(e,t,n){var a=T(t);return R.pluck(R.map(e,function(e,t,i){return{value:e,index:t,criteria:a.call(n,e,t,i)}}).sort(function(e,t){var n=e.criteria,a=t.criteria;if(n!==a){if(n>a||void 0===n)return 1;if(a>n||void 0===a)return-1}return e.indexr;){var o=r+s>>>1;i>n.call(a,e[o])?r=o+1:s=o}return r},R.toArray=function(e){return e?R.isArray(e)?o.call(e):e.length===+e.length?R.map(e,R.identity):R.values(e):[]},R.size=function(e){return null==e?0:e.length===+e.length?e.length:R.keys(e).length},R.first=R.head=R.take=function(e,t,n){return null==e?void 0:null==t||n?e[0]:o.call(e,0,t)},R.initial=function(e,t,n){return o.call(e,0,e.length-(null==t||n?1:t))},R.last=function(e,t,n){return null==e?void 0:null==t||n?e[e.length-1]:o.call(e,Math.max(e.length-t,0))},R.rest=R.tail=R.drop=function(e,t,n){return o.call(e,null==t||n?1:t)},R.compact=function(e){return R.filter(e,R.identity)};var U=function(e,t,n){return j(e,function(e){R.isArray(e)?t?s.apply(n,e):U(e,t,n):n.push(e)}),n};R.flatten=function(e,t){return U(e,t,[])},R.without=function(e){return R.difference(e,o.call(arguments,1))},R.uniq=R.unique=function(e,t,n,a){R.isFunction(t)&&(a=n,n=t,t=!1);var i=n?R.map(e,n,a):e,r=[],s=[];return j(i,function(n,a){(t?a&&s[s.length-1]===n:R.contains(s,n))||(s.push(n),r.push(e[a]))}),r},R.union=function(){return R.uniq(c.apply(a,arguments))},R.intersection=function(e){var t=o.call(arguments,1);return R.filter(R.uniq(e),function(e){return R.every(t,function(t){return R.indexOf(t,e)>=0})})},R.difference=function(e){var t=c.apply(a,o.call(arguments,1));return R.filter(e,function(e){return!R.contains(t,e)})},R.zip=function(){for(var e=o.call(arguments),t=R.max(R.pluck(e,"length")),n=Array(t),a=0;t>a;a++)n[a]=R.pluck(e,""+a);return n},R.object=function(e,t){if(null==e)return{};for(var n={},a=0,i=e.length;i>a;a++)t?n[e[a]]=t[a]:n[e[a][0]]=e[a][1];return n},R.indexOf=function(e,t,n){if(null==e)return-1;var a=0,i=e.length;if(n){if("number"!=typeof n)return a=R.sortedIndex(e,t),e[a]===t?a:-1;a=0>n?Math.max(0,i+n):n}if(g&&e.indexOf===g)return e.indexOf(t,n);for(;i>a;a++)if(e[a]===t)return a;return-1},R.lastIndexOf=function(e,t,n){if(null==e)return-1;var a=null!=n;if(b&&e.lastIndexOf===b)return a?e.lastIndexOf(t,n):e.lastIndexOf(t);for(var i=a?n:e.length;i--;)if(e[i]===t)return i;return-1},R.range=function(e,t,n){1>=arguments.length&&(t=e||0,e=0),n=arguments[2]||1;for(var a=Math.max(Math.ceil((t-e)/n),0),i=0,r=Array(a);a>i;)r[i++]=e,e+=n;return r},R.bind=function(e,t){if(e.bind===x&&x)return x.apply(e,o.call(arguments,1));var n=o.call(arguments,2);return function(){return e.apply(t,n.concat(o.call(arguments)))}},R.partial=function(e){var t=o.call(arguments,1);return function(){return e.apply(this,t.concat(o.call(arguments)))}},R.bindAll=function(e){var t=o.call(arguments,1);return 0===t.length&&(t=R.functions(e)),j(t,function(t){e[t]=R.bind(e[t],e)}),e},R.memoize=function(e,t){var n={};return t||(t=R.identity),function(){var a=t.apply(this,arguments);return R.has(n,a)?n[a]:n[a]=e.apply(this,arguments)}},R.delay=function(e,t){var n=o.call(arguments,2);return setTimeout(function(){return e.apply(null,n)},t)},R.defer=function(e){return R.delay.apply(R,[e,1].concat(o.call(arguments,1)))},R.throttle=function(e,t){var n,a,i,r,s=0,o=function(){s=new Date,i=null,r=e.apply(n,a)};return function(){var c=new Date,l=t-(c-s);return n=this,a=arguments,0>=l?(clearTimeout(i),i=null,s=c,r=e.apply(n,a)):i||(i=setTimeout(o,l)),r}},R.debounce=function(e,t,n){var a,i;return function(){var r=this,s=arguments,o=function(){a=null,n||(i=e.apply(r,s))},c=n&&!a;return clearTimeout(a),a=setTimeout(o,t),c&&(i=e.apply(r,s)),i}},R.once=function(e){var t,n=!1;return function(){return n?t:(n=!0,t=e.apply(this,arguments),e=null,t)}},R.wrap=function(e,t){return function(){var n=[e];return s.apply(n,arguments),t.apply(this,n)}},R.compose=function(){var e=arguments;return function(){for(var t=arguments,n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},R.after=function(e,t){return 0>=e?t():function(){return 1>--e?t.apply(this,arguments):void 0}},R.keys=w||function(e){if(e!==Object(e))throw new TypeError("Invalid object");var t=[];for(var n in e)R.has(e,n)&&(t[t.length]=n);return t},R.values=function(e){var t=[];for(var n in e)R.has(e,n)&&t.push(e[n]);return t},R.pairs=function(e){var t=[];for(var n in e)R.has(e,n)&&t.push([n,e[n]]);return t},R.invert=function(e){var t={};for(var n in e)R.has(e,n)&&(t[e[n]]=n);return t},R.functions=R.methods=function(e){var t=[];for(var n in e)R.isFunction(e[n])&&t.push(n);return t.sort()},R.extend=function(e){return j(o.call(arguments,1),function(t){if(t)for(var n in t)e[n]=t[n]}),e},R.pick=function(e){var t={},n=c.apply(a,o.call(arguments,1));return j(n,function(n){n in e&&(t[n]=e[n])}),t},R.omit=function(e){var t={},n=c.apply(a,o.call(arguments,1));for(var i in e)R.contains(n,i)||(t[i]=e[i]);return t},R.defaults=function(e){return j(o.call(arguments,1),function(t){if(t)for(var n in t)null==e[n]&&(e[n]=t[n])}),e},R.clone=function(e){return R.isObject(e)?R.isArray(e)?e.slice():R.extend({},e):e},R.tap=function(e,t){return t(e),e};var M=function(e,t,n,a){if(e===t)return 0!==e||1/e==1/t;if(null==e||null==t)return e===t;e instanceof R&&(e=e._wrapped),t instanceof R&&(t=t._wrapped);var i=l.call(e);if(i!=l.call(t))return!1;switch(i){case"[object String]":return e==t+"";case"[object Number]":return e!=+e?t!=+t:0==e?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if("object"!=typeof e||"object"!=typeof t)return!1;for(var r=n.length;r--;)if(n[r]==e)return a[r]==t;n.push(e),a.push(t);var s=0,o=!0;if("[object Array]"==i){if(s=e.length,o=s==t.length)for(;s--&&(o=M(e[s],t[s],n,a)););}else{var c=e.constructor,u=t.constructor;if(c!==u&&!(R.isFunction(c)&&c instanceof c&&R.isFunction(u)&&u instanceof u))return!1;for(var d in e)if(R.has(e,d)&&(s++,!(o=R.has(t,d)&&M(e[d],t[d],n,a))))break;if(o){for(d in t)if(R.has(t,d)&&!s--)break;o=!s}}return n.pop(),a.pop(),o};R.isEqual=function(e,t){return M(e,t,[],[])},R.isEmpty=function(e){if(null==e)return!0;if(R.isArray(e)||R.isString(e))return 0===e.length;for(var t in e)if(R.has(e,t))return!1;return!0},R.isElement=function(e){return!(!e||1!==e.nodeType)},R.isArray=y||function(e){return"[object Array]"==l.call(e)},R.isObject=function(e){return e===Object(e)},j(["Arguments","Function","String","Number","Date","RegExp"],function(e){R["is"+e]=function(t){return l.call(t)=="[object "+e+"]"}}),R.isArguments(arguments)||(R.isArguments=function(e){return!(!e||!R.has(e,"callee"))}),true&&(R.isFunction=function(e){return"function"==typeof e}),R.isFinite=function(e){return isFinite(e)&&!isNaN(parseFloat(e))},R.isNaN=function(e){return R.isNumber(e)&&e!=+e},R.isBoolean=function(e){return e===!0||e===!1||"[object Boolean]"==l.call(e)},R.isNull=function(e){return null===e},R.isUndefined=function(e){return void 0===e},R.has=function(e,t){return u.call(e,t)},R.noConflict=function(){return e._=t,this},R.identity=function(e){return e},R.times=function(e,t,n){for(var a=Array(e),i=0;e>i;i++)a[i]=t.call(n,i);return a},R.random=function(e,t){return null==t&&(t=e,e=0),e+Math.floor(Math.random()*(t-e+1))};var C={escape:{"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"}};C.unescape=R.invert(C.escape);var D={escape:RegExp("["+R.keys(C.escape).join("")+"]","g"),unescape:RegExp("("+R.keys(C.unescape).join("|")+")","g")};R.each(["escape","unescape"],function(e){R[e]=function(t){return null==t?"":(""+t).replace(D[e],function(t){return C[e][t]})}}),R.result=function(e,t){if(null==e)return null;var n=e[t];return R.isFunction(n)?n.call(e):n},R.mixin=function(e){j(R.functions(e),function(t){var n=R[t]=e[t];R.prototype[t]=function(){var e=[this._wrapped];return s.apply(e,arguments),$.call(this,n.apply(R,e))}})};var E=0;R.uniqueId=function(e){var t=++E+"";return e?e+t:t},R.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var A=/(.)^/,L={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},N=/\\|'|\r|\n|\t|\u2028|\u2029/g;R.template=function(e,t,n){var a;n=R.defaults({},n,R.templateSettings);var i=RegExp([(n.escape||A).source,(n.interpolate||A).source,(n.evaluate||A).source].join("|")+"|$","g"),r=0,s="__p+='";e.replace(i,function(t,n,a,i,o){return s+=e.slice(r,o).replace(N,function(e){return"\\"+L[e]}),n&&(s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'"),a&&(s+="'+\n((__t=("+a+"))==null?'':__t)+\n'"),i&&(s+="';\n"+i+"\n__p+='"),r=o+t.length,t}),s+="';\n",n.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{a=Function(n.variable||"obj","_",s)}catch(o){throw o.source=s,o}if(t)return a(t,R);var c=function(e){return a.call(this,e,R)};return c.source="function("+(n.variable||"obj")+"){\n"+s+"}",c},R.chain=function(e){return R(e).chain()};var $=function(e){return this._chain?R(e).chain():e};R.mixin(R),j(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=a[e];R.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),"shift"!=e&&"splice"!=e||0!==n.length||delete n[0],$.call(this,n)}}),j(["concat","join","slice"],function(e){var t=a[e];R.prototype[e]=function(){return $.call(this,t.apply(this._wrapped,arguments))}}),R.extend(R.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this),this.FirechatDefaultTemplates=this.FirechatDefaultTemplates||{},this.FirechatDefaultTemplates["templates/layout-full.html"]=function(obj){obj||(obj={});var __p="";with(_.escape,obj)__p+="
\n
\n
\n\n
\n
\n
\n\n
\n
\n
";return __p},this.FirechatDefaultTemplates["templates/layout-popout.html"]=function(obj){obj||(obj={});var __p="";with(_.escape,obj)__p+="
\n
\n\n
\n
\n
";return __p},this.FirechatDefaultTemplates["templates/message-context-menu.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(Array.prototype.join,obj)__p+="
\n\n
";return __p},this.FirechatDefaultTemplates["templates/message.html"]=function(obj){obj||(obj={});var __t,__p="",__e=_.escape;with(Array.prototype.join,obj)__p+="
\n
\n",disableActions||(__p+="\n\n"),__p+="
\n
\n"+(null==(__t=message)?"":__t)+"\n
\n
";return __p},this.FirechatDefaultTemplates["templates/prompt-alert.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(obj)__p+="
\n
"+__e(message)+"
\n

\n\n

\n
";return __p},this.FirechatDefaultTemplates["templates/prompt-create-room.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(obj)__p+="
\n
Give your chat room a name:
\n\n
";return __p},this.FirechatDefaultTemplates["templates/prompt-invitation.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(obj)__p+="
\n
"+__e(fromUserName)+"
\n

invited you to join

\n
"+__e(toRoomName)+"
\n

\n\n\n

\n
";return __p},this.FirechatDefaultTemplates["templates/prompt-invite-private.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(obj)__p+="
\n
Invite "+__e(userName)+" to "+__e(roomName)+"?
\n

\n\n\n

\n
";return __p},this.FirechatDefaultTemplates["templates/prompt-invite-reply.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(Array.prototype.join,obj)__p+="
\n
"+__e(toUserName)+"
\n

\n",__p+="accepted"===status?" accepted your invite. ":" declined your invite. ",__p+="\n

\n
";return __p},this.FirechatDefaultTemplates["templates/prompt-user-mute.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(obj)__p+="
\n
"+__e(userName)+"
\n

\n\n\n

\n
";return __p},this.FirechatDefaultTemplates["templates/prompt.html"]=function(obj){obj||(obj={});var __t,__p="",__e=_.escape;with(obj)__p+="";return __p},this.FirechatDefaultTemplates["templates/room-list-item.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(Array.prototype.join,obj)__p+="
  • \n\n"+__e(name)+"\n\n
  • ";return __p},this.FirechatDefaultTemplates["templates/room-user-list-item.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(Array.prototype.join,obj)__p+="
  • \n\n"+__e(name)+"",disableActions||(__p+="\n \n \n"),__p+="\n\n
  • ";return __p},this.FirechatDefaultTemplates["templates/room-user-search-list-item.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(Array.prototype.join,obj)__p+="
  • \n\n",__p+=disableActions?"\n"+__e(name)+"\n":"\n"+__e(name)+"\n+\n",__p+="\n\n
  • ";return __p},this.FirechatDefaultTemplates["templates/tab-content.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(obj)__p+="
    \n
    \n
    \n
    \n\n\n
    \n
    ";return __p},this.FirechatDefaultTemplates["templates/tab-menu-item.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(obj)__p+="
  • \n"+__e(name)+"\n
  • ";return __p},this.FirechatDefaultTemplates["templates/user-search-list-item.html"]=function(obj){obj||(obj={});var __p="",__e=_.escape;with(Array.prototype.join,obj)__p+="
  • \n\n",__p+=disableActions?"\n"+__e(name)+"\n":"\n"+__e(name)+"\n \n",__p+="\n\n
  • ";return __p},function(){Function.prototype.bind||(Function.prototype.bind=function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),n=this,a=function(){},i=function(){return n.apply(this instanceof a&&e?this:e,t.concat(Array.prototype.slice.call(arguments)))};return a.prototype=this.prototype,i.prototype=new a,i}),Object.keys=Object.keys||function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t}}(),function(e){function t(e,t){this._firebase=e,this._user=null,this._userId=null,this._userName=null,this._isModerator=!1,this._sessionId=null,this._events={},this._rooms={},this._presenceBits={},this._userRef=null,this._messageRef=this._firebase.child("room-messages"),this._roomRef=this._firebase.child("room-metadata"),this._privateRoomRef=this._firebase.child("room-private-metadata"),this._moderatorsRef=this._firebase.child("moderators"),this._suspensionsRef=this._firebase.child("suspensions"),this._usersOnlineRef=this._firebase.child("user-names-online"),this._options=t||{},this._options.numMaxMessages=this._options.numMaxMessages||50}var n=this,a=n.Firechat;t.noConflict=function(){return n.Firechat=a,t},n.Firechat=t,t.prototype={_loadUserMetadata:function(e){var t=this;this._userRef.transaction(function(e){return e&&e.id&&e.name?void 0:{id:t._userId,name:t._userName}},function(a,i,r){t._user=r.val(),t._moderatorsRef.child(t._userId).once("value",function(a){t._isModerator=!!a.val(),n.setTimeout(e,0)})})},_setupDataEvents:function(){this._firebase.root().child(".info/connected").on("value",function(e){if(e.val()===!0)for(var t=0;this._presenceBits>t;t++){var n=this._presenceBits[t],a=this._firebase.root().child(n.ref);a.onDisconnect().set(n.offlineValue),a.set(n.onlineValue)}},this);var e=this._userRef.child("sessions").push();this._sessionId=e.name(),this._queuePresenceOperation(e,!0,null);var t=this._usersOnlineRef.child(this._userName.toLowerCase()),n=t.child(this._sessionId);this._queuePresenceOperation(n,{id:this._userId,name:this._userName},null),this._userRef.on("value",this._onUpdateUser,this),this._userRef.child("invites").on("child_added",this._onFirechatInvite,this),this._userRef.child("notifications").on("child_added",this._onNotification,this)},_addEventCallback:function(e,t){this._events[e]=this._events[e]||[],this._events[e].push(t)},_getEventCallbacks:function(e){return this._events.hasOwnProperty(e)?this._events[e]:[]},_invokeEventCallbacks:function(e){var t=[],n=this._getEventCallbacks(e);Array.prototype.push.apply(t,arguments),t=t.slice(1);for(var a=0;n.length>a;a+=1)n[a].apply(null,t)},_queuePresenceOperation:function(e,t,n){e.onDisconnect().set(n),e.set(t),this._presenceBits[""+e]={ref:e,onlineValue:t,offlineValue:n}},_removePresenceOperation:function(t,n){var a=new e(t);a.onDisconnect().cancel(),a.set(n),delete this._presenceBits[t]},_onUpdateUser:function(e){this._user=e.val(),this._invokeEventCallbacks("user-update",this._user)},_onAuthRequired:function(){this._invokeEventCallbacks("auth-required")},_onEnterRoom:function(e){this._invokeEventCallbacks("room-enter",e)},_onNewMessage:function(e,t){var n=t.val();n.id=t.name(),this._invokeEventCallbacks("message-add",e,n)},_onRemoveMessage:function(e,t){var n=t.name();this._invokeEventCallbacks("message-remove",e,n)},_onLeaveRoom:function(e){this._invokeEventCallbacks("room-exit",e)},_onNotification:function(e){var t=e.val();t.read||(("suspension"!==t.notificationType||t.data.suspendedUntil<(new Date).getTime())&&e.ref().child("read").set(!0),this._invokeEventCallbacks("notification",t))},_onFirechatInvite:function(e){var t=this,n=e.val();n.status||(n.id=n.id||e.name(),t.getRoom(n.roomId,function(e){n.toRoomName=e.name,t._invokeEventCallbacks("room-invite",n)}))},_onFirechatInviteResponse:function(e){var t=e.val();t.id=t.id||e.name(),this._invokeEventCallbacks("room-invite-response",t)}},t.prototype.setUser=function(e,t,a){var i=this;i._firebase.root().child(".info/authenticated").on("value",function(r){r.val()===!0&&(i._firebase.root().child(".info/authenticated").off(),i._userId=""+e,i._userName=""+t,i._userRef=i._firebase.child("users").child(i._userId),i._loadUserMetadata(function(){n.setTimeout(function(){a(i._user),i._setupDataEvents()},0)}))})},t.prototype.resumeSession=function(){this._userRef.child("rooms").once("value",function(e){var t=e.val();for(var n in t)this.enterRoom(t[n].id)},function(){},this)},t.prototype.on=function(e,t){this._addEventCallback(e,t)},t.prototype.createRoom=function(t,n,a){var i=this,r=this._roomRef.push(),s={id:r.name(),name:t,type:n||"public",createdByUserId:this._userId,createdAt:e.ServerValue.TIMESTAMP};"private"===n&&(s.authorizedUsers={},s.authorizedUsers[this._userId]=!0),r.set(s,function(e){e||i.enterRoom(r.name()),a&&a(r.name())})},t.prototype.enterRoom=function(e){var t=this;t.getRoom(e,function(n){var a=n.name;if(e&&a&&!t._rooms[e]){if(t._rooms[e]=!0,t._user){t._userRef.child("rooms").child(e).set({id:e,name:a,active:!0});var i=t._firebase.child("room-users").child(e).child(t._userId).child(t._sessionId);t._queuePresenceOperation(i,{id:t._userId,name:t._userName},null)}t._onEnterRoom({id:e,name:a}),t._roomRef.child(e).once("value",function(){t._messageRef.child(e).limit(t._options.numMaxMessages).on("child_added",function(n){t._onNewMessage(e,n)},function(){t.leaveRoom(e)},t),t._messageRef.child(e).limit(t._options.numMaxMessages).on("child_removed",function(n){t._onRemoveMessage(e,n)},function(){},t)},function(){},t)}})},t.prototype.leaveRoom=function(e){var t=this,n=t._firebase.child("room-users").child(e);if(t._messageRef.child(e).off(),t._user){var a=n.child(t._userId).child(t._sessionId);t._removePresenceOperation(""+a,null),t._userRef.child("rooms").child(e).remove()}delete t._rooms[e],t._onLeaveRoom(e)},t.prototype.sendMessage=function(t,n,a,i){var r,s=this,o={userId:s._userId,name:s._userName,timestamp:e.ServerValue.TIMESTAMP,message:n,type:a||"default"};return s._user?(r=s._messageRef.child(t).push(),r.setWithPriority(o,e.ServerValue.TIMESTAMP,i),void 0):(s._onAuthRequired(),i&&i(Error("Not authenticated or user not set!")),void 0)},t.prototype.deleteMessage=function(e,t,n){var a=this;a._messageRef.child(e).child(t).remove(n)},t.prototype.toggleUserMute=function(e,t){var n=this;return n._user?(n._userRef.child("muted").child(e).transaction(function(e){return e?null:!0},t),void 0):(n._onAuthRequired(),t&&t(Error("Not authenticated or user not set!")),void 0)},t.prototype.sendSuperuserNotification=function(t,n,a,i){var r=this,s=r._firebase.child("users").child(t).child("notifications"); s.push({fromUserId:r._userId,timestamp:e.ServerValue.TIMESTAMP,notificationType:n,data:a||{}},i)},t.prototype.warnUser=function(e){var t=this;t.sendSuperuserNotification(e,"warning")},t.prototype.suspendUser=function(e,t,n){var a=this,i=(new Date).getTime()+1e3*t;a._suspensionsRef.child(e).set(i,function(t){return t&&n?n(t):(a.sendSuperuserNotification(e,"suspension",{suspendedUntil:i}),n(null))})},t.prototype.inviteUser=function(e,t){var n=this,a=function(){var a=n._firebase.child("users").child(e).child("invites").push();a.set({id:a.name(),fromUserId:n._userId,fromUserName:n._userName,roomId:t}),a.on("value",n._onFirechatInviteResponse,function(){},n)};return n._user?(n.getRoom(t,function(i){if("private"===i.type){var r=n._roomRef.child(t).child("authorizedUsers");r.child(e).set(!0,function(e){e||a()})}else a()}),void 0):(n._onAuthRequired(),void 0)},t.prototype.acceptInvite=function(e,t){var n=this;n._userRef.child("invites").child(e).once("value",function(a){var i=a.val();return null===i&&t?t(Error("acceptInvite("+e+"): invalid invite id")):(n.enterRoom(i.roomId),n._userRef.child("invites").child(e).update({status:"accepted",toUserName:n._userName},t),void 0)},n)},t.prototype.declineInvite=function(e,t){var n=this,a={status:"declined",toUserName:n._userName};n._userRef.child("invites").child(e).update(a,t)},t.prototype.getRoomList=function(e){var t=this;t._roomRef.once("value",function(t){e(t.val())})},t.prototype.getUsersByRoom=function(){var e=this,t=arguments[0],a=e._firebase.child("room-users").child(t),i=arguments[arguments.length-1],r=null;arguments.length>2&&(r=arguments[1]),a=r?a.limit(r):a,a.once("value",function(e){var t=e.val()||{},a={};for(var r in t)for(var s in t[r]){a[r]=t[r][s];break}n.setTimeout(function(){i(a)},0)})},t.prototype.getUsersByPrefix=function(e,t,a,i,r){var s=this._usersOnlineRef,o=e.toLowerCase();s=t?s.startAt(null,t):a?s.endAt(null,a):o?s.startAt(null,o):s.startAt(),s=i?s.limit(i):s,s.once("value",function(t){var a=t.val()||{},i={};for(var s in a){var c,l,u=a[s];for(var d in u){c=u[d].name,l=u[d].id;break}e.length>0&&0!==c.toLowerCase().indexOf(o)||(i[c]={name:c,id:l})}n.setTimeout(function(){r(i)},0)})},t.prototype.getRoom=function(e,t){this._roomRef.child(e).once("value",function(e){t(e.val())})},t.prototype.userIsModerator=function(){return this._isModerator}}(Firebase),function(e){function t(t,n,a){if(!t)throw Error("FirechatUI: Missing required argument `firebaseRef`");if(!n)throw Error("FirechatUI: Missing required argument `el`");a=a||{},this._options=a,this._el=n,this._user=null,this._chat=new Firechat(t,a),this._roomQueue=[],this.maxLengthUsername=15,this.maxLengthUsernameDisplay=15,this.maxLengthRoomName=24,this.maxLengthMessage=120,this.maxUserSearchResults=100,this.urlPattern=/\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|]/gim,this.pseudoUrlPattern=/(^|[^\/])(www\.[\S]+(\b|$))/gim,this._renderLayout(),this.$wrapper=e("#firechat"),this.$roomList=e("#firechat-room-list"),this.$tabList=e("#firechat-tab-list"),this.$tabContent=e("#firechat-tab-content"),this.$messages={},this.$rateLimit={limitCount:10,limitInterval:1e4,limitWaitTime:3e4,history:{}},this._bindUIEvents(),this._bindDataEvents()}if(!e||170>parseInt(e().jquery.replace(/\./g,""),10))throw Error("jQuery 1.7 or later required!");var n=this,a=n.FirechatUI;if(n.FirechatUI=t,!self.FirechatDefaultTemplates)throw Error("Unable to find chat templates!");t.noConflict=function(){return n.FirechatUI=a,t},t.prototype={_bindUIEvents:function(){this._bindForHeightChange(),this._bindForTabControls(),this._bindForRoomList(),this._bindForUserRoomList(),this._bindForUserSearch(),this._bindForUserMuting(),this._bindForChatInvites(),this._bindForRoomListing(),this._setupTabs(),this._setupDropdowns(),this._bindTextInputFieldLimits()},_bindDataEvents:function(){this._chat.on("user-update",this._onUpdateUser.bind(this)),this._chat.on("room-enter",this._onEnterRoom.bind(this)),this._chat.on("room-exit",this._onLeaveRoom.bind(this)),this._chat.on("message-add",this._onNewMessage.bind(this)),this._chat.on("message-remove",this._onRemoveMessage.bind(this)),this._chat.on("room-invite",this._onChatInvite.bind(this)),this._chat.on("room-invite-response",this._onChatInviteResponse.bind(this)),this._chat.on("notification",this._onNotification.bind(this))},_renderLayout:function(){var t=FirechatDefaultTemplates["templates/layout-full.html"];e(this._el).html(t({maxLengthUsername:this.maxLengthUsername}))},_onUpdateUser:function(t){this._user=t;var n=this._user.muted||{};e('[data-event="firechat-user-mute-toggle"]').each(function(){var t=e(this).closest("[data-user-id]").data("user-id");e(this).toggleClass("red",!!n[t])});for(var a in n)e('.message[data-user-id="'+a+'"]').fadeOut()},_onEnterRoom:function(e){this.attachTab(e.id,e.name)},_onLeaveRoom:function(e){this.removeTab(e),this._roomQueue.length>0&&this._chat.enterRoom(this._roomQueue.shift(e))},_onNewMessage:function(e,t){var n=t.userId;this._user&&this._user.muted&&this._user.muted[n]||this.showMessage(e,t)},_onRemoveMessage:function(e,t){this.removeMessage(e,t)},_onChatInvite:function(e){var t=this,n=FirechatDefaultTemplates["templates/prompt-invitation.html"],a=this.prompt("Invite",n(e));a.find("a.close").click(function(){a.remove(),t._chat.declineInvite(e.id)}),a.find("[data-toggle=accept]").click(function(){a.remove(),t._chat.acceptInvite(e.id)}),a.find("[data-toggle=decline]").click(function(){a.remove(),t._chat.declineInvite(e.id)})},_onChatInviteResponse:function(e){if(e.status){var t,n=this,a=FirechatDefaultTemplates["templates/prompt-invite-reply.html"];e.status&&"accepted"===e.status?(t=this.prompt("Accepted",a(e)),this._chat.getRoom(e.roomId,function(t){n.attachTab(e.roomId,t.name)})):t=this.prompt("Declined",a(e)),t.find("a.close").click(function(){t.remove()})}},_onNotification:function(e){if("warning"===e.notificationType)this.renderAlertPrompt("Warning","You are being warned for inappropriate messaging. Further violation may result in temporary or permanent ban of service.");else if("suspension"===e.notificationType){var t=e.data.suspendedUntil,n=Math.round((t-(new Date).getTime())/1e3),a="";if(n>0){if(n>7200){var i=Math.floor(n/3600);a=i+" hours, ",n-=3600*i}a+=Math.floor(n/60)+" minutes",this.renderAlertPrompt("Suspended","A moderator has suspended you for violating site rules. You cannot send messages for another "+a+".")}}}},t.prototype.setUser=function(e,t){var n=this;n._chat.setUser(e,t,function(e){n._user=e,n._chat.userIsModerator()&&n._bindSuperuserUIEvents(),n._chat.resumeSession()})},t.prototype.on=function(e,t){this._chat.on(e,t)},t.prototype._bindSuperuserUIEvents=function(){var t=this,n=function(){var t=e(this),n=t.closest("[data-message-id]").data("message-id"),a=e('[data-message-id="'+n+'"]').closest("[data-user-id]").data("user-id"),i=e('[data-message-id="'+n+'"]').closest("[data-room-id]").data("room-id");return{messageId:n,userId:a,roomId:i}},a=function(){e('[data-toggle="firechat-contextmenu"]').each(function(){e(this).remove()}),e("#firechat .message.highlighted").each(function(){e(this).removeClass("highlighted")})},i=function(i){var r,s=e(this),o=s.closest("[data-message-id]"),c=FirechatDefaultTemplates["templates/message-context-menu.html"],l=n.call(this,i);i.preventDefault(),a(),s.addClass("highlighted"),t._chat.getRoom(l.roomId,function(){r=e(c({id:o.data("message-id")})),r.css({left:i.clientX,top:i.clientY}).appendTo(t.$wrapper)})};e(document).bind("click",{self:this},function(e){e.button&&2==e.button||a()}),e(document).delegate('[data-class="firechat-message"]',"contextmenu",i),e(document).delegate('[data-event="firechat-user-warn"]',"click",function(e){var a=n.call(this,e);t._chat.warnUser(a.userId)}),e(document).delegate('[data-event="firechat-user-suspend-hour"]',"click",function(e){var a=n.call(this,e);t._chat.suspendUser(a.userId,3600)}),e(document).delegate('[data-event="firechat-user-suspend-day"]',"click",function(e){var a=n.call(this,e);t._chat.suspendUser(a.userId,86400)}),e(document).delegate('[data-event="firechat-message-delete"]',"click",function(e){var a=n.call(this,e);t._chat.deleteMessage(a.roomId,a.messageId)})},t.prototype._bindForHeightChange=function(){var t=e(this._el),n=null;setInterval(function(){var a=t.height();a!=n&&(n=a,e(".chat").each(function(){}))},500)},t.prototype._bindForTabControls=function(){var t=this;e(document).delegate('[data-event="firechat-close-tab"]',"click",function(){var n=e(this).closest("[data-room-id]").data("room-id");t._chat.leaveRoom(n)})},t.prototype._bindForRoomList=function(){var t=this;e("#firechat-btn-rooms").bind("click",function(){if(!e(this).parent().hasClass("open")){var n=(e(this),FirechatDefaultTemplates["templates/room-list-item.html"]),a=function(){var n=e(this).parent(),a=n.data("room-id"),i=n.data("room-name");t.$messages[a]?t.focusTab(a):t._chat.enterRoom(a,i)};t._chat.getRoomList(function(i){t.$roomList.empty();for(var r in i){var s=i[r];if("public"==s.type){s.isRoomOpen=!!t.$messages[s.id];var o=e(n(s));o.children("a").bind("click",a),t.$roomList.append(o.toggle(!0))}}})}})},t.prototype._bindForUserRoomList=function(){var t=this;e(document).delegate('[data-event="firechat-user-room-list-btn"]',"click",function(n){n.stopPropagation();var a=e(this),i=a.closest("[data-room-id]").data("room-id"),r=FirechatDefaultTemplates["templates/room-user-list-item.html"],s=a.data("target"),o=e("#"+s);o.empty(),t._chat.getUsersByRoom(i,function(n){for(var a in n)user=n[a],user.disableActions=!t._user||user.id===t._user.id,user.nameTrimmed=t.trimWithEllipsis(user.name,t.maxLengthUsernameDisplay),user.isMuted=t._user&&t._user.muted&&t._user.muted[user.id],o.append(e(r(user)));t.sortListLexicographically("#"+s)})})},t.prototype._bindForUserSearch=function(){var t=this,n=function(t){var n=e(this),i=n.data("target"),r=n.data("controls"),s=n.data("template"),o=n.val()||n.data("prefix")||"",c=n.data("startAt")||null,l=n.data("endAt")||null;t.preventDefault(),a(i,s,r,o,c,l)},a=function(n,a,i,r,s,o){var c=e("#"+n),l=e("#"+i),u=FirechatDefaultTemplates[a];t._chat.getUsersByPrefix(r,s,o,t.maxUserSearchResults,function(e){var n,a,i,s,o,d=0;c.empty();for(i in e){var h=e[i];if(h.disableActions=!t._user||h.id===t._user.id,d+=1,c.append(u(h)),1===d)s=h.name.toLowerCase();else if(d>=t.maxUserSearchResults){o=h.name.toLowerCase();break}}l&&(n=l.find('[data-toggle="firechat-pagination-prev"]'),a=l.find('[data-toggle="firechat-pagination-next"]'),o?a.data("event","firechat-user-search").data("startAt",o).data("prefix",r).removeClass("disabled").removeAttr("disabled"):a.data("event",null).data("startAt",null).data("prefix",null).addClass("disabled").attr("disabled","disabled"))})};e(document).delegate('[data-event="firechat-user-search"]',"keyup",n),e(document).delegate('[data-event="firechat-user-search"]',"click",n),e(document).delegate('[data-event="firechat-user-search-btn"]',"click",function(t){t.stopPropagation();var n=e(this).next("div.dropdown-menu").find("input");n.focus(),n.trigger(jQuery.Event("keyup"))}),e(document).delegate('[data-event="firechat-user-search"]',"click",function(e){e.stopPropagation()})},t.prototype._bindForUserMuting=function(){var t=this;e(document).delegate('[data-event="firechat-user-mute-toggle"]',"click",function(n){var a=e(this),i=a.closest("[data-user-id]").data("user-id"),r=a.closest("[data-user-name]").data("user-name"),s=a.hasClass("red"),o=FirechatDefaultTemplates["templates/prompt-user-mute.html"];if(n.preventDefault(),s)t._chat.toggleUserMute(i);else{var c=t.prompt("Mute User?",o({userName:r}));c.find("a.close").first().click(function(){c.remove()}),c.find("[data-toggle=decline]").first().click(function(){c.remove()}),c.find("[data-toggle=accept]").first().click(function(){t._chat.toggleUserMute(i),c.remove()})}})},t.prototype._bindForChatInvites=function(){var t=this,n=function(){var n,a=e(this),i=a.closest("[data-user-id]").data("user-id"),r=a.closest("[data-room-id]").data("room-id"),s=a.closest("[data-user-name]").data("user-name"),o=FirechatDefaultTemplates["templates/prompt-invite-private.html"];t._chat.getRoom(r,function(e){n=t.prompt("Invite",o({userName:s,roomName:e.name})),n.find("a.close").click(function(){n.remove()}),n.find("[data-toggle=decline]").click(function(){n.remove()}),n.find("[data-toggle=accept]").first().click(function(){n.remove(),t._chat.inviteUser(i,r,e.name)})})},a=function(){var n,a=e(this),i=a.closest("[data-user-id]").data("user-id"),r=a.closest("[data-user-name]").data("user-name"),s=FirechatDefaultTemplates["templates/prompt-invite-private.html"];i&&r&&(n=t.prompt("Private Invite",s({userName:r,roomName:"Private Chat"})),n.find("a.close").click(function(){n.remove()}),n.find("[data-toggle=decline]").click(function(){n.remove()}),n.find("[data-toggle=accept]").first().click(function(){n.remove();var e="Private Chat";t._chat.createRoom(e,"private",function(n){t._chat.inviteUser(i,n,e)})}))};e(document).delegate('[data-event="firechat-user-chat"]',"click",a),e(document).delegate('[data-event="firechat-user-invite"]',"click",n)},t.prototype._bindForRoomListing=function(){var t=this,n=e("#firechat-btn-create-room-prompt"),a=e("#firechat-btn-create-room");n.bind("click",function(){t.promptCreateRoom()}),a.bind("click",function(){var n=e("#firechat-input-room-name").val();e("#firechat-prompt-create-room").remove(),t._chat.createRoom(n)})},t.prototype._setupTabs=function(){var t=function(t){var a,i,r=t,s=r.closest("ul:not(.dropdown-menu)"),o=r.attr("data-target"),c=s.find(".active:last a")[0];o||(o=r.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,"")),r.parent("li").hasClass("active")||(i=e.Event("show",{relatedTarget:c}),r.trigger(i),i.isDefaultPrevented()||(a=e(o),n(r.parent("li"),s),n(a,a.parent(),function(){r.trigger({type:"shown",relatedTarget:c})})))},n=function(t,n,a){function i(){r.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?t.addClass("in"):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),a&&a()}var r=n.find("> .active"),s=a&&e.support.transition&&r.hasClass("fade");s?r.one(e.support.transition.end,i):i(),r.removeClass("in")};e(document).delegate('[data-toggle="tab"]',"click",function(n){n.preventDefault(),t(e(this))})},t.prototype._setupDropdowns=function(){var t=function(){var t=e(this),i=a(t),r=i.hasClass("open");if(!t.is(".disabled, :disabled"))return n(),r||i.toggleClass("open"),t.focus(),!1},n=function(){e("[data-toggle=dropdown]").each(function(){a(e(this)).removeClass("open")})},a=function(t){var n,a=t.attr("data-target");return a||(a=t.attr("href"),a=a&&/#/.test(a)&&a.replace(/.*(?=#[^\s]*$)/,"")),n=a&&e(a),n&&n.length||(n=t.parent()),n};e(document).bind("click",n).delegate(".dropdown-menu","click",function(e){e.stopPropagation()}).delegate("[data-toggle=dropdown]","click",t)},t.prototype._bindTextInputFieldLimits=function(){e("body").delegate('input[data-provide="limit"], textarea[data-provide="limit"]',"keyup",function(){var t=e(this),n=e(t.data("counter")),a=t.attr("maxlength"),i=t.val().length;n.html(Math.max(0,a-i))})},t.prototype.renderAlertPrompt=function(e,t){var n=FirechatDefaultTemplates["templates/prompt-alert.html"],a=this.prompt(e,n({message:t}));a.find(".close").click(function(){a.remove()})},t.prototype.toggleInputs=function(t){e("#firechat-tab-content textarea").each(function(){var n=e(this);t?e(this).val(""):e(this).val("You have exceeded the message limit, please wait before sending."),n.prop("disabled",!t)}),e("#firechat-input-name").prop("disabled",!t)},t.prototype.attachTab=function(t,n){var a=this;if(this.$messages[t])return this.focusTab(t),void 0;var i={id:t,name:n},r=FirechatDefaultTemplates["templates/tab-content.html"],s=e(r(i));this.$tabContent.prepend(s);var o=e("#firechat-messages"+t);this.$messages[t]=o;var c=s.find("textarea").first();c.bind("keydown",function(e){var n=a.trimWithEllipsis(c.val(),a.maxLengthMessage);return 13===e.which&&""!==n?(c.val(""),a._chat.sendMessage(t,n),!1):void 0});var l=FirechatDefaultTemplates["templates/tab-menu-item.html"],u=e(l(i));this.$tabList.prepend(u),u.bind("shown",function(){o.scrollTop(o[0].scrollHeight)});var d=this.$tabList.children("li"),h=Math.floor(e("#firechat-tab-list").width()/d.length);this.$tabList.children("li").css("width",h),this.$roomList.children("[data-room-id="+t+"]").children("a").addClass("highlight"),e("#firechat-btn-room-user-list-"+t).bind("click",function(){a.sortListLexicographically("#firechat-room-user-list-"+t)}),this.focusTab(t)},t.prototype.focusTab=function(e){if(this.$messages[e]){var t=this.$tabList.find("[data-room-id="+e+"]").find("a");t.length&&t.first().trigger("click")}},t.prototype.removeTab=function(t){delete this.$messages[t],this.$tabContent.find("[data-room-id="+t+"]").remove(),this.$tabList.find("[data-room-id="+t+"]").remove();var n=this.$tabList.children("li"),a=Math.floor(e("#firechat-tab-list").width()/n.length);this.$tabList.children("li").css("width",a),this.$tabList.find("[data-toggle=tab]").first().trigger("click"),this.$roomList.children("[data-room-id="+t+"]").children("a").removeClass("highlight")},t.prototype.showMessage=function(t,n){var a=this,i={id:n.id,localtime:a.formatTime(n.timestamp),message:n.message||"",userId:n.userId,name:n.name,type:n.type||"default",isSelfMessage:a._user&&n.userId==a._user.id,disableActions:!a._user||n.userId==a._user.id};i.message=_.map(i.message.split(" "),function(e){return a.urlPattern.test(e)||a.pseudoUrlPattern.test(e)?a.linkify(encodeURI(e)):_.escape(e)}).join(" "),i.message=a.trimWithEllipsis(i.message,a.maxLengthMessage);var r=FirechatDefaultTemplates["templates/message.html"],s=e(r(i)),o=a.$messages[t];if(o){var c=!1;o.scrollTop()/(o[0].scrollHeight-o[0].offsetHeight)>=.95?c=!0:o[0].scrollHeight<=o.height()&&(c=!0),o.append(s),c&&o.scrollTop(o[0].scrollHeight)}},t.prototype.removeMessage=function(t,n){e('.message[data-message-id="'+n+'"]').remove()},t.prototype.sortListLexicographically=function(t){e(t).children("li").sort(function(t,n){var a=e(t).text().toUpperCase(),i=e(n).text().toUpperCase();return i>a?-1:a>i?1:0}).appendTo(t)},t.prototype.trimWithEllipsis=function(e,t){return e=e.replace(/^\s\s*/,"").replace(/\s\s*$/,""),t&&t>=e.length?e:e.substring(0,t)+"..."},t.prototype.formatTime=function(e){var t=e?new Date(e):new Date,n=t.getHours()||12,a=""+t.getMinutes(),i=t.getHours()>=12?"pm":"am";return n=n>12?n-12:n,a=2>a.length?"0"+a:a,""+n+":"+a+i},t.prototype.promptCreateRoom=function(){var e=this,t=FirechatDefaultTemplates["templates/prompt-create-room.html"],n=this.prompt("Create Public Room",t({maxLengthRoomName:this.maxLengthRoomName,isModerator:e._chat.userIsModerator()}));n.find("a.close").first().click(function(){n.remove()}),n.find("[data-toggle=submit]").first().click(function(){var t=n.find("[data-input=firechat-room-name]").first().val();""!==t&&(e._chat.createRoom(t,"public"),n.remove())}),n.find("[data-input=firechat-room-name]").first().focus(),n.find("[data-input=firechat-room-name]").first().bind("keydown",function(t){if(13===t.which){var a=n.find("[data-input=firechat-room-name]").first().val();if(""!==a)return e._chat.createRoom(a,"public"),n.remove(),!1}})},t.prototype.prompt=function(t,n){var a,i=FirechatDefaultTemplates["templates/prompt.html"];return a=e(i({title:t,content:n})).css({top:this.$wrapper.position().top+.333*this.$wrapper.height(),left:this.$wrapper.position().left+.125*this.$wrapper.width(),width:.75*this.$wrapper.width()}),this.$wrapper.append(a.removeClass("hidden")),a},t.prototype.linkify=function(e){var t=this;return e.replace(t.urlPattern,'$&').replace(t.pseudoUrlPattern,'$1$2')}}(jQuery);