if(!this.JSON)this.JSON={};
(function(){function d(g){return g<10?"0"+g:g}function e(g){c.lastIndex=0;return c.test(g)?'"'+g.replace(c,function(l){var n=f[l];return typeof n==="string"?n:"\\u"+("0000"+l.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+g+'"'}function a(g,l){var n,k,o,p,m=i,r,q=l[g];if(q&&typeof q==="object"&&typeof q.toJSON==="function")q=q.toJSON(g);if(typeof h==="function")q=h.call(l,g,q);switch(typeof q){case "string":return e(q);case "number":return isFinite(q)?String(q):"null";case "boolean":case "null":return String(q);
case "object":if(!q)return"null";i+=j;r=[];if(Object.prototype.toString.apply(q)==="[object Array]"){p=q.length;for(n=0;n<p;n+=1)r[n]=a(n,q)||"null";o=r.length===0?"[]":i?"[\n"+i+r.join(",\n"+i)+"\n"+m+"]":"["+r.join(",")+"]";i=m;return o}if(h&&typeof h==="object"){p=h.length;for(n=0;n<p;n+=1){k=h[n];if(typeof k==="string")if(o=a(k,q))r.push(e(k)+(i?": ":":")+o)}}else for(k in q)if(Object.hasOwnProperty.call(q,k))if(o=a(k,q))r.push(e(k)+(i?": ":":")+o);o=r.length===0?"{}":i?"{\n"+i+r.join(",\n"+i)+
"\n"+m+"}":"{"+r.join(",")+"}";i=m;return o}}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+d(this.getUTCMonth()+1)+"-"+d(this.getUTCDate())+"T"+d(this.getUTCHours())+":"+d(this.getUTCMinutes())+":"+d(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()}}var b=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
c=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,i,j,f={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},h;if(typeof JSON.stringify!=="function")JSON.stringify=function(g,l,n){var k;j=i="";if(typeof n==="number")for(k=0;k<n;k+=1)j+=" ";else if(typeof n==="string")j=n;if((h=l)&&typeof l!=="function"&&(typeof l!=="object"||typeof l.length!=="number"))throw Error("JSON.stringify");return a("",
{"":g})};if(typeof JSON.parse!=="function")JSON.parse=function(g,l){function n(o,p){var m,r,q=o[p];if(q&&typeof q==="object")for(m in q)if(Object.hasOwnProperty.call(q,m)){r=n(q,m);if(r!==undefined)q[m]=r;else delete q[m]}return l.call(o,p,q)}var k;g=String(g);b.lastIndex=0;if(b.test(g))g=g.replace(b,function(o){return"\\u"+("0000"+o.charCodeAt(0).toString(16)).slice(-4)});if(/^[\],:{}\s]*$/.test(g.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){k=eval("("+g+")");return typeof l==="function"?n({"":k},""):k}throw new SyntaxError("JSON.parse");}})();var cookie={};cookie.set=function(d,e,a){if(a)e+="; expires="+(new Date((new Date).getTime()+864E5*a)).toGMTString();document.cookie=d+"="+e+"; path=/"};cookie.get=function(d){var e=document.cookie.split(";"),a;d+="=";for(var b=0;b<e.length;b++){a=e[b].replace(/^\s*/,"");if(0===a.indexOf(d))return a.slice(d.length,a.length)}};cookie.clear=function(d){cookie.set(d,"",-1)};var bt;try{bt=exports}catch(e$$5){bt={}}if(!Array.prototype.indexOf)Array.prototype.indexOf=function(d){for(var e=0;e<this.length;e++)if(d===this[e])return e;return-1};bt.curry=function(d){var e=Array.prototype.slice.call(arguments,1);return function(){return Function.prototype.apply.call(d,this,e.concat(Array.prototype.slice.call(arguments)))}};bt.scope=function(d,e){return function(){return Function.prototype.apply.call(d,e,arguments)}};
bt.hasOwnProperties=function(d){for(var e in d)if(d.hasOwnProperty(e))return true;return false};bt.mixin=function(d){var e;for(e=1;e<arguments.length;e++)for(var a in arguments[e])if(arguments[e].hasOwnProperty(a)&&undefined!==arguments[e][a])d[a]=arguments[e][a];return d};bt.union=function(){return bt.mixin.apply(bt,[{}].concat(Array.prototype.slice.call(arguments)))};bt.components=function(d){if(!d)return[];d=/[^\/].*[^\/]/.exec(d);if(!d)return[];return d[0].split("/")};
bt.dispatch=function(d,e,a){return function(b,c){var i=Array.prototype.slice.call(arguments,2),j,f,h;if(c.length){j=a?a.apply(arguments.callee,i):arguments.callee;if(!j)return b;f=c.shift();if(j.hasOwnProperty(f))h=j[f];if(!h)return b;if(e)return e.apply(arguments.callee,[bt.curry(h,b,c)].concat(i));return Function.prototype.apply.call(h,arguments.callee,arguments)}else if(d)return d.apply(arguments.callee,i);return b}};
bt.map=function(d,e){var a,b,c;if(d.length>=0){a=[];for(b=0;b<d.length;++b){c=e(d[b],b,d);undefined!==c&&a.push(c)}}else{a={};for(b in d)if(d.hasOwnProperty(b)){c=e(d[b],b,d);if(undefined!==c)a[b]=c}}return a};bt.pair=function(d,e){for(var a={},b=0;b<d.length;++b)a[d[b]]=e[b];return a};bt.array={};bt.array.indexOf=function(d,e,a){if(!a)return Array.prototype.indexOf.call(d,e);for(var b=0;b<d.length;b++)if(e===a(d[b]))return b;return-1};
bt.array.removeObject=function(d,e){var a=d.indexOf(e);-1!==a&&d.splice(a,1)};var brawl;try{brawl=exports}catch(e$$6){brawl={}}brawl.brawlName=function(d){return d.slice(0,5)};brawl.friendCode=function(d,e){if(!d)return"";var a=("000000000000"+d).replace(/\D/g,"").slice(-12);if("000000000000"===a)return"";if(undefined===e)e="-";return[a.slice(0,4),a.slice(4,8),a.slice(8)].join(e)};brawl.teams={};brawl.teams.colors=["teamNone","teamRed","teamBlue","teamGreen"];var DOM={};DOM.id=function(d){return document.getElementById(d)};DOM.clone=function(d,e){var a=document.getElementById(d).cloneNode(true);a.id="";e&&function b(c){var i=c.childNodes,j=i.length,f=0,h;if(c.getAttribute)h=c.getAttribute("data-id");if(h)e[h]=c;for(;f<j;++f)b(i[f])}(a);return a};DOM.remove=function(d){d.parentNode&&d.parentNode.removeChild(d)};
DOM.fill=function(d){for(var e=1,a;d.hasChildNodes();)d.removeChild(d.firstChild);for(;e<arguments.length;++e)if(arguments[e]){a=typeof arguments[e];"string"===a||"number"===a?d.appendChild(document.createTextNode(arguments[e])):d.appendChild(arguments[e])}};
DOM.classify=function(d,e,a){var b=(d.className||"").split(" ");e=(e||"").split(" ");var c=e.length,i=0;if(a||undefined===a)for(;i<c;++i){a=b.indexOf(e[i]);a<0&&b.push(e[i])}else for(;i<c;++i){a=b.indexOf(e[i]);a>=0&&b.splice(a,1)}d.className=b.join(" ")};
DOM.linkify=function(d){d=d;for(var e=document.createElement("span"),a,b,c,i=/[\w\d.\-]+@[\w\d.\-]+[.][\w\d.\-]*[\w\d]/,j=RegExp(/[\w\-]+:\/\/?[\w\d\/!@#$%\^&*?.=+\-:~]+[\w\d\/&#*]/.source+"|"+i.source);a=j.exec(d);){a=a[0];c=d.indexOf(a);b=youtube.anchorForVideoURL(a);if(!b){b=DOM.clone("anchor");DOM.fill(b,a);b.href=i.test(a)?"mailto:"+a:a}e.appendChild(document.createTextNode(d.slice(0,c)));b&&e.appendChild(b);d=d.slice(c+a.length)}e.appendChild(document.createTextNode(d));return e};
DOM.inputify=function(d){var e=/(.*[\S].*)[\s]<-[\s](.*[\S].*)/.exec(d);if(!e)return DOM.linkify(d);d=DOM.linkify(e[1]);e=DOM.linkify(e[2]);DOM.classify(d,"quote");var a=document.createElement("span");DOM.fill(a,d," <- ",e);return a};DOM.input={};DOM.input.enable=function(d,e,a,b){var c=Array.prototype.slice.call(arguments);b=!c.pop();bt.map(c,function(i){i.disabled=b;DOM.classify(i,"disabled",b)})};DOM.event={};
DOM.event.isReturn=function(d){if(!d)d=window.event;if(!d)return false;d=d.keyCode;return 13===parseInt(d,10)||10===parseInt(d,10)};DOM.field={};DOM.field.focus=function(d){/iPhone|iPad/i.test(navigator.userAgent)||/Opera/i.test(navigator.userAgent)||d.focus()};DOM.field.onChange=function(d,e,a,b){b=arguments[arguments.length-1];bt.map(arguments,function(c){c.onchange=b;c.onkeypress=function(i){DOM.event.isReturn(i)&&this.blur()}})};
DOM.field.placeholder=function(){bt.map(arguments,function(d){DOM.classify(d,"placeholder",d.value===this.title);d.onfocus=function(){if(this.value===this.title){this.value="";DOM.classify(this,"placeholder",false)}};d.onblur=function(){if(!this.value){this.value=this.title;DOM.classify(this,"placeholder")}};d.onblur()})};DOM.button={};
DOM.button.confirm=function(d,e){var a=d.value,b=d.onclick,c=setTimeout(function(){d.value=a;DOM.classify(d,"confirm",false);d.onclick=b},1E3);d.value="Confirm";DOM.classify(d,"confirm");d.onclick=function(){clearTimeout(c);d.value=a;DOM.classify(d,"confirm",false);d.onclick=b;return e.apply(this,arguments)}};DOM.select={};DOM.select.option=function(d,e){var a=document.createElement("option");DOM.fill(a,d);if(undefined!==e)a.value=e;return a};
DOM.select.choose=function(d,e){for(var a=0;a<d.options.length;++a)if(String(e)===String(d.options[a].value)){d.selectedIndex=a;return true}d.selectedIndex=0;return false};DOM.scroll={};DOM.scroll.toBottom=function(d){d.scrollTop=d.scrollHeight};DOM.scroll.preserve=function(d,e){var a=d.scrollTop>=d.scrollHeight-d.clientHeight;e();a&&DOM.scroll.toBottom(d)};var youtube={};youtube.dataByVideoID={};youtube.callbackByUniqueID={};youtube.uniqueID=0;youtube.videoIDForURL=function(d){return(d=/(youtube.*[\?&!#\/]v=|youtu.be\/)([\w\d\-]{11})/.exec(d))&&d[2]};
youtube.infoForVideoID=function(d,e){if(youtube.dataByVideoID.hasOwnProperty(d))e&&e(youtube.dataByVideoID[d]);else{var a=++youtube.uniqueID,b=document.createElement("script"),c=setTimeout(function(){e&&e({});e=null;DOM.remove(b)},5E3);youtube.callbackByUniqueID[a]=function(i){i=i&&i.data||{};clearTimeout(c);youtube.dataByVideoID[d]=i;e&&e(i);delete youtube.callbackByUniqueID[a];DOM.remove(b)};b.type="text/javascript";b.src="http://gdata.youtube.com/feeds/api/videos/"+encodeURIComponent(d)+"?v=2&alt=jsonc&callback=youtube.callbackByUniqueID["+
encodeURIComponent(a)+"]";document.body.appendChild(b)}};youtube.anchorForVideoURL=function(d){var e=youtube.videoIDForURL(d);d=/[#!|#|\?|&]t=([hms\d]+)/.exec(d);var a;if(!e)return null;a=DOM.clone("anchor");a.href="http://www.youtube.com/watch?v="+e;if(d)a.href+="#t="+d[1];DOM.fill(a,"Loading video\u2026");youtube.infoForVideoID(e,function(b){DOM.fill(a,b.title||"Unknown video")});return a};
youtube.parseDate=function(d){if(!d)return null;d=d.match(/\d+/g);var e=new Date;e.setUTCFullYear(d.shift());e.setUTCMonth(d.shift()-1);e.setUTCDate(d.shift());e.setUTCHours(d.shift());e.setUTCMinutes(d.shift());e.setUTCSeconds(d.shift());e.setUTCMilliseconds(d.shift());return e};var SidebarItem=function(d){var e=this;e.selected=false;e.element=DOM.clone("sidebarItem",e);e.content=undefined;DOM.fill(e.title,d);e.select=function(a){a=Boolean(a);if(a!==e.selected){if(a){SidebarItem.selected&&SidebarItem.selected.select(false);SidebarItem.selected=e}e.selected=a;DOM.classify(e.row,"selected",a);DOM.fill(DOM.id("main"),a?e.content:undefined);a&&e.onshow&&e.onshow()}};e.setContent=function(a){e.content=a;e.selected&&DOM.fill(DOM.id("main"),a)};e.row.onclick=function(){e.content&&
!e.selected&&e.select(true)}};SidebarItem.deselect=function(){if(SidebarItem.selected){SidebarItem.selected.select(false);delete SidebarItem.selected}};var AboutPage=function(d){this.sidebarItem=new SidebarItem("About");this.sidebarItem.setContent(DOM.clone("about"));d.siteItem.children.appendChild(this.sidebarItem.element)};var VideosPage=function(d){var e=this,a={},b={total:0,unseen:0};e.sidebarItem=new SidebarItem("Videos");d.siteItem.children.appendChild(e.sidebarItem.element);e.sidebarItem.setContent(DOM.clone("videos",a));e.sidebarItem.onshow=function(){b.total<10&&a.more.onclick();b.unseen=0;DOM.fill(e.sidebarItem.counter)};DOM.field.placeholder(a.videoURL);a.more.onclick=function(){d.request("/videos/",{start:b.total})};a.submit.onclick=function(){if(!d.user)throw Error("Only users can submit videos");var c=youtube.videoIDForURL(a.videoURL.value);
c&&d.user.request("/video/",{youtubeID:c});a.videoURL.value="";a.videoURL.onblur()};a.videoURL.onkeypress=function(c){if(DOM.event.isReturn(c)){a.submit.onclick();this.blur()}};e.allowSubmissions=function(){DOM.classify(a.submitPane,"invisible",false)};e.add=function(c){if(c.videos){b.total+=c.videos.length;var i=bt.map(c.videos,function(j){var f={},h=DOM.clone("video",f);f.anchor.href="http://www.youtube.com/watch?v="+j.youtubeID;DOM.fill(f.submitterName,j.userName);youtube.infoForVideoID(j.youtubeID,
function(g){f.thumbnail.src=(g.thumbnail||{}).sqDefault;DOM.fill(f.anchor,g.title||"Unknown video");DOM.fill(f.uploaderName,g.uploader||"Unknown");DOM.fill(f.uploadDate,g.uploaded?youtube.parseDate(g.uploaded).toLocaleDateString():"Unknown");f.uploaderName.href="http://www.youtube.com/user/"+g.uploader;g.duration&&DOM.fill(f.duration,""+Math.floor(g.duration/60)+":"+("0"+g.duration%60).slice(-2))});return h});if(c.old)bt.map(i,function(j){a.videos.appendChild(j)});else{bt.map(i.reverse(),function(j){a.videos.insertBefore(j,
a.videos.firstChild)});if(!e.sidebarItem.selected){b.unseen+=i.length;DOM.fill(e.sidebarItem.counter,b.unseen)}}}}};var Session=function(){var d=this,e={requests:[],callbackByPromiseID:{},dataByPromiseID:{}},a=new SidebarItem("Account"),b=function(){var c=false,i={},j=function(f){if(!c){DOM.input.enable(i.signinButton,i.signupButton,false);d.request("/user/",{userName:i.userNameField.value,password:i.passwordField.value,signup:f},function(h){if(h){DOM.fill(i.error,h);c=true;setTimeout(function(){c=false;DOM.input.enable(i.signinButton,i.signupButton,true)},1E3)}})}};a.setContent(DOM.clone("authenticate",i));a.onshow=
function(){DOM.field.focus(i.userNameField)};a.onshow();i.signinButton.onclick=bt.curry(j,false);i.signupButton.onclick=bt.curry(j,true);i.userNameField.onkeypress=function(f){DOM.event.isReturn(f)&&DOM.field.focus(i.passwordField)};i.passwordField.onkeypress=function(f){DOM.event.isReturn(f)&&j(false)}};d.siteItem=new SidebarItem("FSMASH.org");d.siteItem.children.appendChild(a.element);d.sidebar=DOM.clone("sidebarList");d.sidebar.appendChild(d.siteItem.element);DOM.id("sidebar").appendChild(d.sidebar);
a.setContent(DOM.clone("loading"));a.select(true);d.info={};d.user=null;Session.all.push(d);d.request=function(c,i,j){e.requests.push({path:c,props:i||{},callback:j});1===e.requests.length&&function f(){var h=e.requests.shift();Session.request("/session"+h.path,bt.union(h.props,d.info),function(g){if(g&&g.needsNewSession)d.terminate();else{if(g&&g.error)throw g.error;if(h.callback)if(!g||!g.promiseID)h.callback(g);else if(e.dataByPromiseID.hasOwnProperty(g.promiseID))h.callback(e.dataByPromiseID[g.promiseID]);
else e.callbackByPromiseID[g.promiseID]=h.callback;e.requests.length&&f()}})}()};d.terminate=function(){window.location=window.location};d.event=bt.dispatch();d.event.user=bt.dispatch(function(c){if(c.accountError)return c.accountError;if(!d.user)d.user=new User(d,c.userID);d.user.info=c;Session.byUserID[d.user.info.userID]=d;d.user.updateWithInfo();d.user.info.userName&&DOM.fill(a.title,d.user.info.userName);a.setContent(d.user.account)},null,function(){return d.user?d.user.event:null});d.event.videos=
bt.dispatch(function(c){d.videosPage.add(c)});d.aboutPage=new AboutPage(d);d.videosPage=new VideosPage(d);(function(){var c=[];d.showModal=function(i){c.push(i);DOM.id("modal").appendChild(i)};d.closeAllModals=function(){bt.map(c,function(i){DOM.remove(i)})}})();d.request("/",{},function(c){d.info=c;c={userName:cookie.get("userName"),userToken:cookie.get("userToken"),signup:false};if(c.userName&&!cookie.get("requirePassword"))d.request("/user/",c,function(i){if(i){cookie.clear("userName");cookie.clear("userToken");
b()}});else{cookie.clear("requirePassword");b()}d.watch=function(){Session.request("/session/watch/",d.info,function(i){if(!i)return d.watch();if(i.needsNewSession)d.terminate();else{i.length&&bt.map(i,function(j){if(!j.body)j.body={};if(undefined!==j.body.error)throw j.body.error;var f=d.event(undefined,bt.components(j.path),j.body);if(undefined!==j.promiseID)if(e.callbackByPromiseID.hasOwnProperty(j.promiseID))e.callbackByPromiseID[j.promiseID](f);else e.dataByPromiseID[j.promiseID]=f});d.watch()}})};
window.onload||d.watch()})};
Session.request=function(d,e,a){var b=null;if(window.XMLHttpRequest&&!window.ActiveXObject)try{b=new XMLHttpRequest}catch(c){}else if(window.ActiveXObject)try{b=new ActiveXObject("Msxml2.XMLHTTP")}catch(i){try{b=new ActiveXObject("Microsoft.XMLHTTP")}catch(j){}}b.open("POST","/api"+d+"?r="+(new Date).getTime(),true);b.onreadystatechange=function(){if(4===b.readyState){DOM.classify(DOM.id("connectionError"),"invisible",200===b.status);200===b.status||500===b.status?a(b.responseText?JSON.parse(b.responseText):
false):setTimeout(bt.curry(Session.request,d,e,a),5E3)}};b.setRequestHeader("Content-Type","text/json");b.send(JSON.stringify(e||{}))};Session.all=[];Session.byUserID={};var User=function(d,e){var a=this,b=new SidebarItem("Subscribe");d.siteItem.children.appendChild(b.element);b.onshow=function(){DOM.fill(b.counter)};var c={};b.setContent(DOM.clone("subscribe",c));c.custom.value=JSON.stringify({userID:e});DOM.field.onChange(c.color,function(){var f=/[0-9a-fA-F]{6}/.exec(c.color.value);a.request("/subscription/color/",{color:f?f[0]:null})});var i=new SidebarItem("Channels"),j={};d.sidebar.appendChild(i.element);a.account=DOM.clone("account",j);a.personByUserID={};
a.channelByID={};a.rootChannelByID={};a.config={};a.person=new Person(d,a,e);a.broadcastCount=0;d.videosPage.allowSubmissions();a.event=bt.dispatch();a.event.config=bt.dispatch(function(f){bt.mixin(a.config,f);if(a.config.publicChannels){DOM.fill(j.publicChannels);bt.map(a.config.publicChannels,function(h){var g={};j.publicChannels.appendChild(DOM.clone("publicChannel",g));DOM.fill(g.title,h.topic);g.description.innerHTML=h.descriptionHTML;g.join.onclick=function(){var l=function(){if(!a.channelByID.hasOwnProperty(h.channelID))return false;
a.channelByID[h.channelID].sidebarItem.select(true);return true};l()||a.request("/publicChannel/join/",{channelID:h.channelID},l)}})}if(a.config.soundsets){DOM.fill(j.soundsets);bt.map(a.config.soundsets,function(h){j.soundsets.appendChild(DOM.select.option(h.label,h.soundsetID))})}if(a.config.matchTypes||a.config.rules)bt.map(a.channelByID,function(h){h.game&&h.game.updateConfig()})});a.event.settings=bt.dispatch(function(f){undefined!==f.styleID&&a.setStyleID(f.styleID);undefined!==f.soundsetID&&
a.setSoundsetID(f.soundsetID)});a.event.password=bt.dispatch(function(f){return f});a.event.person=bt.dispatch(function(f){var h;h=a.personByUserID.hasOwnProperty(f.userID)?a.personByUserID[f.userID]:new Person(d,a,f.userID);h.updateWithInfo(f);h.setOffline(false)},null,function(f){return a.personByUserID.hasOwnProperty(f.userID)?a.personByUserID[f.userID].event:null});a.event.channel=bt.dispatch(function(f){var h;h=a.channelByID.hasOwnProperty(f.channelID)?a.channelByID[f.channelID]:new Channel(d,
a,f.channelID,f.parentID);if(f.topic){h.title=f.topic;DOM.fill(h.sidebarItem.title,h.title);h.parent?Channel.updateSubchannels(h.parent):Channel.updateSubchannels(null,a.rootChannelByID,i.children,function(g,l){var n=function(k){return k.channelID};return bt.array.indexOf(a.config.publicChannels,g.info.channelID,n)-bt.array.indexOf(a.config.publicChannels,l.info.channelID,n)})}undefined!==f.allowsGameChannels&&h.setAllowsGameChannels(f.allowsGameChannels);return h},null,function(f){return a.channelByID.hasOwnProperty(f.channelID)?
a.channelByID[f.channelID].event:null});a.event.administrator=bt.dispatch(function(f){if(!a.administrator){a.administrator=new Administrator(d,a,f.signupAllowed);DOM.classify(DOM.id("body"),"administrator",true);DOM.classify(DOM.id("body"),"notAdministrator",false)}},null,function(){return a.administrator.event});a.event.ignore=bt.dispatch(function(f){bt.map(f.ignoringByUserID,function(h,g){a.getPerson(g).setIgnored(h)})});a.event.subscription=bt.dispatch(function(f){if(f.expireTime)DOM.fill(c.expireTime,
(new Date(f.expireTime)).toLocaleDateString());else b.selected||DOM.fill(b.counter,"!");DOM.classify(c.subscriberPane,"invisible",!f.expireTime)});a.request=function(f,h,g){return d.request("/user"+f,h,g)};a.updateWithInfo=function(){j.brawlName.value=a.info.brawlName||"";j.friendCode.value=brawl.friendCode(a.info.friendCode);j.bio.value=a.info.bio||"";DOM.field.placeholder(j.brawlName,j.friendCode,j.bio)};a.setBroadcasting=function(f){a.broadcastCount+=f?1:-1;a.broadcastCount<=1&&bt.map(a.channelByID,
function(h){h.game&&h.game.update()})};a.getPerson=function(f,h){if(!a.personByUserID.hasOwnProperty(f)){a.personByUserID[f]=new Person(d,a,f);h&&a.personByUserID[f].updateWithInfo({userName:h})}return a.personByUserID[f]};a.setColor=function(f){c.color.value=f?"#"+f:""};j.password.onclick=function(){var f=false,h={},g=DOM.clone("password",h);DOM.fill(h.title,"Change Password");h.save.onclick=function(){if(!f)if(h.newPassword1.value!==h.newPassword2.value){DOM.fill(h.title,"Please re-enter new password");
DOM.field.focus(h.newPassword2)}else{DOM.input.enable(h.save,false);a.request("/password/",{oldPassword:h.oldPassword.value,newPassword:h.newPassword1.value},function(l){if(l.passwordError){DOM.fill(h.title,l.passwordError);DOM.field.focus(h.oldPassword)}else DOM.remove(g);setTimeout(function(){f=false;DOM.input.enable(h.save,true)},1E3)})}};h.cancel.onclick=function(){DOM.remove(g)};h.oldPassword.onkeypress=function(l){DOM.event.isReturn(l)&&DOM.field.focus(h.newPassword1)};h.newPassword1.onkeypress=
function(l){DOM.event.isReturn(l)&&DOM.field.focus(h.newPassword2)};h.newPassword2.onkeypress=function(l){DOM.event.isReturn(l)&&h.save.onclick()};d.showModal(g);DOM.field.focus(h.oldPassword)};(function(){j.remember.value=cookie.get("userName")?"Forget Me":"Remember Me";j.remember.onclick=function(){if(cookie.get("userName")){cookie.clear("userName");cookie.clear("userKey");j.remember.value="Remember Me"}else{DOM.input.enable(j.remember,false);a.request("/remember/",{},function(f){DOM.input.enable(j.remember,
true);if(f){cookie.set("userName",a.info.userName,30);cookie.set("userToken",f.token,30);j.remember.value="Forget Me"}})}}})();j.signout.onclick=function(){cookie.get("userName")&&cookie.set("requirePassword","1");d.request("/terminate/")};(function(){var f=function(h){var g={};g[h]=this.value;a.request("/profile/",g);this.blur()};DOM.field.onChange(j.brawlName,bt.curry(f,"brawlName"));DOM.field.onChange(j.friendCode,function(){this.value=brawl.friendCode(this.value);f.call(this,"friendCode")});DOM.field.onChange(j.bio,
bt.curry(f,"bio"))})();(function(){var f=document.getElementsByTagName("link"),h,g=function(l){for(var n=0;n<f.length;++n)if(f[n].title&&f[n].getAttribute("data-style-id"))f[n].disabled=f[n].getAttribute("data-style-id")!==String(l)};a.setStyleID=function(l){g(l);DOM.select.choose(j.styles.parentNode,l)};DOM.fill(j.styles,DOM.select.option("Light","1"));for(h=0;h<f.length;++h)if(f[h].title&&f[h].getAttribute("data-style-id")){f[h].disabled=true;j.styles.appendChild(DOM.select.option(f[h].title,f[h].getAttribute("data-style-id")))}j.styles.parentNode.onchange=
function(){var l=this.options[this.selectedIndex].value;g(l);a.request("/settings/",{styleID:l})}})();(function(){var f,h=function(g){if(a.config.soundsets)for(var l=0;l<a.config.soundsets.length;++l)if(g===a.config.soundsets[l].soundsetID){f=a.config.soundsets[l];break}};a.setSoundsetID=function(g){h(g);DOM.select.choose(j.soundsets.parentNode,g)};a.playSound=function(g){if(!(!f||!f.path||!f.hasOwnProperty(g))){var l=document.createElement("embed");l.setAttribute("width",0);l.setAttribute("height",
0);l.setAttribute("hidden",true);l.setAttribute("autostart",true);l.setAttribute("volume",50);l.src="soundsets/"+f.path+"/"+f[g]+".wav?r=1";DOM.fill(DOM.id("audio"),l)}};j.soundsets.parentNode.onchange=function(){var g=this.options[this.selectedIndex].value;h(g);a.request("/settings/",{soundsetID:g})}})();(function(){var f;a.resetIdleTimeout=function(){null===f&&a.request("/idle/",{idle:false});clearTimeout(f);f=setTimeout(function(){f=null;a.request("/idle/",{idle:true})},3E5)};a.resetIdleTimeout()})()};var Administrator=function(d,e,a){var b=this,c,i={},j=function(){c.selected||DOM.fill(c.counter,"!")};b.event=bt.dispatch();b.event.reports=bt.dispatch(function(f){i.reports.insertBefore(document.createTextNode(bt.map(f,function(h){return(h.topic||"(untitled)")+" / "+h.userName+" / "+(new Date(h.time)).toUTCString()}).join("\n")+"\n"),i.reports.firstChild);j()});b.event.censored=bt.dispatch(function(f){i.censored.insertBefore(document.createTextNode(bt.map(f,function(h){return(h.topic||"(untitled)")+
" / "+h.modUserName+" / "+(new Date(h.time)).toUTCString()+"\n\t"+h.censorText+"\n\t"+h.replacementText}).join("\n")+"\n"),i.censored.firstChild);j()});b.request=function(f,h,g){return e.request("/administrator"+f,h,g)};c=new SidebarItem("Administrator");c.onshow=function(){DOM.fill(c.counter)};d.siteItem.children.appendChild(c.element);c.setContent(DOM.clone("administrator",i));j();i.signupAllowed.value=a?"Turn Signup Off":"Turn Signup On";i.signupAllowed.onclick=function(){b.request("/signups/",
{signupAllowed:!a},function(f){if(f){a=f.signupAllowed;i.signupAllowed.value=a?"Turn Signup Off":"Turn Signup On"}})};i.updateFiles.onclick=function(){b.request("/update/files/")};i.updateConfig.onclick=function(){b.request("/update/config/")};i.updateDatabase.onclick=function(){b.request("/update/database/")};i.updateRankings.onclick=function(){b.request("/update/rankings/")};i.updateChannelAncestors.onclick=function(){b.request("/update/channelAncestors/")};i.updateStatistics.onclick=function(){b.request("/statistics/",
{},function(f){DOM.fill(i.statistics,JSON.stringify(f,undefined,"\t"))})}};var Person=function(d,e,a){var b=this,c=function(f){if(!Person.keysByComponent.hasOwnProperty(f))throw Error("Invalid component name");f=Person.keysByComponent[f];for(var h=[],g=0;g<f.length;g++)b.info.hasOwnProperty(f[g])&&b.info[f[g]]&&h.push(b.info[f[g]]);return h.join(" / ")},i=[],j=function(){var f=this;f.destruct=function(){var g=i.indexOf(f);-1!==g&&i.splice(g,1);DOM.remove(f.element);delete f.element;delete f.destruct};f.setTeamID=function(g){brawl.teams.colors.hasOwnProperty(g)||(g=0);DOM.classify(f.element,
brawl.teams.colors[f.teamID],false);f.teamID=g;DOM.classify(f.element,brawl.teams.colors[f.teamID],true)};f.person=b;i.push(f);f.element=DOM.clone("person",f);DOM.classify(f.element,"idle",f.person.info.idle);f.setTeamID();for(var h in Person.keysByComponent)Person.keysByComponent.hasOwnProperty(h)&&DOM.fill(f[h],DOM.inputify(c(h)))};b.info={userID:a,friendCode:"(no friend code specified in profile)"};e.personByUserID[b.info.userID]=b;b.rated=false;b.offline=true;b.subscriber=false;b.ignored=false;
b.color=null;b.event=bt.dispatch();b.event.signout=bt.dispatch(function(){bt.map(e.channelByID,function(f){f.removeMember(b)});b.setOffline(true);b===e.person&&d.terminate()});b.item=function(){return new j};b.updateWithInfo=function(f){var h;if(undefined!==f.friendCode)f.friendCode=brawl.friendCode(f.friendCode)||"(no friend code specified in profile)";if(undefined!==f.idle){b.info.idle=Boolean(f.idle);for(h=0;h<i.length;++h)DOM.classify(i[h].element,"idle",b.info.idle)}if(undefined!==f.rank)f.rank=
"Rank "+f.rank;if(undefined!==f.subscriber){if(f.subscriber)f.memberType="Subscriber";else delete f.memberType;b.setSubscriber(f.subscriber)}if(undefined!==f.color){b.setColor(f.color?"#"+f.color:"");b===e.person&&e.setColor(f.color)}var g,l,n;for(n in Person.keysByComponent)if(Person.keysByComponent.hasOwnProperty(n)){g=Person.keysByComponent[n];l=false;for(h=0;h<g.length;++h)if(f.hasOwnProperty(g[h])){b.info[g[h]]=f[g[h]];l=true}if(l){g=c(n);for(h=0;h<i.length;++h)DOM.fill(i[h][n],DOM.inputify(g))}}};
(function(){var f={},h=function(l){bt.map(f,function(n){bt.map(n,l)})},g=function(l,n){n=Boolean(n);if(n!==b[l]){b[l]=n;h(function(k){DOM.classify(k.element,l,n)})}};b.trackMessageElement=function(l,n,k){f.hasOwnProperty(k)||(f[k]=[]);f[k].push({element:l,name:n});DOM.classify(l,"offline",b.offline);DOM.classify(l,"subscriber",b.subscriber);DOM.classify(l,"ignored",b.ignored);n.style.color=b.color};b.stopTrackingMessages=function(l){delete f[l]};b.setOffline=bt.curry(g,"offline");b.setSubscriber=
bt.curry(g,"subscriber");b.setIgnored=bt.curry(g,"ignored");b.setColor=function(l){b.color=l;h(function(n){n.name.style.color=l})}})()};Person.keysByComponent={title:["userName","location","rank","memberType"],brawlInfoContent:["brawlName","friendCode"],bio:["bio"]};var Group=function(d,e){var a=this;a.itemByUserID={};a.onadd=null;a.onremove=null;a.showsBrawlInfo=false;a.element=DOM.clone("group",a);DOM.fill(a.title,d);a.update=function(){var b=[],c;for(c in a.itemByUserID)a.itemByUserID.hasOwnProperty(c)&&b.push(a.itemByUserID[c]);b.sort(function(i,j){return(i.person.info.userName||"").localeCompare(j.person.info.userName||"")});DOM.fill(a.children);bt.map(b,function(i){bt.map(e,function(j,f){var h=i.buttons[f];DOM.classify(h,"invisible",!j.call(h,true,i))});
a.children.appendChild(i.element)})};a.addItem=function(b,c){if(b){var i=b.person.info.userID;if(a.itemByUserID.hasOwnProperty(i))throw Error("This group already has an item for the specified person");a.itemByUserID[i]=b;b.group=a;(function(){var j;DOM.fill(b.commands);b.buttons=bt.map(e,function(f){j=DOM.clone("button");j.onclick=bt.curry(f,false,b);b.commands.appendChild(j);return j})})();DOM.classify(b.brawlInfo,"invisible",!a.showsBrawlInfo);a.onadd&&a.onadd(b);c&&a.update()}};a.removeItem=function(b,
c){if(!a.itemByUserID.hasOwnProperty(b))return null;var i=a.itemByUserID[b];delete a.itemByUserID[b];delete i.group;if(c)i.destruct();else{DOM.remove(i.element);a.onremove&&a.onremove(i);return i}};a.setShowsBrawlInfo=function(b){a.showsBrawlInfo=b;bt.map(a.itemByUserID,function(c){DOM.classify(c.brawlInfo,"invisible",!a.showsBrawlInfo)})};a.moveAllToGroup=function(b){bt.map(a.itemByUserID,function(c,i){b.addItem(a.removeItem(i))});b.update()}};var Channel=function(d,e,a,b){var c=this,i=0,j={},f={},h={},g=DOM.clone("info",f),l=DOM.clone("chat",h),n=function(){var k=c.memberByUserID.hasOwnProperty(e.info.userID);if(k!==c.userIsMember){c.userIsMember=k;c.game&&c.game.broadcasting&&e.setBroadcasting(c.userIsMember);if(c.removeIfNecessary())return;j.info.onclick()}DOM.input.enable(j.leave,j.chat,c.userIsMember);c.groups.members.update();c.groups.formerMembers.update();c.groups.nonMembers.update();c.game&&c.game.update()};c.info={channelID:a,
parentID:b};c.memberByUserID={};c.channelByID={};c.userIsMember=false;c.element=DOM.clone("channel",j);c.scrollBox=h.scrollBox;c.announcements=h.announcements;c.sidebarItem=new SidebarItem("(untitled)");c.sidebarItem.setContent(c.element);c.sidebarItem.onshow=function(){c.groups.members.update();c.groups.formerMembers.update();g.parentNode&&c.resetUnreadCounter("challenge");if(l.parentNode){c.resetUnreadCounter("message");DOM.scroll.toBottom(c.scrollBox);DOM.field.focus(h.input)}};(function(){var k=
function(p,m){if(p){this.value="Ban\u2026";return e.administrator&&m.person!==e.person}DOM.button.confirm(this,function(){e.administrator.request("/ban/",{personUserID:m.person.info.userID})})},o=function(p,m){var r=this;if(p){this.value="Rate\u2026";DOM.classify(r,"notice",false);if(!c.game)return false;if(!c.userIsMember)return false;if(m.person===e.person)return false;DOM.classify(r,"notice",!m.person.rated);return true}var q={},s=DOM.clone("rating",q),t=function(u){DOM.input.enable(q.down,q.neutral,
q.up,false);e.request("/person/rate/",{personUserID:m.person.info.userID,rating:u},function(v){DOM.input.enable(q.down,q.neutral,q.up,true);if(v){m.person.rated=true;DOM.classify(r,"notice",false);DOM.remove(s)}})};DOM.fill(q.title,"vs. "+m.person.info.userName);q.up.onclick=bt.curry(t,1);q.neutral.onclick=bt.curry(t,0);q.down.onclick=bt.curry(t,-1);q.cancel.onclick=function(){DOM.remove(s)};d.showModal(s)};c.groups={members:new Group("Members",[k,function(p,m){var r=this;if(p){r.value=m.person.ignored?
"Unignore":"Ignore";return c.userIsMember&&m.person!==e.person}(function(q){DOM.input.enable(r,false);e.request("/person/ignore/",{personUserID:m.person.info.userID,ignore:q},function(){DOM.input.enable(r,true);m.group.update()})})(!m.person.ignored)},o,function(p,m){if(p){this.value="Team";if(!c.userIsMember||!c.game)return false;return e.config.matchTypes[c.game.info.matchTypeID].hasTeams}c.game.request("/member/team/",{memberUserID:m.person.info.userID,teamID:(m.teamID+1)%brawl.teams.colors.length})}]),
formerMembers:new Group("Former Members",[k,o]),nonMembers:new Group("Non-Members",[k,function(p,m){if(p){this.value="Invite";return c.userIsMember&&m.person!==e.person}c.request("/invite/",{invitedUserID:m.person.info.userID})}])};c.groups.members.onremove=function(p){p.setTeamID()}})();DOM.fill(f.groups,c.groups.members.element,c.groups.formerMembers.element,c.groups.nonMembers.element);c.request=function(k,o,p){return e.request("/channel"+k,bt.union(o,{channelID:c.info.channelID}),p)};c.personJoinedParentChannel=
function(k){c.groups.formerMembers.itemByUserID.hasOwnProperty(k.info.userID)||c.groups.nonMembers.addItem(k.item(),true)};c.personLeftParentChannel=function(k){k=k.info.userID;c.groups.nonMembers.removeItem(k,true);c.game&&c.game.groups.applicants.removeItem(k,true);c.groups.formerMembers.addItem(c.groups.members.removeItem(k),true)};c.removeMember=function(k,o){if(c.memberByUserID.hasOwnProperty(k.info.userID)){c.groups.formerMembers.addItem(c.groups.members.removeItem(k.info.userID),true);bt.map(c.channelByID,
function(p){p.personLeftParentChannel(k)});delete c.memberByUserID[k.info.userID];n();i--;c.userIsMember&&o&&c.postNotification(k.info.userName+" left",new Date(o))}};c.removeIfNecessary=function(){if(c.userIsMember)return false;if(c.game&&c.game.broadcasting)return false;c.sidebarItem.select(false);DOM.remove(c.sidebarItem.element);(function(k){for(var o in k.channelByID)k.channelByID.hasOwnProperty(o)&&arguments.callee(k.channelByID[o]);k.parent&&delete k.parent.channelByID[k.info.channelID];delete e.channelByID[k.info.channelID];
delete e.rootChannelByID[k.info.channelID]})(c);return true};c.postNotification=function(k,o){if(c.userIsMember){var p={},m=DOM.clone("notification",p);DOM.fill(p.message,k);DOM.fill(p.date,o.toLocaleTimeString());DOM.scroll.preserve(c.scrollBox,function(){h.messages.appendChild(m)})}};c.setAllowsGameChannels=function(k){DOM.input.enable(j.newGame,k&&!c.game)};c.setModerator=function(k){if(c.isModerator!==k){c.isModerator=Boolean(k);DOM.classify(c.element,"moderator",Boolean(k));DOM.classify(c.element,
"notModerator",!k);bt.map(c.channelByID,function(o){o.setModerator(k)})}};c.event=bt.dispatch();c.event.member=bt.dispatch(function(k){var o=k.memberUserID,p,m,r;if(!e.personByUserID.hasOwnProperty(o))throw Error("Invalid person joining the channel");if(c.parent&&!c.parent.memberByUserID.hasOwnProperty(o))throw Error("Joining person not a member of parent channel");p=e.personByUserID[o];if(!c.memberByUserID.hasOwnProperty(o)){m=c.groups.nonMembers.removeItem(o)||c.groups.formerMembers.removeItem(o);
if(c.game){m||(m=c.game.groups.applicants.removeItem(o));c.game.removeApplicant(o)}m||(m=p.item());c.groups.members.addItem(m,true);bt.map(c.channelByID,function(q){q.personJoinedParentChannel(p)});c.memberByUserID[o]=p;n();i++}m||(m=c.groups.members.itemByUserID[o]);undefined!==k.teamID&&m.setTeamID(k.teamID);if(c.userIsMember&&k.time){c.alert("join");if(e.personByUserID.hasOwnProperty(k.invitingUserID))r=e.personByUserID[k.invitingUserID];r?c.postNotification(p.info.userName+" was invited by "+
r.info.userName,new Date(k.time)):c.postNotification(p.info.userName+" joined",new Date(k.time))}},function(k,o){if(!c.memberByUserID.hasOwnProperty(o.memberUserID))throw Error("Invalid memberUserID");return k(o,c.memberByUserID[o.memberUserID])});c.event.member.leave=bt.dispatch(function(k,o){o!==e.person&&c.userIsMember&&k.time&&c.alert("leave");c.removeMember(o,k.time)});(function(){var k=[],o=function(p){if(!c.userIsMember)throw Error("Non-members should not be able to receive messages");var m=
{},r=DOM.clone("message",m);DOM.fill(m.date,(new Date(p.time)).toLocaleTimeString());DOM.fill(m.name,p.userName);DOM.fill(m.text,DOM.inputify(p.text));e.getPerson(p.userID,p.userName).trackMessageElement(r,m.name);(function(){var q=false;for(k.push(function(s,t){if(s&&t)if(s===p.text){DOM.fill(m.text,DOM.inputify(t));DOM.classify(m.text,"censored");q=true}});k.length>50;)k.shift();if(p.censored){DOM.classify(m.text,"censored");q=true}m.censor.onclick=function(){if(!q){if(!c.isModerator)throw Error("Moderator-only action");
e.request("/channel/moderator/censor",{channelID:c.info.channelID,censorText:p.text,replacementText:"Message removed by moderator"})}}})();return r};c.event.message=bt.dispatch(function(p){if(e.personByUserID.hasOwnProperty(p.userID)){var m=p.userID!==e.person.info.userID;m&&c.alert("message");DOM.scroll.preserve(c.scrollBox,function(){var r=o(p);m||DOM.classify(r,"light");h.messages.appendChild(r)})}});c.event.history=bt.dispatch(function(p){if(p.history&&p.history.length){var m=DOM.clone("history");
bt.map(p.history,function(r){m.appendChild(o(r))});DOM.scroll.preserve(c.scrollBox,function(){DOM.fill(h.messages,m)})}});c.event.censor=bt.dispatch(function(p){bt.map(k,function(m){m(p.censorText,p.replacementText)})})})();c.event.game=bt.dispatch(function(k){if(!c.game){c.game=new Game(d,e,c);f.panels.insertBefore(c.game.element,f.panels.firstChild);f.groups.insertBefore(c.game.groups.applicants.element,f.groups.firstChild);DOM.input.enable(j.newGame,j.newDiscussion,false)}c.game.updateSettings(k)},
null,function(){if(!c.game)throw Error("Specified channel is not a game channel");return c.game.event});c.event.moderator=bt.dispatch(function(){c.setModerator(true)});(function(){var k={challenge:0,message:0},o={challenge:g,message:l},p=function(){var m;if(k.challenge)m=[k.challenge,k.message].join("+");else if(k.message)m=k.message;DOM.fill(c.sidebarItem.counter,m)};c.alert=function(m){if("challenge"===m||c.game||c.sidebarItem.selected||c.userIsMember&&i<=2)e.playSound(m);if(o.hasOwnProperty(m))if(!(c.sidebarItem.selected&&
o[m].parentNode))if(k.hasOwnProperty(m)){k[m]++;p()}};c.resetUnreadCounter=function(m){if(k.hasOwnProperty(m)){k[m]=0;p()}}})();e.channelByID[c.info.channelID]=c;c.parent=e.channelByID[c.info.parentID];if(c.parent){c.parent.channelByID[c.info.channelID]=c;Channel.updateSubchannels(c.parent);bt.map(c.parent.memberByUserID,function(k){c.groups.nonMembers.addItem(k.item())});c.groups.nonMembers.update();c.setModerator(c.parent.isModerator)}else{e.rootChannelByID[a]=c;DOM.classify(c.groups.nonMembers.element,
"invisible");DOM.classify(c.groups.formerMembers.element,"invisible");c.setModerator(false)}j.info.onclick=function(){DOM.classify(j.chat,"selected",false);DOM.classify(j.info,"selected",true);DOM.fill(j.content,g);c.resetUnreadCounter("challenge")};j.chat.onclick=function(){DOM.classify(j.info,"selected",false);DOM.classify(j.chat,"selected",true);DOM.fill(j.content,l);c.resetUnreadCounter("message");DOM.scroll.toBottom(c.scrollBox);DOM.field.focus(h.input)};j.info.onclick();(function(){var k=function(){if(!c.userIsMember)throw Error("Non-members should not be able to send messages");
var o=h.input.value.replace(/^\s*|\s*$/g,"");if(o){h.input.value="";DOM.scroll.toBottom(c.scrollBox);c.request("/message/",{text:o})}DOM.field.focus(h.input)};h.send.onclick=k;h.input.onkeypress=function(o){DOM.event.isReturn(o)&&k()};h.clear.onclick=function(){DOM.button.confirm(this,function(){DOM.fill(h.messages)})}})();(function(){var k=function(o){if(!c.userIsMember)throw Error("Non-members should not be able to spawn subchannels");c.request("/spawn/",{topic:o},function(p){p&&p.sidebarItem.select(true)})};
j.newGame.onclick=bt.curry(k,null);j.newDiscussion.onclick=function(){var o={},p=DOM.clone("discussion",o),m=function(){var r=o.topic.value.replace(/^\s*|\s\s+|\s*$/g,"");r.length&&k(r);DOM.remove(p)};o.topic.onkeypress=function(r){if(DOM.event.isReturn(r))return m()};o.topic.onkeyup=function(){o.confirm.value=this.value.replace(/^\s*|\s\s+|\s*$/g,"")?"Create":"Cancel"};o.topic.onkeyup();o.confirm.onclick=m;d.showModal(p);DOM.field.focus(o.topic)}})();f.empty.onclick=function(){DOM.button.confirm(this,
function(){e.administrator.request("/channel/empty/",{channelID:c.info.channelID})})};j.leave.onclick=function(){DOM.button.confirm(this,function(){c.request("/leave/")})};h.report.onclick=function(){DOM.button.confirm(this,function(){c.request("/report/")})};n()};
Channel.updateSubchannels=function(d,e,a,b){var c=[];if(!e)e=d.channelByID;if(!a)a=d.sidebarItem.children;b||(b=function(j,f){return(j.title||"").localeCompare(f.title||"")});for(var i in e)e.hasOwnProperty(i)&&c.push(e[i]);c.sort(b);DOM.fill(a);for(d=0;d<c.length;++d)a.appendChild(c[d].sidebarItem.element)};var Game=function(d,e,a){var b=this,c=function(g){g=Boolean(g);if(g!==b.broadcasting){b.broadcasting=g;a.userIsMember&&e.setBroadcasting(b.broadcasting)}},i=function(){DOM.classify(a.sidebarItem.row,"notice",b.broadcasting);DOM.classify(b.groups.applicants.element,"invisible",!b.broadcasting);b.update()},j=false,f={},h;b.broadcasting=false;b.info={matchTypeID:0,ruleID:0};b.applicantByUserID={};(function(){b.groups={applicants:new Group("Applicants",[function(g,l){if(g){this.value="Accept";return a.userIsMember}a.request("/invite/",
{invitedUserID:l.person.info.userID})},function(g,l){if(g){this.value="Deny";return a.userIsMember}b.request("/broadcast/deny/",{applicantUserID:l.person.info.userID})}])};b.groups.applicants.onadd=function(g){DOM.classify(g.element,"notice",true)};b.groups.applicants.onremove=function(g){DOM.classify(g.element,"notice",false)}})();b.request=function(g,l,n){return a.request("/game"+g,l,n)};b.removeApplicant=function(g){if(b.applicantByUserID.hasOwnProperty(g)){delete b.applicantByUserID[g];if(g===
e.info.userID){j=false;b.update()}}};b.update=function(){if(a.userIsMember){b.action.value="Broadcast Invitation";b.cancel.value="Cancel Broadcast\u2026";b.action.onclick=function(){b.request("/broadcast/")};b.cancel.onclick=function(){DOM.button.confirm(this,function(){b.request("/broadcast/stop/")})};var g=b.info.playersNeeded>0&&(b.broadcasting||!e.broadcastCount);DOM.classify(b.action,"notice",g&&b.broadcasting!==a.userIsMember);DOM.input.enable(b.action,g);DOM.input.enable(b.cancel,b.broadcasting)}else{b.action.value=
"Ask to Join";b.cancel.value="Cancel Joining";b.action.onclick=function(){e.request("/broadcastChannel/application/",{channelID:a.info.channelID})};b.cancel.onclick=function(){e.request("/broadcastChannel/application/stop/",{channelID:a.info.channelID})};DOM.classify(b.action,"notice",!j);DOM.input.enable(b.action,true);DOM.input.enable(b.cancel,j)}DOM.input.enable(b.matchType.parentNode,b.rule.parentNode,b.playersNeeded.parentNode,a.userIsMember);b.groups.applicants.update();b.updateTitle()};b.updateConfig=
function(){DOM.fill(b.matchType);e.config.matchTypes&&bt.map(e.config.matchTypes,function(g,l){b.matchType.appendChild(DOM.select.option(g.label,l))});DOM.fill(b.rule);e.config.rules&&bt.map(e.config.rules,function(g,l){b.rule.appendChild(DOM.select.option(g.label,l))});b.updateSettings()};b.updateSettings=function(g){g&&bt.map(["matchTypeID","ruleID","playersNeeded"],function(n){if(g.hasOwnProperty(n))b.info[n]=g[n]});DOM.fill(b.playersNeeded);for(var l=0;l<e.config.matchTypes[b.info.matchTypeID].playerCount;++l)b.playersNeeded.appendChild(DOM.select.option(""+
l+" more needed",l));DOM.select.choose(b.matchType.parentNode,b.info.matchTypeID);DOM.select.choose(b.rule.parentNode,b.info.ruleID);DOM.select.choose(b.playersNeeded.parentNode,b.info.playersNeeded);e.config.matchTypes[b.info.matchTypeID].hasTeams||bt.map(a.groups.members.itemByUserID,function(n){n.setTeamID()});a.groups.members.update();b.update()};b.updateTitle=function(){var g=[];bt.map(a.memberByUserID,function(n){g.push(n.info.userName)});g.sort();var l=[e.config.matchTypes[b.info.matchTypeID].label,
g.join(", "),e.config.rules[b.info.ruleID].label];b.info.playersNeeded&&l.push(""+b.info.playersNeeded+" more needed");a.title=l.join(" / ")||"(game channel)";a.parent&&Channel.updateSubchannels(a.parent);DOM.fill(a.sidebarItem.title,a.title);h&&f.title&&DOM.scroll.preserve(a.scrollBox,function(){DOM.fill(f.title,a.title)})};b.event=bt.dispatch(null,null,null,1);b.event.broadcast=bt.dispatch(function(g){if(!b.broadcasting){c(true);g.time&&a.postNotification("Broadcasting was started by "+a.memberByUserID[g.broadcasterUserID].info.userName,
new Date(g.time));h=DOM.clone("announcement",f);f.details.onclick=function(){a.sidebarItem.select(true)};f.hide.onclick=function(){DOM.remove(h)};DOM.fill(f.title,a.title);DOM.scroll.preserve(a.parent.scrollBox,function(){a.parent.announcements.appendChild(h)});i()}},function(g,l){if(!b.broadcasting)throw Error("Broadcast channel event sent to non-broadcasting channel");return g(l)});b.event.broadcast.stop=bt.dispatch(function(g){c(false);DOM.remove(h);f={};if(!a.removeIfNecessary()){b.applicantByUserID=
{};j=false;b.groups.applicants.moveAllToGroup(a.groups.nonMembers);g.stoppedUserID?a.postNotification("Broadcasting was stopped by "+a.memberByUserID[g.stoppedUserID].info.userName,new Date(g.time)):a.postNotification("Broadcasting was stopped automatically",new Date(g.time));i()}});b.event.broadcast.application=bt.dispatch(function(g){var l=g.applicantUserID,n;if(!b.applicantByUserID.hasOwnProperty(l)){if(!e.personByUserID.hasOwnProperty(l))throw Error("Invalid applicant ID");n=e.personByUserID[l];
b.applicantByUserID[l]=n;b.groups.applicants.addItem(a.groups.nonMembers.removeItem(l)||a.groups.formerMembers.removeItem(l),true);if(g.time){a.userIsMember&&a.alert("challenge");a.postNotification(n.info.userName+" wants to join",new Date(g.time))}if(l===e.info.userID){j=true;b.update()}}});b.event.broadcast.application.stop=bt.dispatch(function(g){var l=g.applicantUserID,n;if(!b.applicantByUserID.hasOwnProperty(l))throw Error("Specified person is not an applicant");a.groups.nonMembers.addItem(b.groups.applicants.removeItem(l),
true);if(g.time){n=b.applicantByUserID[l].info.userName;g.denierUserID?a.postNotification(n+" was denied by "+a.memberByUserID[g.denierUserID].info.userName,new Date(g.time)):a.postNotification(n+" stopped trying to join",new Date(g.time))}b.removeApplicant(l)});DOM.classify(a.element,"game");a.groups.members.setShowsBrawlInfo(true);a.groups.formerMembers.setShowsBrawlInfo(true);b.element=DOM.clone("game",b);b.matchType.parentNode.onchange=function(){b.info.matchTypeID=this.options[this.selectedIndex].value;
b.updateSettings();b.request("/settings/",{channelID:a.info.channelID,matchTypeID:b.info.matchTypeID})};b.rule.parentNode.onchange=function(){b.info.ruleID=this.options[this.selectedIndex].value;b.updateSettings();b.request("/settings/",{channelID:a.info.channelID,ruleID:b.info.ruleID})};b.playersNeeded.parentNode.onchange=function(){b.info.playersNeeded=this.options[this.selectedIndex].value;b.updateSettings();b.request("/settings/",{channelID:a.info.channelID,playersNeeded:b.info.playersNeeded})};
b.updateConfig();i()};(function(){var d=DOM.id("resizer"),e=DOM.id("sidebar"),a=DOM.id("main"),b=function(c){if(undefined!==c){c=Math.min(c,document.body.offsetWidth-323);c=Math.max(c,100);e.style.width=c+"px";d.style.left=c-3+"px";a.style.left=c+1+"px"}};b(cookie.get("SidebarWidth"));d.onmousedown=function(){var c;document.onmousemove=function(i){if(!i)i=window.event;c=i.clientX;b(c);return false};document.onmouseup=function(){document.onmousemove=null;document.onmouseup=null;undefined!==c&&cookie.set("SidebarWidth",
c,365);return false};return false}})();document.onkeydown=document.onkeypress=function(d){if(!d)d=window.event;if(8!==parseInt(d.keyCode||d.which,10))return true;var e=d.target||d.srcElement;if(e&&e.type&&/password|text|file/i.test(e.type))return true;d.preventDefault&&d.preventDefault();return false};document.body.onmousemove=document.body.onkeydown=function(){bt.map(Session.byUserID,function(d){d.user.resetIdleTimeout()})};
window.onload=function(){setTimeout(function(){window.onload=null;bt.map(Session.all,function(d){d.watch&&d.watch()})},1E3)};DOM.classify(DOM.id("body"),"invisible",false);new Session;

