(function(c){c.fn.extend({ensureVisible:function(a){return this.each(function(){if(this.scrollTop>a.offsetTop)this.scrollTop=a.offsetTop;else if(this.scrollTop<a.offsetTop+a.offsetHeight-this.clientHeight)this.scrollTop=a.offsetTop+a.offsetHeight-this.clientHeight;if(this.scrollLeft>a.offsetLeft)this.scrollLeft=a.offsetLeft;else if(this.scrollLeft<a.offsetLeft+a.offsetWidth-this.clientWidth)this.scrollLeft=a.offsetLeft+a.offsetWidth-this.clientWidth})}})})(jQuery);
(function(c){c.widget("pp.ppgrid",{_init:function(){var a=this,d,b="",e=this.options.colModel;for(d=0;d<e.length;++d)b+='<th class="pp-grid-hcell pp-grid-hcell-'+e[d].name+'">'+e[d].label+"</th>";this.element.append('<div class="pp-grid-outer"><div class="pp-grid-container"><table cellpadding="0" cellspacing="0"><thead><tr class="ui-state-default">'+b+'</tr></thead><tbody></tbody></table></div><div class="pp-grid-hcontainer"><table cellpadding="0" cellspacing="0"><thead><tr class="ui-state-default">'+
b+'</tr></thead></table></div><div class="pp-grid-loading ui-state-highlight ui-corner-all">Loading...</div></div>');this.id="pp-grid-id-"+ ++c.pp.ppgrid._idGen;this.outer=this.element.children(".pp-grid-outer");this.container=this.outer.children(".pp-grid-container");this.table=this.container.children("table");this.thead=this.table.children("thead");this.tbody=this.table.children("tbody");this.hcontainer=this.outer.children(".pp-grid-hcontainer");this.htable=this.hcontainer.children("table");this.hthead=
this.htable.children("thead");this.loading=this.outer.children(".pp-grid-loading");this.idIndex={};this._onClick=function(f){a.tbody.children(".pp-grid-selected").removeClass("pp-grid-selected ui-state-highlight");c(this).addClass("pp-grid-selected");a.options.click&&a.options.click(f.data)};this.container.bind("treetable-toggle",function(){a._contentUpdated()});this.container.bind("scroll",function(){a._onScroll()});this._contentUpdated();this.options.showLoading&&this.loading.fadeIn("normal")},
load:function(a,d){var b,e,f,g,h,i=this.options.colModel;if(!d){this.idIndex={};this.tbody.children().remove()}for(d=0;d<a.length;++d){f=a[d];e="";for(b=0;b<i.length;++b){g=i[b].name;h=f[g];if(h==undefined||h==null)h="";e=e+'<td class="pp-grid-cell pp-grid-cell-'+g+'">'+h+"</td>"}e='<tr class="ui-widget-content pp-grid-row">'+e+"</tr>";b=c(e).appendTo(this.tbody);b.hover(this._onHoverIn,this._onHoverOut);typeof f._rowId!="undefined"&&b.attr("id",this.id+"-row-"+f._rowId);typeof f._rowParent!="undefined"&&
b.addClass("child-of-"+this.id+"-row-"+f._rowParent);f._rowExpanded&&b.addClass("expanded");f._rowNoClick?b.addClass("pp-grid-row-branch"):b.bind("click",f,this._onClick);if(this.options.colId)this.idIndex[f[this.options.colId]]=b}this.options.treeTable&&this.table.treeTable({initialState:"collapsed"});this._contentUpdated();this.loading.fadeOut("normal")},updateRow:function(a,d){var b,e;if(a in this.idIndex){a=this.idIndex[a];for(b in d)if(d.hasOwnProperty(b)){e=d[b];if(e==undefined||e==null)e="";
a.find(".pp-grid-cell-"+b).html(e)}this._contentUpdated()}},clear:function(){this.load([],false)},resize:function(){this._syncHeaders();this._onScroll()},_contentUpdated:function(){this._syncHeaders();this._onScroll()},_syncHeaders:function(){var a=this.thead.children("tr").children("th"),d=this.hthead.children("tr").children("th");this.htable.width("0px");d.each(function(b,e){c(e).width(a.eq(b).width()-1+"px")});this.htable.width(this.table.width()-0+"px");this.hcontainer.width(this.container[0].clientWidth+
"px")},_onHoverIn:function(){c(this).addClass("ui-state-hover")},_onHoverOut:function(){c(this).removeClass("ui-state-hover")},_onScroll:function(){this.htable.css({left:0-this.container.scrollLeft()+"px"})}});c.extend(c.pp.ppgrid,{version:"0.1",defaults:{colModel:[],colId:null,click:null,showLoading:true,treeTable:false},_idGen:0})})(jQuery);
var SIMPUB_BASE="/chessbomb",cbShowAds=true,cbLayoutDefaults={closable:false,spacing_open:5,spacing_closed:5},connectedBefore=false,isClosing=false,nickname=userNickname,communication=null,tabsPanel=null;function nodeFromId(c){return c.replace("__","/")}function idFromNode(c){return c.replace("/","__")}function parseJid(c){return{node:Strophe.getNodeFromJid(c)||"",domain:Strophe.getDomainFromJid(c)||"",resource:Strophe.getResourceFromJid(c)||""}}
function htmlEnc(c){c=c.replace(/&/g,"&amp;");c=c.replace(/</g,"&lt;");c=c.replace(/>/g,"&gt;");c=c.replace(/\"/g,"&quot;");return c=c.replace(/\n/g,"<br />")}function constructDiv(c,a,d){return"<div "+(a?' class="'+a+'"':"")+(d?' id="'+d+'"':"")+">"+(c||"")+"</div>"}function constructWidget(c,a,d,b){return constructDiv(a,"ui-layout-"+c+" ui-widget-content"+(d?" "+d:""),b)}function constructTabsWidget(c,a,d){return constructWidget(c,'<ul></ul><div class="ui-layout-content"></div>',a,d)}
function constructWidgetHeader(c,a,d){return constructDiv(c,"ui-widget-header cb-header"+(a?" "+a:""),d)}function constructWidgetFooter(c,a,d){return constructDiv(c,"ui-widget-header cb-footer"+(a?" "+a:""),d)}function constructWidgetContent(c,a,d){return constructDiv(c,"ui-layout-content"+(a?" "+a:""),d)}function constructAccordion(c,a,d){return constructDiv(c,"cb-accordion"+(a?" "+a:""),d)}
function constructAccordionHeader(c,a){return'<h3 class="cb-accordion-header'+(a?" "+a:"")+'"><a href="#">'+(c||"")+"</a></h3>"}function constructAccordionPanel(c,a,d){return constructDiv(c,"cb-accordion-panel"+(a?" "+a:""),d)}function constructAdContainer(c){if(!cbShowAds)return"";return constructDiv('<div class="cb-ad-holder'+(c?" "+c:"")+'"></div>',"cb-ad-container")}
function constructAdContainerHalf(c){if(!cbShowAds)return"";return constructDiv('<div class="cb-ad-holder-half'+(c?" "+c:"")+'"></div>',"cb-ad-container")}function constructHelpTrigger(){return constructWidgetFooter('Help<span class="ui-icon ui-icon-help cb-inline-block" style="vertical-align: top;" />',"cb-help-trigger ui-state-highlight")}
function bindHelpTrigger(c,a){var d=function(){$(document).bind("click",b);c.unbind("click",d);a.fadeIn("normal");return false},b=function(){c.bind("click",d);$(document).unbind("click",b);a.fadeOut("normal");return false};c.bind("click",d)}function cbShortenPlayerName(c){var a,d=c;d=d.replace(/^[A-Z]{1,3}[ .,]+/,"");if(a=d.match(/^([a-z'-]+) +([a-z' -]+)/i))return a[2].replace(/^ +/,"").replace(/ +$/,"");if(a=d.match(/^([a-z'-]+)/i))return a[1];return c}
function cbAdFollowHolder(c,a){c=c&&c.length>0?c.offset():{left:-5000,top:0};a.css({left:c.left+"px",top:c.top+"px"})}function resizePaneChildren(c,a,d,b,e){a.children(".ui-layout-content").children(".cb-pane-layout").each(function(){var f=$(this).data("cb-pane-layout");f&&f.resizeAll()})}function cbTrackPageView(c){try{pageTracker&&pageTracker._trackPageview(c);pageTrackerJV&&pageTrackerJV._trackPageview(c)}catch(a){}}
function centerElement(c){var a=c.outerWidth(),d=c.outerHeight();c.css({left:"50%",top:"50%","margin-left":-Math.floor(a/2)+"px","margin-top":-Math.floor(d/2)+"px"})}function tabsInit(c){c.tabs({});c.children(".ui-tabs-nav").sortable({containment:"window"});c.removeClass("ui-corner-all");return c}
function tabsAdd(c,a,d,b,e){c.tabs("add",a,d);$(a).appendTo(c.children(".ui-layout-content"));a=c.children("ul").find("a[href='"+a+"']").parents("li:first");if(b){a.append('<span class="ui-tabs-close ui-icon ui-icon-close"></span>');d=a.children(".ui-tabs-close:last");d.click(function(){try{b()}catch(f){}try{c.tabs("remove",c.tabs("option","selected"))}catch(g){}mainLayout.resizeContent("center")})}e&&a.addClass(e);mainLayout.resizeContent("center");return c}
function filterTestData(c){var a,d=[];if(typeof cbDNKROZStaff!="undefined"&&cbDNKROZStaff)return c;for(a=0;a<c.length;++a)c[a].id.substr(0,7)!="cbtest-"&&d.push(c[a]);return d}function getResultBoth(c){if(c=="1/2-1/2")return"&#189;-&#189;";return c}function getResultWhite(c){if(c=="*")return"*";c=getResultBoth(c);return c.substr(0,c.indexOf("-"))}function getResultBlack(c){if(c=="*")return"*";c=getResultBoth(c);return c.substr(c.indexOf("-")+1)}
function getDateStr(c){return(new Date(c*1E3)).toDateString()}function cbMoveToCBN(c){return c.split("_")[0]}function cbMoveToLAN(c){c=cbMoveToCBN(c);if(c.charAt(0)=="P")return c.substr(1);if(c=="Ke1-g1"||c=="Ke8-g8")return"O-O";if(c=="Ke1-c1"||c=="Ke8-c8")return"O-O-O";return c}
function cbMoveToSAN(c){c=c.split("_");var a=c[0];if(c.length>1)return c[1];if(a=="Ke1-g1"||a=="Ke8-g8")return"O-O";if(a=="Ke1-c1"||a=="Ke8-c8")return"O-O-O";if(a.charAt(0)=="P"){if(a.charAt(3)=="x")return a.charAt(1)+"x"+a.substr(4);return a.substr(4)}if(a.charAt(3)=="x")return a.charAt(0)+"x"+a.substr(4);return a.charAt(0)+a.substr(4)}
(function(c){c.widget("cb.chessboard",{_init:function(){this.id=++c.cb.chessboard._idGen;this.pieces={};this.highlights={};this._render();this.options.fieldSize||this.autoSize()},add:function(a,d,b){var e="cb-board-pid-"+this.id+"-"+b;this.remove(b);this.pieces[b]={color:a,piece:d};c("#"+e).addClass("cb-board-piece-"+a+d)},remove:function(a){var d,b=this.pieces[a];if(b){d="cb-board-pid-"+this.id+"-"+a;c("#"+d).removeClass("cb-board-piece-"+b.color+b.piece);delete this.pieces[a]}},move:function(a){var d=
a.substr(0,2);a=a.substr(3,2);var b;if(d!=a){b=this.pieces[d];this.add(b.color,b.piece,a);this.remove(d)}},highlight:function(a,d){var b="cb-board-fid-"+this.id+"-"+a;if(d){c("#"+b).addClass("cb-board-highlight");this.highlights[a]=true}else{c("#"+b).removeClass("cb-board-highlight");delete this.highlights[a]}},clear:function(){var a=this;c.each(this.pieces,function(d){a.remove(d)})},clearHighlight:function(){var a=this;c.each(this.highlights,function(d){a.highlight(d,false)})},setup:function(a){var d=
this;this.clear();c.each(a,function(b,e){d.add(e.color,e.code,b)})},initial:function(){var a=["R","N","B","Q","K","B","N","R"],d=["a","b","c","d","e","f","g","h"],b;this.clear();for(b=0;b<8;++b){this.add("W",a[b],d[b]+"1");this.add("B",a[b],d[b]+"8");this.add("W","P",d[b]+"2");this.add("B","P",d[b]+"7")}},setFieldSize:function(a){var d=this.element.children(".cb-board");d.removeClass("cb-board-size-"+this.options.fieldSize);this.options.fieldSize=a;d.addClass("cb-board-size-"+this.options.fieldSize)},
autoSize:function(a,d){a||(a=this.element.innerWidth());d||(d=this.element.innerHeight());var b=c.cb.chessboard.fieldSizes;a=Math.floor(((a<d?a:d)-44)/8);d=b[0];var e;for(e=1;e<b.length;++e){if(b[e]>a)break;d=b[e]}this.setFieldSize(d)},flip:function(){var a=this;this.options.flipped=!this.options.flipped;this._render();c.each(this.pieces,function(d,b){a.add(b.color,b.piece,d)});c.each(this.highlights,function(d,b){a.highlight(d,b)})},_render:function(){var a,d,b,e,f,g,h="",i;for(a=0;a<=9;++a){b=this.options.flipped?
a:9-a;i='<div class="cb-board-row">';for(d=0;d<=9;++d){e=String.fromCharCode("a".charCodeAt(0)+(this.options.flipped?8-d:d-1));if(d>=1&&d<=8&&a>=1&&a<=8){f=e+b;e="cb-board-fid-"+this.id+"-"+f;f="cb-board-pid-"+this.id+"-"+f;g=(a+d)%2==0?"w":"b";i+='<span class="cb-board-field cb-board-xsize cb-board-ysize cb-board-'+g+'field" id="'+e+'"><span class="cb-board-highlight-frame"></span><div class="cb-board-piece cb-board-xsize cb-board-ysize" id="'+f+'"></div></span>'}else if(this.options.numbering){e=
d==0||d==9?a==0||a==9?" ":b:e;f=d==0||d==9?a==0||a==9?"":" cb-board-ysize":" cb-board-xsize";i+='<span class="cb-board-numbering'+f+'">'+e+"</span>"}}i+="</div>";h+=i}h='<div class="cb-board cb-board-size-'+this.options.fieldSize+'">'+h+"</div>";this.element.html(h)}});c.extend(c.cb.chessboard,{version:"0.1",defaults:{fieldSize:40,flipped:false,numbering:true,onMove:null},fieldSizes:[20,24,32,40,48,56,64,72,80],_idGen:0,F_WHITE:"W",F_BLACK:"B",P_KING:"K",P_QUEEN:"Q",P_ROOK:"R",P_BISHOP:"B",P_KNIGHT:"N",
P_PAWN:"P"})})(jQuery);function go(c,a,d){getTabGame(d).cbViewer.go(c,a)}function refresh(c){getTabGame(c).cbViewer.removeAnalysisMoves()}
function util(){this.cloneArray=function(c){for(var a=[],d=-1;d<c.length;++d)a[d]=c[d];return a};this.isEven=function(c){return!(c%2)};this.isOdd=function(c){return!this.isEven(c)};this.h2d=function(c){return parseInt(c,16)};this.d2h=function(c){return c.toString(16)};this.getRGB=function(c){if(result=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(result[1],16),parseInt(result[2],16),parseInt(result[3],16)]};this.interpolateColor=function(c){var a={r:48,g:96,b:192},d=
{r:224,g:32,b:32},b=a.r+Math.round((d.r-a.r)*c),e=a.g+Math.round((d.g-a.g)*c);c=a.b+Math.round((d.b-a.b)*c);return"#"+this.d2h(b)+this.d2h(e)+this.d2h(c)}}util=new util;function Piece(c,a,d){this.code=c;this.color=a;this.field=d}
function Board(c){this.init=function(a){this.pieces={};this.startPosition();this.view=a;this.view.chessboard("initial")};this.setPiece=function(a){this.pieces[a.field]=a};this.delPiece=function(a){delete this.pieces[a]};this.getPiece=function(a){return this.pieces[a]};this.makeMove=function(a){var d=a.substr(1,2),b=a.substr(4,2),e=this.getPiece(d),f=this.getPiece(b);if(e){e.field=b;this.delPiece(d);this.setPiece(e);if(e.code=="K")if(d=="e1"&&b=="g1")this.makeMove(" h1-f1");else if(d=="e1"&&b=="c1")this.makeMove(" a1-d1");
else if(d=="e8"&&b=="g8")this.makeMove(" h8-f8");else d=="e8"&&b=="c8"&&this.makeMove(" a8-d8");else if(a.substr(6,1)=="="){a=a.substr(7,1);e.code=a}else if(a.substr(0,1)=="P"&&a.substr(3,1)=="x")f||this.delPiece(b.substr(0,1)+d.substr(1,1))}};this.startPosition=function(){this.pieces={};for(var a=["R","N","B","Q","K","B","N","R"],d=["a","b","c","d","e","f","g","h"],b=0;b<8;++b){this.setPiece(new Piece(a[b],"W",d[b]+1));this.setPiece(new Piece(a[b],"B",d[b]+8));this.setPiece(new Piece("P","W",d[b]+
2));this.setPiece(new Piece("P","B",d[b]+7))}};this.highlight=function(a,d){if(a){var b=a.substr(1,2);a=a.substr(4,2);this.view.chessboard("highlight",b,d);this.view.chessboard("highlight",a,d)}};this.setPosition=function(a,d){this.startPosition();for(var b=0;b<d;++b)this.makeMove(a[b])};this.draw=function(a,d){if(typeof d=="undefined")d=a.length;this.startPosition();this.setPosition(a,d);this.view.chessboard("clearHighlight");this.view.chessboard("setup",this.pieces);this.highlight(a[d-1],"#2615a7")};
this.init(c)}
function History(c){var a=c.cbTabGame.cbId;c.cbTabGame.cbViewerToolbar.html('<button type="button" id="navFirstMove'+a+'" class="ui-corner-all ui-state-default cb-icon-button"><span class="ui-icon ui-icon-seek-first"></span></button><button type="button" id="navPrevMove'+a+'" class="ui-corner-all ui-state-default cb-icon-button"><span class="ui-icon ui-icon-triangle-1-w"></span></button><button type="button" id="navNextMove'+a+'" class="ui-corner-all ui-state-default cb-icon-button"><span class="ui-icon ui-icon-triangle-1-e"></span></button><button type="button" id="navLastMove'+a+
'" class="ui-corner-all ui-state-default cb-icon-button"><span class="ui-icon ui-icon-seek-end"></span></button>');$("#navFirstMove"+a).click(function(){c.first()});$("#navPrevMove"+a).click(function(){c.backward()});$("#navNextMove"+a).click(function(){c.forward()});$("#navLastMove"+a).click(function(){c.last()});c.cbTabGame.click(function(d){var b="#"+c.cbTabGame.cbId+"v"+c.currVariant+"m"+c.currMove;$(d.target||d.srcElement).is("input")||$(b).focus()});c.cbTabGame.keydown(function(d){if(!$(d.target||
d.srcElement).is("input")){if(d.keyCode==37)c.backward();else d.keyCode==39&&c.forward();return false}return true});this.update=function(){c.cbTabGame.cbViewerPanel.html(c.html)};this.clearHighlight=function(){c.highlightGameMoves();for(var d=0;d<c.moves.length;++d)for(var b=0;b<c.moves[d].length;++b){var e="#"+c.cbTabGame.cbId+"v"+d+"m"+b;$(e).removeClass("cb-viewer-move-current");d==0&&c.highlight[b]!=null&&$(e).css("color",c.highlight[b]);if(d==c.analysisIndex&&c.analysisCss[b]){var f=c.analysisCss[b].split(":");
$(e).css(f[0],f[1])}}};this.highlight=function(){this.clearHighlight();if(c.currMove==-1)c.cbTabGame.cbViewerPanel.scrollLeft(0).scrollTop(0);else{var d="#"+c.cbTabGame.cbId+"v"+c.currVariant+"m"+c.currMove;$(d).addClass("cb-viewer-move-current");c.cbTabGame.cbViewerPanel.ensureVisible($(d)[0]);if(c.currVariant==c.analysisIndex){d="#"+c.cbTabGame.cbId+"v0m"+c.analysisParent;$(d).addClass("cb-viewer-move-current")}}}}
function Drawer(c){this.drawMove=function(a,d,b,e){a=cbMoveToSAN(a);return"<a "+('class="'+e+'" ')+(' id="'+c.cbTabGame.cbId+"v"+d+"m"+b+'" ')+'href="javascript:go('+(d+", "+b+", '"+c.cbTabGame.cbId+"'")+')">'+a+"</a>"};this.number=function(a,d,b){b='<span class="'+b+'">';b+=Math.floor(d/2)+1+Math.round(a/2)+".";if(util.isOdd(d+a))b+="..";b+="&nbsp;</span>";return b}}
function GameViewer(c){this.r=[];this.moves=[];this.parents=[[0,0]];this.currVariant=0;this.currMove=-1;this.highlight=[];this.isLastMove=true;this.html="";this.analysisMoves=[];this.analysisIndex=null;this.analysisParentNext=this.analysisParent=0;this.analysisCss=[];this.cbTabGame=c;this.history=new History(this);this.drawer=new Drawer(this);this.board=new Board(c.cbBoard);this.addNewLine=this.addNumber=false;this.process=function(a,d){this.html="";this.moves=[];this.parents=[[0,0]];this.html+='<div id="'+
this.cbTabGame.cbId+'cb-viewer-data" class="cb-viewer-data"><span id="'+this.cbTabGame.cbId+'v0m-1"></span>';this._process(a,d);this.html+=" "+getResultBoth(this.cbTabGame.cbGameData.result||"");this.html+='<p><br /><u>Colors:</u><b><br />&nbsp;&nbsp;<span style="color:#3060c0;">Strong move</span><br />&nbsp;&nbsp;<span style="color:#e02020;">Weak move</span><br />&nbsp;&nbsp;Unanalyzed move</b></p>';this.html+="</div>"};this._process=function(a,d){var b=this.moves.length,e=0;this.moves.push([]);
for(var f=d,g=0;g<a.length;g++){var h=a[g];if($.isArray(h)){var i=h.shift();this.parents.push([b,i-f-1]);this.html+=" ( ";this.addNumber=true;this._process(h,i);h.unshift(i);this.html+=" ) ";this.addNewLine=this.addNumber=true}else if(h.charAt(0)==" "){this.html+=h+" ";this.addNewLine=this.addNumber=true}else{d++;if(this.addNewLine&&b==0)this.html+="<br />";this.addNewLine=false;if(this.addNumber||d%2){this.html+=" "+Math.round(d/2);this.html+=d%2?".&nbsp;":"...&nbsp;";this.addNumber=false}else this.html+=
"&nbsp;";i=cbMoveToCBN(h);cbMoveToSAN(h);this.moves[b].push(i);this.html+=this.drawer.drawMove(h,b,e,"cb-viewer-move-normal");e++;this.processAnalysis(b,d)}}};this.processAnalysis=function(a,d){if(this.isLoadedAnalysis())if(a==0)if(d-1==this.analysisParent){this.html+=" [ ";this.analysisIndex=this.moves.length;this.moves.push(this.analysisMoves);this.parents.push([0,this.analysisParent]);a=d+1;for(d=0;d<this.analysisMoves.length;d++){if(d==0||a%2){this.html+=" "+Math.round(a/2);this.html+=a%2?". ":
". ... "}a++;this.html+=this.drawer.drawMove(this.analysisMoves[d],this.analysisIndex,d,"cb-viewer-move-variant")+" "}this.html+=" ]<sup><a href=\"javascript:refresh('"+this.cbTabGame.cbId+"')\" >X</a></sup>  ";this.addNumber=true}};this.loadGameMoves=function(){var a=util.cloneArray(this.cbTabGame.cbMoves),d=util.cloneArray(this.cbTabGame.cbComments),b=[];if(d[-1])b=d[-1];for(var e=0;e<a.length;e++){b.push(a[e]);if(d[e])b=b.concat(d[e])}this.r=b;this.process(b,0);this.history.update();this.isLastMove?
this.last():this.go(this.currVariant,this.currMove)};this.loadAnalysisMoves=function(a){a=util.cloneArray(a);this.analysisParent=this.analysisParentNext;this.analysisMoves=a;this.process(this.r,0);this.highlightAnalysisMoves();this.history.update();this.currVariant=this.analysisIndex;this.currMove=0;this.go(this.currVariant,this.currMove)};this.removeAnalysisMoves=function(){if(this.analysisIndex==this.currVariant){this.currVariant=0;this.currMove=this.analysisParent}this.analysisMoves=[];this.analysisIndex=
null;this.process(this.r,0);this.history.update();this.go(this.currVariant,this.currMove)};this.isLoadedAnalysis=function(){return Boolean(this.analysisMoves.length)};this.updateAnalysisPanel=function(){var a=0;if(this.currVariant==0||this.currVariant==this.analysisIndex)a=this.analysisParentNext+1;for(var d in this.cbTabGame.cbAnalysisPanels)this.cbTabGame.cbAnalysisPanels[d].cbSetPosition(a)};this.highlightAnalysisMoves=function(){if(this.isLoadedAnalysis()){this.analysisCss=[];for(var a=0;a<this.moves[0].length;++a)this.analysisCss[a]=
"color:#444";a=0;for(var d=this.parents[this.analysisIndex][1]+1;a+d<this.moves[0].length&&a<this.moves[this.analysisIndex].length;){if(this.moves[0][a+d]!=this.moves[this.analysisIndex][a])break;this.analysisCss[a]="color:#005e33";a++}}};this.highlightGameMoves=function(){for(var a=0;a<this.moves[0].length;++a)this.highlight[a]=null;for(var d in this.cbTabGame.cbAnalysisPanels)for(a=1;a<this.moves[0].length;++a){var b=this.cbTabGame.cbAnalysisPanels[d].cbGameData[a-1],e=this.cbTabGame.cbAnalysisPanels[d].cbGameData[a];
if(!(b==undefined||e==undefined))if(!(b.l.length<=0||e.l.length<=0)){var f=parseFloat(b.l[0].eval);e=parseFloat(e.l[0].eval);for(var g=this.moves[0][a],h=0;h<b.l.length;++h)if(b.l[h].moves[0]==g){var i=parseFloat(b.l[h].eval);if(util.isEven(a)){if(i>e)e=i}else if(i<e)e=i}b=f-e;if(util.isOdd(a))b=e-f;if(b<0)b=0;if(b>1)b=1;this.highlight[a]=util.interpolateColor(b)}}};this.go=function(a,d){this.currVariant=a;this.currMove=d;if(a==0)this.analysisParentNext=d;this.isLastMove=this.moves[a].length-1==d?
true:false;var b=[];do{for(d=d;d>-1;--d)b.push(this.moves[a][d]);d=this.parents[a][1];a=this.parents[a][0]}while(!(a==0&&d==0));b[b.length-1]!=this.moves[0][0]&&b.push(this.moves[0][0]);this.history.highlight();this.board.draw(b.reverse());this.updateAnalysisPanel();this.cbTabGame.cbSetCurrentMove(this.currMove+1)};this.forward=function(){if(this.moves[this.currVariant].length-1!=this.currMove){this.currMove++;this.go(this.currVariant,this.currMove)}};this.backward=function(){if(this.currMove!=-1){if(this.currMove==
0){this.currMove=this.parents[this.currVariant][1];this.currVariant=this.parents[this.currVariant][0]}else this.currMove--;this.go(this.currVariant,this.currMove)}};this.first=function(){this.currVariant=0;this.currMove=-1;this.go(this.currVariant,this.currMove)};this.last=function(){this.currMove=this.moves[this.currVariant].length-1;this.go(this.currVariant,this.currMove)}}var _chatPanel={};
function createChatPanel(c,a){var d=$(c),b,e;d.MAX_HISTORY=1024;d.CHAT_GUEST=0;d.CHAT_NORMAL=1;d.CHAT_PREMIUM=2;d.CHAT_VIP=3;d.CHAT_COMMENTATOR=4;d.CHAT_POWER=5;d.CHAT_ADMIN=6;d.CHAT_DISABLED=-1;d.append(constructWidget("center",constructWidgetContent(null,"chat-content")+(userAuthenticated?constructDiv('\t\t\t\t\t<form>\t\t\t\t\t\t<button type="submit" class="cb-button ui-state-default ui-priority-primary ui-state-disabled ui-corner-all" disabled="disabled">Send</button>\t\t\t\t\t\t<div><input type="text" maxlength="255" /></div>\t\t\t\t\t</form>\t\t\t\t',
"cb-footer chat-input"):constructDiv('<b>Only <a href="/login/">registered members</a> can post</b>',"cb-footer"))));d.addClass("cb-pane-layout");d.cbLayout=d.layout({defaults:$.extend({},cbLayoutDefaults,{})});d.data("cb-pane-layout",d.cbLayout);d.cbNode=a;c=d.find("form");b=c.find("input");e=c.find("button");d.cbHistory=[];b.bind("change keyup",function(){(b.val()||"")==""?e.attr("disabled","disabled").addClass("ui-state-disabled"):e.removeAttr("disabled").removeClass("ui-state-disabled")});c.bind("submit",
function(){var f=b.val()||"";f!=""&&$.ajax({type:"POST",url:"/ajax/chat_post/",data:{n:d.cbNode,m:f},error:function(g){g.responseText&&d.cbAppend('<p class="ui-state-error">'+g.responseText+"</p>")}});b.val("").blur().focus();e.attr("disabled","disabled").addClass("ui-state-disabled");return false});d.cbPost=function(f,g,h,i){var j="",k,l;for(k=0;k<d.cbHistory.length;++k){l=d.cbHistory[k];if(h==l.uid)return}for(;d.cbHistory.length>=d.MAX_HISTORY;)d.cbHistory.shift();d.cbHistory.push({uid:h});if(f==
nickname)j=" ui-state-highlight";i=i||d.CHAT_GUEST;d.cbAppend("<p"+(' class="chat-cls-'+i+'"')+'><span class="chat-author'+j+'">'+htmlEnc(f)+'</span><span class="chat-message">: '+htmlEnc(g)+"</span></p>")};d.cbAppend=function(f){var g=d.find(".chat-content"),h=g.scrollTop()+g.innerHeight()>=g[0].scrollHeight;g.append(f);if(h)g[0].scrollTop=g[0].scrollHeight};return d}function getChatPanel(c){return _chatPanel[c]}
function openChatPanel(c,a){var d=_chatPanel[a];if(!d){d=createChatPanel(c[0],a);_chatPanel[a]=d}return d}function closeChatPanel(c){c=c.cbNode;_chatPanel[c]&&delete _chatPanel[c]}var _analysisPanel={};
function createAnalysisPanel(c,a,d){var b=$(c);b.cbNode=a;b.cbTabGame=d;b.cbGrid=b.ppgrid({colModel:[{name:"eval",label:"Evaluation"},{name:"display",label:"Line"}],click:function(e){b.cbTabGame.cbViewer.loadAnalysisMoves(e.moves)}});b.cbStatus=$('<div class="cb-analysis-status"></div>').appendTo(b.cbGrid.children(".pp-grid-outer").children(".pp-grid-container"));b.cbGameInfo={engineName:"Rybka 2.2n2"};b.cbGameData=[];b.cbGamePosition=0;b.cbHandleItem=function(e,f){var g;if(e!=0){for(g=0;g<f.l.length;++g){f.l[g].moves=
f.l[g].m.split("|");f.l[g].eval=f.l[g].e/100}b.cbGameData[e-1]=f}};b.cbSetPosition=function(e){var f=[],g=e>0?b.cbGameData[e-1]:null,h,i,j,k;b.cbGamePosition=e;if(g)for(h=0;h<g.l.length;++h){i=g.l[h];j="";if(e%2==1)j+=""+(e+1)/2+". ...";for(k=0;k<i.moves.length;++k){if((k+e)%2==0)j+=" "+Math.floor((e+k+2)/2)+".";j+=" "+cbMoveToSAN(i.moves[k])}f.push({eval:i.eval,display:j,moves:i.moves})}b.cbGrid.ppgrid("load",f);j=b.cbGameInfo.engineName;if(g)j+=", "+g.t+" sec";if(g)j+=", depth "+(g.l[0]?g.l[0].d:
0);b.cbStatus.html(j)};b.cbResize=function(){b.cbGrid.ppgrid("resize")};return b}function getAnalysisPanel(c){return _analysisPanel[c]}function openAnalysisPanel(c,a,d){var b=_analysisPanel[a];if(!b){b=createAnalysisPanel(c[0],a,d);_analysisPanel[a]=b;simpub.send({cmd:"subscribe",node:a,retrieve:true})}return b}function closeAnalysisPanel(c){c=c.cbNode;if(_analysisPanel[c]){simpub.send({cmd:"unsubscribe",node:c});delete _analysisPanel[c]}}var _tabGame={};
function createTabGame(c,a,d,b){var e=$(c);c="http://chessbomb.com/o/"+b.id+"/"+d.id+"/";e.append(constructWidget("center",constructAdContainer("cb-ad-holder-board")+constructDiv('<table cellpadding="0" cellspacing="0"><tr><td style="width: 55%;"><span class="cb-player-panel-name">&nbsp;</span><br /><span class="cb-player-panel-time">&nbsp;</span></td><td><div class="cb-player-panel-color ui-corner-all">&nbsp;</div></td><td class="cb-player-panel-points">&nbsp;</td><td class="cb-player-panel-turn" style="width: 45%;"><span class="ui-icon ui-icon-arrowthick-1-w" style="visibility: hidden;"></span></td></tr></table>',
"ui-widget-header cb-player-panel")+constructWidgetContent('<div style="position:absolute;"></div>')+constructDiv('<table cellpadding="0" cellspacing="0"><tr><td style="width: 55%;"><span class="cb-player-panel-name">&nbsp;</span><br /><span class="cb-player-panel-time">&nbsp;</span></td><td><div class="cb-player-panel-color ui-corner-all">&nbsp;</div></td><td class="cb-player-panel-points">&nbsp;</td><td class="cb-player-panel-turn" style="width: 45%;"><span class="ui-icon ui-icon-arrowthick-1-w" style="visibility: hidden;"></span></td></tr></table>',
"ui-widget-header cb-player-panel"))+constructWidget("east",constructWidget("north",constructWidgetHeader("Game Info")+constructWidgetContent('<p><b>Direct Link</b>: <a href="'+c+'">'+c+'</a></p><p><b>Tournament</b>: <span class="cb-info-tournament"><a href="#">'+b.name+'</a></span></p><p><b>Round</b>: <span class="cb-info-round">'+d.round+'</span></p><p><b>White</b>: <span class="cb-info-white">'+d.whiteName+'</span></p><p><b>Black</b>: <span class="cb-info-black">'+d.blackName+'</span></p><p><b>Date</b>: <span class="cb-info-date">'+
getDateStr(d.startTime)+'</span></p><p><b>Result</b>: <span class="cb-result">'+getResultBoth(d.result)+"</span></p>","cb-info"))+constructWidget("center",constructWidgetHeader("Moves")+constructWidgetContent()+constructWidgetFooter("(toolbar)")))+constructWidget("west",constructWidget("south",constructWidgetHeader("Analysis")+constructWidgetContent()+constructHelpTrigger())+constructWidget("center",constructAdContainerHalf("cb-ad-holder-primary")+constructWidgetHeader("Chat")+constructWidgetContent())));
e.cbId=a;e.cbExtData=d;e.cbExtRoomData=b;e.cbSimPubBase=SIMPUB_BASE+"/rooms/"+b.id+"/games/"+d.id;e.cbMoves=[];e.cbComments=[];e.cbGameData={};e.cbGameTime={};e.cbCurrentMove=0;e.cbCenterPanel=e.children(".ui-layout-center");e.cbLeftPanel=e.children(".ui-layout-west");e.cbRightPanel=e.children(".ui-layout-east");e.cbPlayerPanelNorth=e.cbCenterPanel.children(".cb-player-panel:first");e.cbPlayerPanelSouth=e.cbCenterPanel.children(".cb-player-panel:last");e.cbPlayerPanelWhite=e.cbPlayerPanelSouth;e.cbPlayerPanelBlack=
e.cbPlayerPanelNorth;e.cbAdHolderBoard=e.find(".cb-ad-holder-board");e.cbAdHolderPrimary=e.find(".cb-ad-holder-primary");e.cbHelpTrigger=e.find(".cb-help-trigger");bindHelpTrigger(e.cbHelpTrigger,$("#cb-tip-game"));a=e.innerWidth()-940;if(a<0)a=0;e.cbBoardResize=function(){e.cbBoard.chessboard("autoSize",e.cbBoardContentPane.innerWidth(),e.cbBoardContentPane.innerHeight());centerElement(e.cbBoardContainer);cbAdFollowHolder(e.cbAdHolderBoard,$("#cb-ad-banner-board"))};e.cbLayout=e.layout({defaults:$.extend({},
cbLayoutDefaults,{}),center:{minWidth:468,onresize_end:e.cbBoardResize},east:{minSize:234,size:Math.floor(a*0.2+234),onresize_end:function(){e.cbRightLayout.resizeAll()}},west:{minSize:234,size:Math.floor(a*0.6+234),onresize_end:function(){e.cbLeftLayout.resizeAll()}}});e.cbBoardContentPane=e.children(".ui-layout-center").children(".ui-layout-content");e.cbBoardContainer=e.cbBoardContentPane.children("div");e.cbBoard=e.cbBoardContainer.chessboard({});e.cbBoardResize();e.cbInfoPanel=e.cbRightPanel.children(".ui-layout-north").children(".ui-layout-content");
e.cbInfoPanel.find(".cb-info-tournament a").click(function(){openTabRoom(e.cbExtRoomData.id,e.cbExtRoomData);return false});e.cbViewerPanel=e.cbRightPanel.children(".ui-layout-center").children(".ui-layout-content");e.cbViewerToolbar=e.cbRightPanel.children(".ui-layout-center").children(".cb-footer");e.cbViewer=new GameViewer(e);e.cbViewerToolbar.append('<button type="button" class="cb-button-flip ui-corner-all ui-state-default cb-icon-button" style="vertical-align: top; float: none;">Flip</button><button type="button" class="cb-button-highlight ui-corner-all ui-state-default cb-icon-button" style="vertical-align: top; float: none;"><span class="ui-icon ui-icon-lightbulb"></span></button>');
e.cbViewerToolbar.find(".cb-button-flip").click(function(){var f=e.cbPlayerPanelWhite;e.cbPlayerPanelWhite=e.cbPlayerPanelBlack;e.cbPlayerPanelBlack=f;e.cbHandleData(e.cbGameData);e.cbSetCurrentMove(e.cbCurrentMove);e.cbBoard.chessboard("flip")});e.cbViewerToolbar.find(".cb-button-highlight").click(function(){$("#layout-main").toggleClass("cb-board-highlight-on")});e.cbRightLayout=e.cbRightPanel.layout({defaults:$.extend({},cbLayoutDefaults,{closable:false}),north:{size:220}});e.cbLeftLayout=e.cbLeftPanel.layout({defaults:$.extend({},
cbLayoutDefaults,{closable:false}),south:{size:196,onresize_end:function(){e.cbAnalysisPanel.cbResize()}},center:{onresize_end:function(){e.cbChatPanel.cbLayout.resizeAll();cbAdFollowHolder(e.cbAdHolderPrimary,$("#cb-ad-hbanner-primary"))}}});e.cbChatPanel=openChatPanel(e.cbLeftPanel.children(".ui-layout-center").children(".ui-layout-content"),e.cbSimPubBase+"/chat");e.cbAnalysisPanel=e.cbLeftPanel.children(".ui-layout-south").children(".ui-layout-content");e.cbAnalysisPanels={};e.cbOpenAnalysis=
function(f,g){f=e.cbAnalysisPanels[g];if(!f){f=openAnalysisPanel(e.cbAnalysisPanel,g,e);e.cbAnalysisPanel=f;e.cbAnalysisPanels[g]=f;e.cbLeftLayout.resizeContent("south")}return f};e.cbCloseAnalysis=function(f,g){if(e.cbAnalysisPanels[g]){closeAnalysisPanel(e.cbAnalysisPanel);delete e.cbAnalysisPanels[g]}};e.cbTimeTimer=null;e.cbTimerStart=0;e.cbTimerFunc=function(){var f=(new Date).getTime()-e.cbTimerStart,g=e.cbGameTime.whiteTime,h=e.cbGameTime.blackTime;if(e.cbMoves.length%2==0){g-=f/1E3;e.cbPlayerPanelWhite.find(".cb-player-panel-time").text(e.cbConvertTime(g,
true))}else{h-=f/1E3;e.cbPlayerPanelBlack.find(".cb-player-panel-time").text(e.cbConvertTime(h,true))}};e.cbHandleMove=function(f,g){e.cbMoves[f-1]=g};e.cbHandleComment=function(f,g){e.cbComments[f-1]=g};e.cbHandleTime=function(f,g){e.cbGameTime=f;if(e.cbTimeTimer){clearInterval(e.cbTimeTimer);e.cbTimeTimer=null}e.cbPlayerPanelWhite.find(".cb-player-panel-time").text(e.cbConvertTime(f.whiteTime,true));e.cbPlayerPanelBlack.find(".cb-player-panel-time").text(e.cbConvertTime(f.blackTime,true));if(g==
"itemsPublished"&&(e.cbGameData.result=="*"||!e.cbGameData.result)){e.cbTimerStart=(new Date).getTime();e.cbTimeTimer=setInterval(e.cbTimerFunc,500)}};e.cbHandleData=function(f){e.cbGameData=f;e.cbInfoPanel.find(".cb-info-round").html(f.round);e.cbInfoPanel.find(".cb-info-white").html(f.whiteName);e.cbInfoPanel.find(".cb-info-black").html(f.blackName);e.cbInfoPanel.find(".cb-info-date").html(getDateStr(f.startTime));e.cbInfoPanel.find(".cb-result").html(getResultBoth(f.result));e.cbPlayerPanelWhite.find(".cb-player-panel-name").text(f.whiteName);
f.whiteTime&&e.cbPlayerPanelWhite.find(".cb-player-panel-time").text(e.cbConvertTime(f.whiteTime));e.cbPlayerPanelWhite.find(".cb-player-panel-points").html(getResultWhite(f.result));e.cbPlayerPanelWhite.find(".cb-player-panel-color").addClass("cb-player-panel-color-white").removeClass("cb-player-panel-color-black");e.cbPlayerPanelBlack.find(".cb-player-panel-name").text(f.blackName);f.blackTime&&e.cbPlayerPanelBlack.find(".cb-player-panel-time").text(e.cbConvertTime(f.blackTime));e.cbPlayerPanelBlack.find(".cb-player-panel-points").html(getResultBlack(f.result));
e.cbPlayerPanelBlack.find(".cb-player-panel-color").addClass("cb-player-panel-color-black").removeClass("cb-player-panel-color-white");if(e.cbGameData.result&&e.cbGameData.result!="*")if(e.cbTimeTimer){clearInterval(e.cbTimeTimer);e.cbTimeTimer=null}};e.cbRefreshMoves=function(){e.cbViewer.loadGameMoves()};e.cbSetCurrentMove=function(f){e.cbCurrentMove=f;if(f%2==1){e.cbPlayerPanelWhite.find(".cb-player-panel-turn .ui-icon").css({visibility:"hidden"});e.cbPlayerPanelBlack.find(".cb-player-panel-turn .ui-icon").css({visibility:"visible"})}else{e.cbPlayerPanelBlack.find(".cb-player-panel-turn .ui-icon").css({visibility:"hidden"});
e.cbPlayerPanelWhite.find(".cb-player-panel-turn .ui-icon").css({visibility:"visible"})}};e.cbConvertTime=function(f,g){var h,i;f=f||0;if(f<0)f=0;h=Math.floor(f/3600);f-=h*3600;i=Math.floor(f/60);f-=i*60;f=Math.floor(f);if(i<10)i="0"+i;if(f<10)f="0"+f;if(g)return h+"h:"+i+"m:"+f+"s";return h+"h:"+i+"m"};e.cbLayout.resizeAll();cbAdFollowHolder(e.cbAdHolderBoard,$("#cb-ad-banner-board"));cbAdFollowHolder(e.cbAdHolderPrimary,$("#cb-ad-hbanner-primary"));return e}
function getTabGame(c){return _tabGame[c]}
function openTabGame(c,a){var d=a.id+"__"+c.id,b=SIMPUB_BASE+"/rooms/"+a.id+"/games/"+c.id,e="#tab-game-"+d,f=_tabGame[d],g;if(f)tabsPanel.tabs("select",e);else{g=cbShortenPlayerName(c.whiteName)+" - "+cbShortenPlayerName(c.blackName);tabsAdd(tabsPanel,e,g,function(){f.cbCloseAnalysis("default",b+"/analysis/default");closeChatPanel(f.cbChatPanel);simpub.send({cmd:"unsubscribe",node:b+"/chat"});simpub.send({cmd:"unsubscribe",node:b+"/broadcast"});delete _tabGame[d]},"cb-tab cb-tab-game").tabs("select",
e);f=createTabGame(tabsPanel.find(e)[0],d,c,a);_tabGame[d]=f;simpub.send({cmd:"subscribe",node:b+"/broadcast",retrieve:true});simpub.send({cmd:"subscribe",node:b+"/chat",retrieve:true});f.cbOpenAnalysis("default",b+"/analysis/default",true)}return f}var _tabRoom={};function Player(c,a,d){this.elo=a;this.points=d;this.name=c;this.NeustadtlScore=0}
function standings(c){this.init=function(){this.players=[];this.names=[]};this.init();this.pointsMode=c||0;this.calculate=function(a){a=filterTestData(a);for(var d=0;d<a.length;++d){var b=a[d];if(!(!b||b.round=="00")){this.addPoints(b.whiteName,b.whiteElo,this.getWhitePoints(b.result));this.addPoints(b.blackName,b.blackElo,this.getBlackPoints(b.result))}}this.calculateNeustadtlScore(a)};this.whoIsWinner=function(a){if(this.getWhitePoints(a)==0&&this.getBlackPoints(a)==0)return"playing";if(this.pointsMode==
1)if(this.getWhitePoints(a)==3)return"white";else if(this.getWhitePoints(a)==0)return"black";else{if(this.getWhitePoints(a)==1)return"none"}else if(this.getWhitePoints(a)==1)return"white";else if(this.getWhitePoints(a)==0)return"black";else if(this.getWhitePoints(a)==0.5)return"none"};this.calculateNeustadtlScore=function(a){a=filterTestData(a);for(var d=0;d<a.length;++d){var b=a[d];if(!(!b||b.round=="00")){var e=this.players[this.normName(b.whiteName)],f=this.players[this.normName(b.blackName)];
if(e&&f)if(this.whoIsWinner(b.result)=="white")e.NeustadtlScore+=f.points;else if(this.whoIsWinner(b.result)=="none"){e.NeustadtlScore+=f.points/2;f.NeustadtlScore+=e.points/2}else if(this.whoIsWinner(b.result)=="black")f.NeustadtlScore+=e.points}}};this.createHtml=function(a){if(this.pointsMode==-1)return'<div style="padding: 10px;">Standings are disabled for this event</div>';this.init();this.calculate(a);a=this.sortPlayers();for(var d='<div class="pp-grid-container"><table cellpadding="0" cellspacing="0"><thead><tr class="ui-state-default"><th>#</th><th>Name</th><th>Rtng</th><th>Pts</th><th>&nbsp;</th></tr></thead><tbody>',
b=0;b<a.length;++b){var e=a[b];d+='<tr class="ui-widget-content"><td class="pp-grid-cell">'+(b>0&&a[b].points==a[b-1].points?"":b+1)+'</td><td class="pp-grid-cell">'+(e.name||"")+'</td><td class="pp-grid-cell">'+(e.elo||"")+'</td><td class="pp-grid-cell"><b>'+e.points+'</b></td><td class="pp-grid-cell">'+e.NeustadtlScore+"</td></tr>"}d+="</tbody></table></div>";return d};this.getWhitePoints=function(a){if(typeof a=="undefined"||a=="*")return 0;return this.prepareResult(a.substr(0,a.indexOf("-")))};
this.getBlackPoints=function(a){if(typeof a=="undefined"||a=="*")return 0;return this.prepareResult(a.substr(a.indexOf("-")+1))};this.prepareResult=function(a){if(a=="&#189;")a=0.5;a=parseFloat(a);if(this.pointsMode==1){if(a==1)a=3;if(a==0.5)a=1}return a};this.normName=function(a){a=a.replace(/(\s+)?\d+(\s+)?$/,"");a=a.replace(/\.$/,"");a=a.replace(/(\s+)?\([A-Z]{3}\)(\s+)?$/,"");a=a.replace(/^\s+/,"");return a=a.replace(/\s+$/,"")};this.addPoints=function(a,d,b){var e=a.match(/(?:\s+)?(\d{4})(?:\s+)?$/);
if(e!=null)e=e[1];if(e&&!d)d=e;a=this.normName(a);if(typeof this.players[a]=="undefined")this.players[a]=new Player(a,d,b);else this.players[a].points+=b;if(d)this.players[a].elo=d};this.sortPlayers=function(){var a=[];for(var d in this.players)this.players.hasOwnProperty(d)&&a.push(this.players[d]);return a.sort(function(b,e){return e.points!=b.points?e.points-b.points:e.NeustadtlScore-b.NeustadtlScore})}}
function createTabRoom(c,a,d){var b=$(c),e=new standings(d.points==3?1:d.points||0);c="http://chessbomb.com/o/"+a+"/";b.append(constructWidget("center",constructAdContainer("cb-ad-holder-board")+constructWidgetHeader("Games")+constructWidgetContent())+constructWidget("west",constructWidget("north",constructAdContainerHalf("cb-ad-holder-primary")+constructWidgetContent(constructAccordion(constructAccordionHeader("Room Info")+constructAccordionPanel('<p><b>Direct Link</b>: <a href="'+c+'">'+c+'</a></p><p><b>Tournament</b>: <span class="cb-tournament">'+
d.name+'</span></p><p><b>Start Date</b>: <span class="cb-date">'+getDateStr(d.startTime)+'</span></p><p><span class="cb-extra"></span></p>',"cb-info")+constructAccordionHeader("Standings")+constructAccordionPanel("","cb-standings"),"cb-no-overflow")),"cb-no-overflow")+constructWidget("center",constructWidgetHeader("Chat")+constructWidgetContent()+constructHelpTrigger())));b.cbId=a;b.cbExtData=d;b.cbData={};b.cbItems={};b.cbGames=[];b.cbSimPubBase=SIMPUB_BASE+"/rooms/"+a;b.cbCenterPanel=b.children(".ui-layout-center");
b.cbLeftPanel=b.children(".ui-layout-west");b.cbAccordionPanel=b.cbLeftPanel.children(".ui-layout-north").find(".cb-accordion");b.cbChatPanel=b.cbLeftPanel.children(".ui-layout-center").children(".ui-layout-content");b.cbInfoPanel=b.cbAccordionPanel.children(".cb-info");b.cbStandingsPanel=b.cbAccordionPanel.children(".cb-standings");b.cbAdHolderBoard=b.find(".cb-ad-holder-board");b.cbAdHolderPrimary=b.find(".cb-ad-holder-primary");b.cbHelpTrigger=b.find(".cb-help-trigger");bindHelpTrigger(b.cbHelpTrigger,
$("#cb-tip-room"));b.cbLayout=b.layout({defaults:$.extend({},cbLayoutDefaults,{}),center:{minWidth:468,onresize_end:function(){b.cbGrid.ppgrid("resize");cbAdFollowHolder(b.cbAdHolderBoard,$("#cb-ad-banner-board"))}},west:{minSize:234,size:350,onresize_end:function(){b.cbLeftLayout.resizeAll()}}});b.cbLeftLayout=b.cbLeftPanel.layout({defaults:$.extend({},cbLayoutDefaults,{closable:false}),north:{minSize:200,size:280,onresize_end:function(){b.cbAccordionPanel.accordion("resize");cbAdFollowHolder(b.cbAdHolderPrimary,
$("#cb-ad-hbanner-primary"))}},center:{onresize_end:function(){b.cbChatPanel.cbLayout.resizeAll()}}});b.cbAccordionPanel.accordion({active:1,fillSpace:true});b.cbGrid=b.cbCenterPanel.children(".ui-layout-content").ppgrid({colModel:[{name:"_round",label:"Round"},{name:"whiteName",label:"White"},{name:"whiteElo",label:"Rating (W)"},{name:"blackName",label:"Black"},{name:"blackElo",label:"Rating (B)"},{name:"result",label:"Result"}],colId:"id",click:function(f){openTabGame(f,b.cbExtData)},treeTable:true});
b.cbChatPanel=openChatPanel(b.cbChatPanel,b.cbSimPubBase+"/chat");b.cbHandleItem=function(f){var g;if(f.name==0)b.cbData=f.payload;else{g=f.name in b.cbItems;f.payload.result=getResultBoth(f.payload.result);b.cbItems[f.name]=f.payload;b.cbItems[f.name].id=f.name;if(g){b.cbGrid.ppgrid("updateRow",f.name,b.cbItems[f.name]);b.cbProcessGames();b.cbStandingsPanel.html(e.createHtml(b.cbGames))}else{b.cbRefreshForce=b.cbRefreshForce||(b.cbRefreshInitial?1:1E4);b.cbRefreshInitial=false}}};b.cbRefreshTimeout=
null;b.cbRefreshForce=null;b.cbRefreshInitial=true;b.cbRefreshData=function(){if(b.cbRefreshForce){b.cbRefreshTimeout&&clearTimeout(b.cbRefreshTimeout);b.cbRefreshTimeout=setTimeout(b.cbRefreshDataReal,b.cbRefreshForce);b.cbRefreshForce=null}};b.cbProcessGames=function(){var f=[],g;for(g in b.cbItems)b.cbItems.hasOwnProperty(g)&&f.push(b.cbItems[g]);f.sort(function(h,i){if(h.round<i.round)return 1;if(h.round>i.round)return-1;if(h.whiteName<i.whiteName)return-1;if(h.whiteName>i.whiteName)return 1;
if(h.blackName<i.blackName)return-1;if(h.blackName>i.blackName)return 1;return 0});b.cbGames=f};b.cbRefreshDataReal=function(){b.cbRefreshTimeout=null;b.cbProcessGames();b.cbStandingsPanel.html(e.createHtml(b.cbGames));b.cbGrid.ppgrid("load",prepareRoomData(filterTestData(b.cbGames)))};b.cbLayout.resizeAll();cbAdFollowHolder(b.cbAdHolderBoard,$("#cb-ad-banner-board"));cbAdFollowHolder(b.cbAdHolderPrimary,$("#cb-ad-hbanner-primary"));$.get("/ajax/room_info/",{room_id:b.cbId},function(f){b.cbInfoPanel.find(".cb-extra").html(f)});
return b}function getTabRoom(c){return _tabRoom[c]}
function openTabRoom(c,a){var d="#tab-room-"+c,b=_tabRoom[c],e=SIMPUB_BASE+"/rooms/"+c;if(b)tabsPanel.tabs("select",d);else{tabsAdd(tabsPanel,d,a.name,function(){b.cbRefreshTimeout&&clearTimeout(b.cbRefreshTimeout);closeChatPanel(b.cbChatPanel);simpub.send({cmd:"unsubscribe",node:e+"/chat"});simpub.send({cmd:"unsubscribe",node:e+"/index"});delete _tabRoom[c]},"cb-tab cb-tab-room").tabs("select",d);b=createTabRoom(tabsPanel.find(d)[0],c,a);_tabRoom[c]=b;simpub.send({cmd:"subscribe",node:e+"/index",
retrieve:true});simpub.send({cmd:"subscribe",node:e+"/chat",retrieve:true})}return b}function prepareRoomData(c){var a,d,b=true,e=undefined,f,g=0,h=[];for(a=0;a<c.length;++a){d=c[a];if(d.round!=e){e=d.round;f=++g;h.push({_round:e,_rowId:f,_rowExpanded:b,_rowNoClick:true});b=false}if(typeof e!="undefined"){d._rowId=++g;d._rowParent=f}h.push(d)}return h}var _tabRooms=null;
function profileContent(){var c="";c+=userAuthenticated?'<p>Welcome, <span class="cb-profile-username">'+userUsername+'</span>.</p><p>First Name: <span class="cb-profile-first-name">'+userFirstName+'</span></p><p>Last Name: <span class="cb-profile-last-name">'+userLastName+"</span></p>":'<p>Welcome, <span class="cb-profile-username">'+userNickname+"</span>.</p>";return c}
function createTabRooms(c){var a=$(c);a.append(constructWidget("center",constructAdContainer("cb-ad-holder-board")+constructWidgetHeader("Room List")+constructWidgetContent())+constructWidget("west",constructAdContainerHalf("cb-ad-holder-primary")+constructWidgetHeader("Profile")+constructWidgetContent(profileContent(),null,"cb-profile")+constructHelpTrigger()));a.cbItems={};a.cbAdHolderBoard=a.find(".cb-ad-holder-board");a.cbAdHolderPrimary=a.find(".cb-ad-holder-primary");a.cbHelpTrigger=a.find(".cb-help-trigger");
bindHelpTrigger(a.cbHelpTrigger,$("#cb-tip-rooms"));a.cbLayout=a.layout({defaults:$.extend({},cbLayoutDefaults,{}),center:{minWidth:468,onresize_end:function(){a.cbGrid.ppgrid("resize");cbAdFollowHolder(a.cbAdHolderBoard,$("#cb-ad-banner-board"))}},west:{minSize:234,size:350,onresize_end:function(){cbAdFollowHolder(a.cbAdHolderPrimary,$("#cb-ad-hbanner-primary"))}}});a.cbGrid=a.find(".ui-layout-center > .ui-layout-content").ppgrid({colModel:[{name:"name",label:"Name"},{name:"type",label:"Type"}],
click:function(d){openTabRoom(d.id,d)}});a.cbHandleItem=function(d){a.cbItems[d.name]=d};a.cbRefreshData=function(){var d=[],b,e;for(b in a.cbItems)if(a.cbItems.hasOwnProperty(b)){e=a.cbItems[b];d.push($.extend({id:e.name,startTime:0},e.payload))}d.sort(function(f,g){return f.startTime==g.startTime?0:g.startTime-f.startTime});a.cbGrid.ppgrid("load",filterTestData(d))};a.cbLayout.resizeAll();cbAdFollowHolder(a.cbAdHolderBoard,$("#cb-ad-banner-board"));cbAdFollowHolder(a.cbAdHolderPrimary,$("#cb-ad-hbanner-primary"));
return a}function getTabRooms(){return _tabRooms}function openTabRooms(){if(_tabRooms)tabsPanel.tabs("select","#tab-rooms");else{tabsAdd(tabsPanel,"#tab-rooms","Rooms",null,"cb-tab cb-tab-rooms").tabs("select","#tab-rooms");_tabRooms=createTabRooms(tabsPanel.find("#tab-rooms")[0])}return _tabRooms}function setStatus(c,a){a=typeof a=="undefined"?"#dddddd":typeof a=="string"?a:a?"green":"red";$("#status-bar").html(c).css({color:a})}var cbInitialAd=true;
function cbGetNewAd(c){var a;if(!cbInitialAd)if(a=c.html().match(/\<iframe.*iframe\>/)){a=a[0];c.empty();c.append(a)}cbInitialAd=false}var mainLayoutPanel,mainLayout,mainHeader,mainFooter;
function createMainLayout(){var c=false;mainLayoutPanel=$("#layout-main").append(constructTabsWidget("center",null,"main-tabs"));mainHeader=$(".header").addClass("ui-layout-north cb-no-overflow").appendTo(mainLayoutPanel);mainFooter=$(".footer").addClass("ui-layout-south cb-no-overflow").appendTo(mainLayoutPanel);tabsPanel=mainLayoutPanel.children(".ui-layout-center");mainLayout=mainLayoutPanel.layout({defaults:$.extend({},cbLayoutDefaults,{closable:false,resizable:false,slidable:false,spacing_open:0}),
north:{size:60,onresize_end:function(){cbAdFollowHolder($("#header-banner"),$("#cb-ad-banner-header"))}},south:{size:20}});tabsPanel=tabsInit(tabsPanel);tabsPanel.bind("tabsshow",function(a,d){a=$(d.panel).find(".cb-ad-holder-board");var b=$(d.panel).find(".cb-ad-holder-primary"),e=$("#cb-ad-banner-board"),f=$("#cb-ad-hbanner-primary");cbAdFollowHolder(a,e);cbAdFollowHolder(b,f);c&&cbTrackPageView("/site/_dynamic/"+d.panel.id);c=true});mainLayout.resizeContent("center");cbAdFollowHolder($("#header-banner"),
$("#cb-ad-banner-header"))}
function handleSimPubItems(c,a,d){var b,e,f;b=c.split("/");var g=null,h=null,i=null,j=null;e=b[1];f=b[2];if(f=="index"){g=e;for(b=0;b<a.length;++b)getTabRooms().cbHandleItem(a[b])}else if(f=="rooms"){e=b[3];f=b[4];if(f=="index"){h=e;for(b=0;b<a.length;++b)getTabRoom(e).cbHandleItem(a[b])}else if(f=="chat")for(b=0;b<a.length;++b)getChatPanel(c).cbPost(a[b].payload.a,a[b].payload.m,a[b].name,a[b].payload.c);else if(f=="games"){f=b[5];b=b[6];if(b=="broadcast"){i=e+"__"+f;for(b=0;b<a.length;++b){c=a[b];
if(c.payload.type=="game-data")getTabGame(i).cbHandleData(c.payload);else if(c.payload.type=="game-move")getTabGame(i).cbHandleMove(c.name,c.payload.move);else if(c.payload.type=="game-comment")getTabGame(i).cbHandleComment(c.name.substr(1),c.payload.comment);else c.name=="t"&&getTabGame(i).cbHandleTime(c.payload,d)}}else if(b=="analysis"){j=getAnalysisPanel(c);for(b=0;b<a.length;++b)j.cbHandleItem(a[b].name,a[b].payload)}else if(b=="chat")for(b=0;b<a.length;++b)getChatPanel(c).cbPost(a[b].payload.a,
a[b].payload.m,a[b].name,a[b].payload.c)}}if(g){getTabRooms().cbRefreshData();setStatus("Connected",true)}h&&getTabRoom(h).cbRefreshData();i&&getTabGame(i).cbRefreshMoves();if(j){j.cbSetPosition(j.cbGamePosition);j.cbTabGame.cbViewer.history.highlight()}}function doConnect(){setStatus("Connecting...");simpub.connect("simpub.int.chessbomb.com",80)}
$(document).ready(function(){CometPP.init();createMainLayout();openTabRooms();simpub=new SimPubClient;simpub.onOpen=function(){var c,a;setStatus("Loading...");if(connectedBefore)simpub.resubscribe();else{simpub.send({cmd:"subscribe",node:SIMPUB_BASE+"/index",retrieve:true});for(c=0;c<cbAutoRooms.length;++c){a=cbAutoRooms[c];openTabRoom(a.id,a)}for(c=0;c<cbAutoGames.length;++c){a=cbAutoGames[c];openTabGame(a[0],a[1])}}connectedBefore=true};simpub.onClose=function(){if(!isClosing){var c=Math.round(15+
Math.random()*15);setStatus("Disconnected... (auto-reconnect in "+c+"s)",false);setTimeout(function(){doConnect()},c*1E3)}};simpub.onMessage=function(c){try{if(c.type=="itemsPublished")handleSimPubItems(c.node,c.items,c.type);else c.type=="itemsRetrieved"&&handleSimPubItems(c.node,c.items,c.type)}catch(a){}};$(window).unload(function(){isClosing=true;simpub.close()});doConnect()});

