
Board=function(color,freq){this.color=color;this.freq=freq;this.pos1D=[];this.pos2D=[];var element=document.getElementById('capture_mouse_action');element.onmousedown=this.grab;element.onmousemove=this.drag;element.onmouseup=this.drop;this.object=null;this.timers=[];this.moveType=-1;this.modal=false;this.epWhite=-1;this.epBlack=-1;this.shRoWhite=true;this.loRoWhite=true;this.shRoBlack=true;this.loRoBlack=true;this.queen=1;this.rook=2;this.bishop=2;this.knight=2;this.idNewPiece='';this.idOldPiece='';this.rowConvSrc=-1;this.colConvDst=-1;this.rowConvSrc=-1;this.colConvDst=-1;this.strPos='';this.dontMove=true;Board.thisRef=this;var pieces=[];pieces=document.getElementsByTagName('img');for(i=0;i<pieces.length;i++){pieces[i].style.cursor='move';}
this.name=document.getElementById('username').value;this.increment=0;};Board.isWhiteSquare=function(i){return(i===0||i==2||i==4||i==6||i==9||i==11||i==13||i==15||i==16||i==18||i==20||i==22||i==25||i==27||i==29||i==31||i==32||i==34||i==36||i==38||i==41||i==43||i==45||i==47||i==48||i==50||i==52||i==54||i==57||i==59||i==61||i==63);};Board.removeMarker=function(i,j,timerIndex){if(Board.thisRef.timers[timerIndex]){window.clearTimeout(Board.thisRef.timers[timerIndex]);Board.thisRef.timers[timerIndex]=null;}
if(i!=-1){if(Board.isWhiteSquare(i)){document.getElementById('sq_'+i.toString(10)).style.backgroundImage='url(./graphics/white.jpg)';}else{document.getElementById('sq_'+i.toString(10)).style.backgroundImage='url(./graphics/black.jpg)';}}
if(j!=-1){if(Board.isWhiteSquare(j)){document.getElementById('sq_'+j.toString(10)).style.backgroundImage='url(./graphics/white.jpg)';}else{document.getElementById('sq_'+j.toString(10)).style.backgroundImage='url(./graphics/black.jpg)';}}};Board.selectPieceDialog=function(){var radios=[];radios=document.getElementsByName('piece_selector');for(var k=0;k<radios.length;k++){if(radios[k].checked){switch(radios[k].value){case'Q':if(Board.thisRef.color===0){Board.thisRef.idNewPiece='p_wQ'+(++Board.thisRef.queen).toString(10);}else if(Board.thisRef.color==1){Board.thisRef.idNewPiece='p_bQ'+(++Board.thisRef.queen).toString(10);}
break;case'R':if(Board.thisRef.color===0){Board.thisRef.idNewPiece='p_wR'+(++Board.thisRef.rook).toString(10);}else if(Board.thisRef.color==1){Board.thisRef.idNewPiece='p_bR'+(++Board.thisRef.rook).toString(10);}
break;case'N':if(Board.thisRef.color===0){Board.thisRef.idNewPiece='p_wN'+(++Board.thisRef.knight).toString(10);}else if(Board.thisRef.color==1){Board.thisRef.idNewPiece='p_bN'+(++Board.thisRef.knight).toString(10);}
break;case'B':if(Board.thisRef.color===0){Board.thisRef.idNewPiece='p_wB'+(++Board.thisRef.bishop).toString(10);}else if(Board.thisRef.color==1){Board.thisRef.idNewPiece='p_bB'+(++Board.thisRef.bishop).toString(10);}
break;}}}
var idO=Board.thisRef.idOldPiece;var idN=Board.thisRef.idNewPiece;var i=Board.thisRef.rowConvSrc;var j=Board.thisRef.colConvSrc;var m=Board.thisRef.rowConvDst;var n=Board.thisRef.colConvDst;document.getElementById(idN).style.top=parseInt(document.getElementById('sq_'+(m+8*n).toString(10)).style.left,10)+Board.thisRef.offset;document.getElementById(idN).style.left=parseInt(document.getElementById('sq_'+(m+8*n).toString(10)).style.top,10)+Board.thisRef.offset;Board.thisRef.dst=n+8*m;document.getElementById(idO).style.display='none';document.getElementById(idN).style.display='inline';var capture=false;if(Board.thisRef.pos2D[m][n]!=''){capture=true;}
Board.thisRef.pos1D[n+8*m]=idN;Board.thisRef.pos1D[j+8*i]='';Board.thisRef.pos2D[m][n]=idN;Board.thisRef.pos2D[i][j]='';Board.thisRef.transferData(5,Board.thisRef.idNewPiece,capture);Board.thisRef.src=Board.thisRef.dst=-1;radios[0].checked=true;document.getElementById('conversion_selector').style.display='none';Board.thisRef.modal=false;};Board.monitor=function(){g_counter++;servermsgToWindow(document.getElementById('server_msg_inner'),'Move transmission failed.','Retry No. '+g_counter+' ...');Board.thisRef.ajaxHelper=null;Board.thisRef.ajaxHelper=new net.ContentLoader(Board.thisRef,server+path+"board.php","POST",["name="+Board.thisRef.name,"src="+Board.thisRef.src_save,"dst="+Board.thisRef.dst_save,"moveType="+Board.thisRef.moveType,"idNewPiece="+Board.thisRef.idNewPiece,"msg="+Board.thisRef.msg,"clock="+Board.thisRef.clock,"epWhite="+Board.thisRef.epWhite,"epBlack="+Board.thisRef.epBlack,"strPos="+Board.thisRef.strPos]);Board.thisRef.ajaxHelper.sendRequest();};Board.prototype={XpositionAlt:0,YpositionAlt:0,startX:0,startY:0,Xwert:0,Ywert:0,src:-1,dst:-1,offset:0,msg:'',clock:'',moveType:0,idNewPiece:'',counter:0,ajaxHelper:null,enableBoard:function(color){this.dontMove=false;var pieces=[];pieces=document.getElementsByTagName('img');for(i=0;i<pieces.length;i++){if(pieces[i].id.indexOf('p_w')>=0&&color===0||pieces[i].id.indexOf('p_b')>=0&&color==1){pieces[i].style.cursor='move';}else{pieces[i].style.cursor='auto';}}},disableBoard:function(){this.dontMove=true;var pieces=[];pieces=document.getElementsByTagName('img');for(var i=0;i<pieces.length;i++){if(pieces[i].id.indexOf('p_')>=0){pieces[i].style.cursor='auto';}}},transferData:function(moveType,idNewPiece,capture){if(!g_playing){return;}
var i,j;if(this.modal){this.modal=false;}
this.color=1-this.color;var check=this.isCheck(-1,-1,-1,-1);if(check){g_isMate=true;if(this.color===0){for(i=0;i<64;i++){for(j=0;j<64;j++){if(this.pos1D[i].indexOf('w')>=0&&(this.pos1D[j].indexOf('b')>=0||this.pos1D[j]==='')){if(this.isLegalMove(i,j,false)){g_isMate=false;break;}}}
if(!g_isMate){break;}}}else{for(i=0;i<64;i++){for(j=0;j<64;j++){if(this.pos1D[i].indexOf('b')>=0&&(this.pos1D[j].indexOf('w')>=0||this.pos1D[j]==='')){if(this.isLegalMove(i,j,false)){g_isMate=false;break;}}}
if(!g_isMate){break;}}}}else{isStalemate=true;if(this.color===0){for(i=0;i<64;i++){for(j=0;j<64;j++){if(this.pos1D[i].indexOf('w')>=0&&(this.pos1D[j].indexOf('b')>=0||this.pos1D[j]==='')){if(this.isLegalMove(i,j,false)){isStalemate=false;break;}}}
if(!isStalemate){break;}}}else{for(i=0;i<64;i++){for(j=0;j<64;j++){if(this.pos1D[i].indexOf('b')>=0&&(this.pos1D[j].indexOf('w')>=0||this.pos1D[j]==='')){if(this.isLegalMove(i,j,false)){isStalemate=false;break;}}}
if(!isStalemate){break;}}}}
this.color=1-this.color;if(!g_isMate&&!g_isStalemate){var counter=0;g_isDraw=true;for(i=0;i<8;i++){for(j=0;j<8;j++){if(this.pos2D[i][j].indexOf('N')>=0||this.pos2D[i][j].indexOf('B')>=0){counter=counter+1;}else if(this.pos2D[i][j].indexOf('P')>=0||this.pos2D[i][j].indexOf('R')>=0||this.pos2D[i][j].indexOf('Q')>=0){counter=counter+3;}
if(counter>=3){g_isDraw=false;break;}}
if(!g_isDraw){break;}}}
this.msg='';if(check==1&&!g_isMate){this.msg+='check';}
if(capture){this.msg+='capture';}
if(g_isMate){this.msg+='mate';}
else if(g_isStalemate){this.msg+='stalemate';}
else if(g_isDraw){this.msg+='draw';}
if(g_draw_offered){this.msg+='decline';document.getElementById('b_draw').disabled=false;document.getElementById('b_decline_draw').disabled=true;document.getElementById('b_accept_draw').disabled=true;g_draw_offered=false;}
var ply;if(g_which_clock=='white'){ply=1;g_which_clock='black';this.clock=document.getElementById('s_clock1').firstChild.nodeValue;this.clock=this.addIncrement(this.clock,this.increment);document.getElementById('s_clock1').firstChild.nodeValue=this.clock;}else if(g_which_clock=='black'){ply=2;g_which_clock='white';this.clock=document.getElementById('s_clock2').firstChild.nodeValue;this.clock=this.addIncrement(this.clock,this.increment);document.getElementById('s_clock2').firstChild.nodeValue=this.clock;}
this.moveType=moveType;this.idNewPiece=idNewPiece;this.disableBoard();document.getElementById('b_claim_win').disabled=false;this.displayNotation(capture,check,moveType,idNewPiece,ply,this.src,this.dst);this.strPos='';for(i=0;i<64;i++){this.strPos+=this.pos1D[i]+':';}
this.ajaxHelper=new net.ContentLoader(this,server+path+"board.php","POST",["name="+this.name,"src="+this.src,"dst="+this.dst,"moveType="+this.moveType,"idNewPiece="+this.idNewPiece,"msg="+this.msg,"clock="+this.clock,"epWhite="+this.epWhite,"epBlack="+this.epBlack,"strPos="+this.strPos]);this.ajaxHelper.sendRequest();if(this.color==1){this.epWhite=-1;}
if(this.color===0){this.epBlack=-1;}
clearInterval(this.fixer);Board.thisRef.src_save=this.src;Board.thisRef.dst_save=this.dst;this.fixer=setInterval("Board.monitor()",g_fact2*this.freq*1000);},displayNotation:function(capture,check,moveType,idNewPiece,ply,src,dst){var string;if(idNewPiece.charAt(3)!='P'&&moveType!=5){string=idNewPiece.charAt(3);string+=this.letter(this.col(src));}else{string=this.letter(this.col(src));}
var tmp=8-this.row(src);string+=tmp.toString();if(capture){string+='x';}
else{string+='-';}
string+=this.letter(this.col(dst));tmp=8-this.row(dst);string+=tmp.toString();if(moveType==2){string='O-O-O';}
if(moveType==3){string='O-O';}
if(moveType==4){string+='ep';}
if(moveType==5){string+=idNewPiece.charAt(3);}
if(check==1&&!g_isMate){string+='+';}
if(g_isMate){string+='++';}
if(ply==1){this.counter=this.counter+1;var tmp=this.counter;string=tmp.toString()+'.'+string;}
if(this.counter==1&&ply==1){document.getElementById('w_moves').firstChild.nodeValue='';}
document.getElementById('w_moves').firstChild.nodeValue+=string+' ';},addIncrement:function(clock,increment){var clockArray=[];clockArray=clock.split(':');var hours=clockArray[0];var minutes=clockArray[1];var seconds=clockArray[2];var min_inc=parseInt(increment/60);var sec_inc=increment-min_inc*60;if(seconds.toString().length<2){seconds='0'+seconds;}
seconds=10*parseInt(seconds.toString().charAt(0))+
parseInt(seconds.toString().charAt(1))+sec_inc;if(seconds>=60){seconds=seconds-60;minutes++;}
if(minutes.toString().length<2){minutes='0'+minutes;}
minutes=10*parseInt(minutes.toString().charAt(0))+
parseInt(minutes.toString().charAt(1))+min_inc;if(minutes>=60){minutes=minutes-60;hours++;}
if(minutes.toString().length<2){minutes='0'+minutes;}
if(seconds.toString().length<2){seconds='0'+seconds;}
clock=hours+':'+minutes+':'+seconds;return clock;},executeNormalMove:function(i,j){document.getElementById(this.object).style.left=parseInt(document.getElementById('sq_'+j.toString(10)).style.left,10)+this.offset;document.getElementById(this.object).style.top=parseInt(document.getElementById('sq_'+j.toString(10)).style.top,10)+this.offset;this.dst=j;if(this.pos1D[j]!==''&&i!=j){document.getElementById(this.pos1D[j]).style.display='none';}
if(i!=j){this.pos1D[j]=this.pos1D[i];this.pos1D[i]='';this.pos2D[this.row(j)][this.col(j)]=this.pos2D[this.row(i)][this.col(i)];this.pos2D[this.row(i)][this.col(i)]='';}},executeLongCastle:function(i,j){this.executeNormalMove(i,j);if(this.color===0){document.getElementById('p_wR1').style.left=parseInt(document.getElementById('sq_59').style.left,10)+this.offset;this.pos1D[59]='p_wR1';this.pos1D[56]='';this.pos2D[7][3]='p_wR1';this.pos2D[7][0]='';}else if(this.color==1){document.getElementById('p_bR1').style.left=parseInt(document.getElementById('sq_3').style.left,10)+this.offset;this.pos1D[3]='p_bR1';this.pos1D[0]='';this.pos2D[0][3]='p_bR1';this.pos2D[0][0]='';}},executeShortCastle:function(i,j){this.executeNormalMove(i,j);if(this.color===0){document.getElementById('p_wR2').style.left=parseInt(document.getElementById('sq_61').style.left,10)+this.offset;this.pos1D[61]='p_wR2';this.pos1D[63]='';this.pos2D[7][5]='p_wR2';this.pos2D[7][7]='';}else if(this.color==1){document.getElementById('p_bR2').style.left=parseInt(document.getElementById('sq_5').style.left,10)+this.offset;this.pos1D[5]='p_bR2';this.pos1D[7]='';this.pos2D[0][5]='p_bR2';this.pos2D[0][7]='';}},executeEnPassant:function(i,j){this.executeNormalMove(i,j);var rowDel=this.row(i);var colDel=this.col(j);var idDel=this.pos2D[rowDel][colDel];document.getElementById(idDel).style.display='none';this.pos1D[colDel+8*rowDel]='';this.pos2D[rowDel][colDel]='';},disableCastle:function(i){if(this.pos1D[i]=='p_wK'||this.pos1D[i]=='p_wR2'){this.shRoWhite=false;if(document.getElementById('username').value=='sam'||document.getElementById('username').value=='frodo'){_console.toConsole('disableCastle 1: '+i);}}else if(this.pos1D[i]=='p_bK'||this.pos1D[i]=='p_bR2'){this.shRoBlack=false;if(document.getElementById('username').value=='sam'||document.getElementById('username').value=='frodo'){_console.toConsole('disableCastle 2: '+i);}}
if(this.pos1D[i]=='p_wK'||this.pos1D[i]=='p_wR1'){this.loRoWhite=false;if(document.getElementById('username').value=='sam'||document.getElementById('username').value=='frodo'){_console.toConsole('disableCastle 3: '+i);}}else if(this.pos1D[i]=='p_bK'||this.pos1D[i]=='p_bR1'){this.loRoBlack=false;if(document.getElementById('username').value=='sam'||document.getElementById('username').value=='frodo'){_console.toConsole('disableCastle 4: '+i);}}},row:function(i){if(i<=7){return 0;}
else if(i<=15){return 1;}
else if(i<=23){return 2;}
else if(i<=31){return 3;}
else if(i<=39){return 4;}
else if(i<=47){return 5;}
else if(i<=55){return 6;}
else{return 7;}},col:function(i){if(i==0||i==8||i==16||i==24||i==32||i==40||i==48||i==56){return 0;}
else if(i==1||i==9||i==17||i==25||i==33||i==41||i==49||i==57){return 1;}
else if(i==2||i==10||i==18||i==26||i==34||i==42||i==50||i==58){return 2;}
else if(i==3||i==11||i==19||i==27||i==35||i==43||i==51||i==59){return 3;}
else if(i==4||i==12||i==20||i==28||i==36||i==44||i==52||i==60){return 4;}
else if(i==5||i==13||i==21||i==29||i==37||i==45||i==53||i==61){return 5;}
else if(i==6||i==14||i==22||i==30||i==38||i==46||i==54||i==62){return 6;}
else{return 7;}},letter:function(i){if(i==0){return'a';}
else if(i==1){return'b';}
else if(i==2){return'c';}
else if(i==3){return'd';}
else if(i==4){return'e';}
else if(i==5){return'f';}
else if(i==6){return'g';}
else if(i==7){return'h';}},movesTo:function(k,l,color){var count=0;for(var i=0;i<8;i++){for(var j=0;j<8;j++){var DIA=(i+j==k+l)||(i-j==k-l);var HOR=(i==k);var VER=(j==l);var ADJ=(k==i+1&&l==j+1)||(k==i+1&&l==j-1)||(k==i-1&&l==j+1)||(k==i-1&&l==j-1)||(k==i&&l==j+1)||(k==i&&l==j-1)||(k==i+1&&l==j)||(k==i-1&&l==j);if((this.pos2D[i][j].indexOf('w')>=0&&color===0)||(this.pos2D[i][j].indexOf('b')>=0&&color==1)){switch(this.pos2D[i][j].charAt(3)){case'K':if(ADJ){count++;}
break;case'Q':if((DIA||HOR||VER)&&!this.pathBlocked(i,j,k,l)){count++;}
break;case'R':if((HOR||VER)&&!this.pathBlocked(i,j,k,l)){count++;}
break;case'N':if(k==i-1&&l==j-2||k==i-2&&l==j-1||k==i+1&&l==j+2||k==i+2&&l==j+1||k==i-1&&l==j+2||k==i-2&&l==j+1||k==i+1&&l==j-2||k==i+2&&l==j-1){count++;}
break;case'B':if(DIA&&!this.pathBlocked(i,j,k,l)){count++;}
break;case'P':if(this.color===0){if(i==k-1&&(j==l-1||j==l+1)){count++;}}else if(this.color==1){if(i==k+1&&(j==l-1||j==l+1)){count++;}}
break;}}}}
return count;},pathBlocked:function(i,j,m,n){var DIA=(i+j==m+n)||(i-j==m-n);var HOR=(i==m);var VER=(j==n);if(DIA){if(i<m&&j<n){while(j<n){if(this.pos2D[++i][++j]!==''&&!(i==m||j==n)){return 1;}}}else if(i<m&&j>n){while(j>n){if(this.pos2D[++i][--j]!==''&&!(i==m||j==n)){return 1;}}}else if(i>m&&j<n){while(j<n){if(this.pos2D[--i][++j]!==''&&!(i==m||j==n)){return 1;}}}else if(i>m&&j>n){while(j>n){if(this.pos2D[--i][--j]!==''&&!(i==m||j==n)){return 1;}}}}else if(VER){if(i<m){while(i<m){if(this.pos2D[++i][j]!==''&&!(i==m)){return 1;}}}
else if(i>m){while(i>m){if(this.pos2D[--i][j]!==''&&!(i==m)){return 1;}}}}else if(HOR){if(j<n){while(j<n){if(this.pos2D[i][++j]!==''&&!(j==n)){return 1;}}}
else if(j>n){while(j>n){if(this.pos2D[i][--j]!==''&&!(j==n)){return 1;}}}}
return 0;},isCheck:function(i,j,m,n){if(i!=-1){var saveMN=Board.thisRef.pos2D[m][n];var saveIJ=Board.thisRef.pos2D[i][j];Board.thisRef.pos2D[m][n]=Board.thisRef.pos2D[i][j];Board.thisRef.pos2D[i][j]='';}
for(var k=0;k<8;k++){for(var l=0;l<8;l++){if(Board.thisRef.color===0){if(Board.thisRef.pos2D[k][l].indexOf('wK')>=0){if(this.movesTo(k,l,1)>0){if(i!=-1){Board.thisRef.pos2D[i][j]=saveIJ;Board.thisRef.pos2D[m][n]=saveMN;}
return 1;}else{if(i!=-1){Board.thisRef.pos2D[i][j]=saveIJ;Board.thisRef.pos2D[m][n]=saveMN;}
return 0;}}}else if(Board.thisRef.color==1){if(Board.thisRef.pos2D[k][l].indexOf('bK')>=0){if(this.movesTo(k,l,0)>0){if(i!=-1){Board.thisRef.pos2D[i][j]=saveIJ;Board.thisRef.pos2D[m][n]=saveMN;}
return 1;}else{if(i!=-1){Board.thisRef.pos2D[i][j]=saveIJ;Board.thisRef.pos2D[m][n]=saveMN;}
return 0;}}}}}
if(_DEBUG_){_console.toConsole('isCheck: King is missing !');}
if(i!=-1){Board.thisRef.pos2D[i][j]=saveIJ;Board.thisRef.pos2D[m][n]=saveMN;}
return 1;},isLegalMove:function(src,dst,for_real){if(!g_playing){return 1;}
var un=document.getElementById('username').value;if(this.dontMove===true){if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 1");}return 0;}
if(this.modal===true){if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 2");}return 0;}
var i=this.row(src);var j=this.col(src);var m=this.row(dst);var n=this.col(dst);if(this.color===0&&this.pos2D[i][j].indexOf('b')>=0){if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 3");}return 0;}
if(this.color==1&&this.pos2D[i][j].indexOf('w')>=0){if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 4");}return 0;}
if(this.pos2D[m][n].indexOf('K')>=0){if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 5");}return 0;}
if(this.color===0&&this.pos2D[m][n].indexOf('w')>=0){if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 6");}return 0;}
if(this.color==1&&this.pos2D[m][n].indexOf('b')>=0){if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 7");}return 0;}
if(this.isCheck(i,j,m,n)){if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 8");}return 0;}
var DIA=(i+j==m+n)||(i-j==m-n);var HOR=(i==m);var VER=(j==n);switch(this.pos2D[i][j].charAt(3)){case'K':if((this.color===0&&this.loRoWhite&&i==7&&j==4&&m==7&&n==2&&this.pos2D[7][1]===''&&this.pos2D[7][2]===''&&this.pos2D[7][3]===''&&this.movesTo(7,2,1)===0&&this.movesTo(7,3,1)===0)||(this.color==1&&this.loRoBlack&&i===0&&j==4&&m===0&&n==2&&this.pos2D[0][1]===''&&this.pos2D[0][2]===''&&this.pos2D[0][3]===''&&this.movesTo(0,2,0)===0&&this.movesTo(0,3,0)===0)){return 2;}else if((this.color===0&&this.shRoWhite&&i==7&&j==4&&m==7&&n==6&&this.pos2D[7][5]===''&&this.pos2D[7][6]===''&&this.movesTo(7,5,1)===0&&this.movesTo(7,6,1)===0)||(this.color==1&&this.shRoBlack&&i===0&&j==4&&m===0&&n==6&&this.pos2D[0][5]===''&&this.pos2D[0][6]===''&&this.movesTo(0,5,0)===0&&this.movesTo(0,6,0)===0)){return 3;}else if(m==i&&n==j+1||m==i&&n==j-1||m==i+1&&n==j||m==i-1&&n==j||m==i+1&&n==j+1||m==i+1&&n==j-1||m==i-1&&n==j+1||m==i-1&&n==j-1){return 1;}else{if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 9");_console.toConsole("w: "+this.shRoWhite+"   "+this.loRoWhite);_console.toConsole("b: "+this.shRoBlack+"   "+this.loRoBlack);}
return 0;}
break;case'Q':if((HOR||VER||DIA)&&!this.pathBlocked(i,j,m,n)){return 1;}else{if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 10");}return 0;}
break;case'R':if((HOR||VER)&&!this.pathBlocked(i,j,m,n)){return 1;}else{if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 11");}return 0;}
break;case'N':if(m==i-1&&n==j-2||m==i-2&&n==j-1||m==i+1&&n==j+2||m==i+2&&n==j+1||m==i-1&&n==j+2||m==i-2&&n==j+1||m==i+1&&n==j-2||m==i+2&&n==j-1){return 1;}else{if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 12");}return 0;}
break;case'B':if(DIA&&!this.pathBlocked(i,j,m,n)){return 1;}else{if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 13");}return 0;}
break;case'P':if(this.color===0&&m===0&&i==1||this.color==1&&m==7&&i==6){if(this.pos2D[m][n]===''&&n==j||this.pos2D[m][n]!==''&&(n==j+1||n==j-1)){if(for_real){this.idOldPiece=this.pos2D[i][j];this.rowConvSrc=i;this.colConvSrc=j;this.rowConvDst=m;this.colConvDst=n;this.modal=true;document.getElementById(this.pos2D[i][j]).style.top=parseInt(document.getElementById('sq_'+(m+8*n).toString(10)).style.left,10)+this.offset;document.getElementById(this.pos2D[i][j]).style.left=parseInt(document.getElementById('sq_'+(m+8*n).toString(10)).style.top,10)+this.offset;if(this.pos2D[m][n]!==''){document.getElementById(this.pos2D[m][n]).style.display='none';}
document.getElementById('conversion_selector').style.display='block';}
return 5;}else{if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 14");}return 0;}}else if((this.color===0&&i==3&&m==2&&this.epWhite==n&&this.pos2D[i][n].indexOf('p_bP')>=0||this.color==1&&i==4&&m==5&&this.epBlack==n&&this.pos2D[i][n].indexOf('p_wP')>=0)&&(j+1==n||j-1==n)&&this.pos2D[m][n]===''){return 4;}else if((this.color===0&&i==6&&m==4&&j==n&&this.pos2D[m][n]==='')||(this.color==1&&i==1&&m==3&&j==n&&this.pos2D[m][n]==='')){if(this.color===0){this.epBlack=n;}
else if(this.color==1){this.epWhite=n;}
return 1;}else if((this.color===0&&m==i-1&&n==j&&this.pos2D[m][n]==='')||(this.color==1&&m==i+1&&n==j&&this.pos2D[m][n]==='')){return 1;}else if((this.color===0&&m==i-1&&(n==j+1||n==j-1)&&this.pos2D[m][n]!=='')||(this.color==1&&m==i+1&&(n==j+1||n==j-1)&&this.pos2D[m][n]!=='')){return 1;}else{if(for_real&&(un=="sam"||un=="frodo")){_console.toConsole("isLegalMove 15");}return 0;}
break;}
if(_DEBUG_){_console.toConsole('isLegalMove: This point should never be reached !');}},setupBoard:function(color){this.object=null;this.moveType=-1;this.modal=false;this.epWhite=-1;this.epBlack=-1;this.shRoWhite=true;this.loRoWhite=true;this.shRoBlack=true;this.loRoBlack=true;this.queen=1;this.rook=2;this.bishop=2;this.knight=2;this.idNewPiece='';this.idOldPiece='';this.rowConvSrc=-1;this.colConvDst=-1;this.rowConvSrc=-1;this.colConvDst=-1;this.strPos='';this.dontMove=true;for(var i=0;i<64;i++){Board.removeMarker(i,-1,-1);}
for(i=0;i<8;i++){this.pos2D[i]=[];}
for(i=0;i<8;i++){for(var j=0;j<8;j++){this.pos2D[i][j]=this.pos1D[j+8*i]='';}}
this.pos2D[0][0]=this.pos1D[0]='p_bR1';this.pos2D[0][1]=this.pos1D[1]='p_bN1';this.pos2D[0][2]=this.pos1D[2]='p_bB1';this.pos2D[0][3]=this.pos1D[3]='p_bQ1';this.pos2D[0][4]=this.pos1D[4]='p_bK';this.pos2D[0][5]=this.pos1D[5]='p_bB2';this.pos2D[0][6]=this.pos1D[6]='p_bN2';this.pos2D[0][7]=this.pos1D[7]='p_bR2';this.pos2D[1][0]=this.pos1D[8]='p_bP1';this.pos2D[1][1]=this.pos1D[9]='p_bP2';this.pos2D[1][2]=this.pos1D[10]='p_bP3';this.pos2D[1][3]=this.pos1D[11]='p_bP4';this.pos2D[1][4]=this.pos1D[12]='p_bP5';this.pos2D[1][5]=this.pos1D[13]='p_bP6';this.pos2D[1][6]=this.pos1D[14]='p_bP7';this.pos2D[1][7]=this.pos1D[15]='p_bP8';this.pos2D[6][0]=this.pos1D[48]='p_wP1';this.pos2D[6][1]=this.pos1D[49]='p_wP2';this.pos2D[6][2]=this.pos1D[50]='p_wP3';this.pos2D[6][3]=this.pos1D[51]='p_wP4';this.pos2D[6][4]=this.pos1D[52]='p_wP5';this.pos2D[6][5]=this.pos1D[53]='p_wP6';this.pos2D[6][6]=this.pos1D[54]='p_wP7';this.pos2D[6][7]=this.pos1D[55]='p_wP8';this.pos2D[7][0]=this.pos1D[56]='p_wR1';this.pos2D[7][1]=this.pos1D[57]='p_wN1';this.pos2D[7][2]=this.pos1D[58]='p_wB1';this.pos2D[7][3]=this.pos1D[59]='p_wQ1';this.pos2D[7][4]=this.pos1D[60]='p_wK';this.pos2D[7][5]=this.pos1D[61]='p_wB2';this.pos2D[7][6]=this.pos1D[62]='p_wN2';this.pos2D[7][7]=this.pos1D[63]='p_wR2';this.color=color;document.getElementById('intro').style.display='none';document.getElementById('capture_mouse_action').style.display='block';var height;var width;var offsetX=6;var offsetY=6;var border=6;var scale=0.8;if(!document.all){height=window.innerHeight;width=window.innerWidth;}else{height=document.body.clientHeight;width=document.body.clientWidth;}
this.offset=0.01*height;for(var i=0;i<64;i++){document.getElementById('sq_'+i.toString(10)).style.height=0.098*height;document.getElementById('sq_'+i.toString(10)).style.width=0.098*height;}
document.getElementById('border').style.top=offsetY-border;document.getElementById('border').style.left=offsetX-border;document.getElementById('border').style.width=8*parseInt(document.getElementById('sq_0').style.width,10)+2*border;document.getElementById('border').style.height=8*parseInt(document.getElementById('sq_0').style.height,10)+2*border;var board_top=offsetY-border;var board_left=offsetX-border;var board_right=offsetX+border+8*parseInt(document.getElementById('sq_0').style.width,10);var board_bottom=offsetY+border+8*parseInt(document.getElementById('sq_0').style.height,10);var pieces=[];pieces=document.getElementsByTagName('img');for(i=0;i<pieces.length;i++){if(pieces[i].id.indexOf('p_')>=0){pieces[i].style.height=scale*parseInt(document.getElementById('sq_0').style.height,10);pieces[i].style.width=scale*parseInt(document.getElementById('sq_0').style.width,10);}}
for(i=0;i<8;i++){for(var j=0;j<8;j++){var factI;var factJ;if(color==1){factI=7-i;factJ=7-j;}else if(color===0){factI=i;factJ=j;}
document.getElementById('sq_'+(j+8*i).toString(10)).style.left=offsetX+factJ*parseInt(document.getElementById('sq_'+(j+8*i).toString(10)).style.height,10);document.getElementById('sq_'+(j+8*i).toString(10)).style.top=offsetY+factI*parseInt(document.getElementById('sq_'+(j+8*i).toString(10)).style.height,10);}}
for(i=0;i<8;i++){for(j=0;j<8;j++){if(this.pos2D[i][j]!==''){if(i===0){document.getElementById(this.pos2D[i][j]).style.top=parseInt(document.getElementById('sq_'+(j+8*i).toString(10)).style.top,10)+this.offset;document.getElementById(this.pos2D[i][j]).style.left=parseInt(document.getElementById('sq_'+(j+8*i).toString(10)).style.left,10)+this.offset;}else if(i==1){document.getElementById(this.pos2D[i][j]).style.top=parseInt(document.getElementById('sq_'+(j+8*i).toString(10)).style.top,10)+this.offset;document.getElementById(this.pos2D[i][j]).style.left=parseInt(document.getElementById('sq_'+(j+8*i).toString(10)).style.left,10)+this.offset;}else if(i==6){document.getElementById(this.pos2D[i][j]).style.top=parseInt(document.getElementById('sq_'+(j+8*i).toString(10)).style.top,10)+this.offset;document.getElementById(this.pos2D[i][j]).style.left=parseInt(document.getElementById('sq_'+(j+8*i).toString(10)).style.left,10)+this.offset;}else if(i==7){document.getElementById(this.pos2D[i][j]).style.top=parseInt(document.getElementById('sq_'+(j+8*i).toString(10)).style.top,10)+this.offset;document.getElementById(this.pos2D[i][j]).style.left=parseInt(document.getElementById('sq_'+(j+8*i).toString(10)).style.left,10)+this.offset;}}}}
var imgArray=[];imgArray=document.getElementsByTagName('img');var piece_counter=0;for(i=0;i<imgArray.length;i++){if(imgArray[i].id.indexOf('p_')>=0&&piece_counter++<32){imgArray[i].style.display='inline';}else if(imgArray[i].id.indexOf('p_')>=0){imgArray[i].style.display='none';}}
var divArray=[];divArray=document.getElementsByTagName('div');for(i=0;i<divArray.length;i++){if(divArray[i].className=='white_square'||divArray[i].className=='black_square'||divArray[i].className=='frame'){divArray[i].style.display='inline';}}
document.getElementById('controls_1').style.top=offsetY+8*parseInt(document.getElementById('sq_0').style.height,10)+border;document.getElementById('controls_1').style.left=0;document.getElementById('cnrnc_outer').style.width=8*parseInt(document.getElementById('sq_0').style.width,10)+2*border;document.getElementById('buttons_outer').style.width=8*parseInt(document.getElementById('sq_0').style.width,10)+2*border;document.getElementById('buttons_inner_1').style.display='block';document.getElementById('buttons_inner_2').style.display='none';document.getElementById('buttons_inner_3').style.display='none';document.getElementById('b_prefs').disabled=false;document.getElementById('b_offer').disabled=false;document.getElementById('b_withdraw').disabled=false;document.getElementById('b_accept').disabled=true;document.getElementById('b_decline').disabled=true;document.getElementById('b_exit').disabled=false;document.getElementById('server_msg_outer').style.width=8*parseInt(document.getElementById('sq_0').style.width,10)+2*border;document.getElementById('controls_2').style.top=0;document.getElementById('controls_2').style.left=8*parseInt(document.getElementById('sq_0').style.width,10)+2*border;document.getElementById('controls_2').style.height=height;document.getElementById('controls_2').style.width=width-(8*parseInt(document.getElementById('sq_0').style.width,10)+2*border);document.getElementById('w_moves_frame').style.width=width-(8*parseInt(document.getElementById('sq_0').style.width,10)+2*border)-20;document.getElementById('w_moves_frame').style.height=0.59*height;document.getElementById('w_moves_frame').style.top=0;document.getElementById('w_offers_frame').style.width=0.58*(width-(8*parseInt(document.getElementById('sq_0').style.width,10)+2*border)-20);document.getElementById('w_offers_frame').style.height=2*0.295*height;document.getElementById('w_players_frame').style.width=0.42*(width-(8*parseInt(document.getElementById('sq_0').style.width,10)+2*border)-20);document.getElementById('w_players_frame').style.height=2*0.295*height;document.getElementById('w_chat_frame').style.width=width-(8*parseInt(document.getElementById('sq_0').style.width,10)+2*border)-20;document.getElementById('w_chat_frame').style.height=0.295*height;document.getElementById('w_chat_frame').style.top=0.59*height+20;document.getElementById('w_input_frame').style.width=width-(8*parseInt(document.getElementById('sq_0').style.width,10)+2*border)-20;document.getElementById('w_input_frame').style.height=0.04*height;document.getElementById('w_input_frame').style.top=0.88*height+35;document.getElementById('controls_1').style.display='block';document.getElementById('controls_2').style.display='block';document.getElementById('chat_input').focus();},grab:function(e){if(!document.all){Board.thisRef.object=e.target.id;}else{Board.thisRef.object=event.srcElement.id;}
if(Board.thisRef.object&&Board.thisRef.object.indexOf('p_')===0){document.getElementById(Board.thisRef.object).style.zIndex='1';if(!document.all){event=e;}
Board.thisRef.startX=event.clientX;Board.thisRef.startY=event.clientY;Board.thisRef.XpositionAlt=parseInt(document.getElementById(Board.thisRef.object).style.left,10);Board.thisRef.YpositionAlt=parseInt(document.getElementById(Board.thisRef.object).style.top,10);for(var i=0;i<64;i++){if(Board.thisRef.pos1D[i]==Board.thisRef.object){Board.thisRef.src=i;break;}}
return false;}},drag:function(e){if(Board.thisRef.object&&Board.thisRef.object.indexOf('p_')===0){if(!document.all){event=e;}
Board.thisRef.Xwert=event.clientX-Board.thisRef.startX;Board.thisRef.Ywert=event.clientY-Board.thisRef.startY;if(document.getElementById(Board.thisRef.object)){document.getElementById(Board.thisRef.object).style.left=Board.thisRef.XpositionAlt+Board.thisRef.Xwert;document.getElementById(Board.thisRef.object).style.top=Board.thisRef.YpositionAlt+Board.thisRef.Ywert;}}
return false;},drop:function(){var doTransfer=true;var capture=false;if(Board.thisRef.object&&Board.thisRef.object.indexOf('p_')===0){document.getElementById(Board.thisRef.object).style.zIndex='0';var x_c=parseInt(document.getElementById(Board.thisRef.object).style.left,10)+
parseInt(document.getElementById(Board.thisRef.object).style.width,10)/2;var y_c=parseInt(document.getElementById(Board.thisRef.object).style.top,10)+
parseInt(document.getElementById(Board.thisRef.object).style.height,10)/2;for(var i=0;i<64;i++){var x_min=parseInt(document.getElementById('sq_'+i.toString(10)).style.left,10);var x_max=x_min+parseInt(document.getElementById('sq_'+i.toString(10)).style.width,10);var y_min=parseInt(document.getElementById('sq_'+i.toString(10)).style.top,10);var y_max=y_min+parseInt(document.getElementById('sq_'+i.toString(10)).style.height,10);if(x_c>=x_min&&x_c<=x_max&&y_c>=y_min&&y_c<=y_max){Board.thisRef.moveType=Board.thisRef.isLegalMove(Board.thisRef.src,i,true);if(document.getElementById('username').value=="sam"||document.getElementById('username').value=="frodo"){_console.toConsole("drop: "+Board.thisRef.moveType);}
if(Board.thisRef.moveType==1){if(Board.thisRef.pos1D[i]!=''){capture=true;}
Board.thisRef.disableCastle(Board.thisRef.src);Board.thisRef.executeNormalMove(Board.thisRef.src,i);break;}else if(Board.thisRef.moveType==2){Board.thisRef.disableCastle(Board.thisRef.src);Board.thisRef.executeLongCastle(Board.thisRef.src,i);break;}else if(Board.thisRef.moveType==3){Board.thisRef.disableCastle(Board.thisRef.src);Board.thisRef.executeShortCastle(Board.thisRef.src,i);break;}else if(Board.thisRef.moveType==4){Board.thisRef.executeEnPassant(Board.thisRef.src,i);break;}else if(Board.thisRef.moveType==5){doTransfer=false;break;}}else{document.getElementById(Board.thisRef.object).style.left=Board.thisRef.XpositionAlt;document.getElementById(Board.thisRef.object).style.top=Board.thisRef.YpositionAlt;}}}
if(doTransfer&&Board.thisRef.dst!=-1){Board.thisRef.transferData(Board.thisRef.moveType,Board.thisRef.object,capture);Board.thisRef.src=Board.thisRef.dst=-1;}
Board.thisRef.object=false;},movePiece:function(i,j,mark,timerIndex){if(this.pos1D[i]!==''&&i!=j){if(this.pos1D[j]!==''&&i!=j){document.getElementById(this.pos1D[j]).style.display='none';}
document.getElementById(this.pos1D[i]).style.left=parseInt(document.getElementById('sq_'+j.toString(10)).style.left,10)+this.offset;document.getElementById(this.pos1D[i]).style.top=parseInt(document.getElementById('sq_'+j.toString(10)).style.top,10)+this.offset;if(mark){if(Board.isWhiteSquare(i)){document.getElementById('sq_'+i.toString(10)).style.backgroundImage='url(./graphics/white_marked.jpg)';}else{document.getElementById('sq_'+i.toString(10)).style.backgroundImage='url(./graphics/black_marked.jpg)';}
if(Board.isWhiteSquare(j)){document.getElementById('sq_'+j.toString(10)).style.backgroundImage='url(./graphics/white_marked.jpg)';}else{document.getElementById('sq_'+j.toString(10)).style.backgroundImage='url(./graphics/black_marked.jpg)';}
Board.thisRef.timers[timerIndex]=window.setTimeout("Board.removeMarker( "+i+", "+j+","+timerIndex+" )",3000);}
this.pos1D[j]=this.pos1D[i];this.pos1D[i]='';this.pos2D[this.row(j)][this.col(j)]=this.pos2D[this.row(i)][this.col(i)];this.pos2D[this.row(i)][this.col(i)]='';}},removePiece:function(i,mark,timerIndex){if(this.pos1D[i]!==''){document.getElementById(this.pos1D[i]).style.display='none';this.pos1D[i]=this.pos2D[this.row(i)][this.col(i)]='';if(mark){if(Board.isWhiteSquare(i)){document.getElementById('sq_'+i.toString(10)).style.backgroundImage='url(./graphics/white_marked.jpg)';}else{document.getElementById('sq_'+i.toString(10)).style.backgroundImage='url(./graphics/black_marked.jpg)';}
Board.thisRef.timers[timerIndex]=window.setTimeout("Board.removeMarker( "+i+", -1, "+timerIndex+" )",3000);}}},placePiece:function(i,which,mark,timerIndex){if(this.pos1D[i]!==''){document.getElementById(this.pos1D[i]).style.display='none';}
this.pos1D[i]=this.pos2D[this.row(i)][this.col(i)]=which;document.getElementById(this.pos1D[i]).style.display='inline';document.getElementById(this.pos1D[i]).style.left=parseInt(document.getElementById('sq_'+i.toString(10)).style.left,10)+this.offset;document.getElementById(this.pos1D[i]).style.top=parseInt(document.getElementById('sq_'+i.toString(10)).style.top,10)+this.offset;if(mark){if(Board.isWhiteSquare(i)){document.getElementById('sq_'+i.toString(10)).style.backgroundImage='url(./graphics/white_marked.jpg)';}else{document.getElementById('sq_'+i.toString(10)).style.backgroundImage='url(./graphics/black_marked.jpg)';}
Board.thisRef.timers[timerIndex]=window.setTimeout("Board.removeMarker( "+i+", -1, "+timerIndex+" )",3000);}},clearBoard:function(){for(var i=0;i<64;i++){this.removePiece(i,false,0);}},ajaxUpdate:function(request){clearInterval(this.fixer);if(g_counter>0){servermsgToWindow(document.getElementById('server_msg_inner'),'','... Success.');g_counter=0;}
var xmlDoc=request.responseXML;var error=xmlDoc.getElementsByTagName('error')[0].firstChild.data;if(_DEBUG_&&error.indexOf('error')>=0&&error.indexOf('|')==-1){_console.toConsole('board.php (1): '+error);}
if(parseInt(error)==-1){_console.toConsole('No game in database');}else if(parseInt(error)==-2){_console.toConsole('Too many games in database.');}else if(parseInt(error)==-3){_console.toConsole('Error in board.php.');}
this.ajaxHelper=null;},handleError:function(request){this.ajaxHelper=null;return;switch(request.status){case 12029:case 12030:case 12031:case 12152:case 12159:if(_DEBUG_){_console.toConsole("XMLHttpRequest error (board (1)):");_console.toConsole('rS: '+request.readyState+' s: '+request.status);}
this.ajaxHelper=new net.ContentLoader(this,server+path+"board.php","POST",["name="+this.name,"src="+this.src,"dst="+this.dst,"moveType="+this.moveType,"idNewPiece="+this.idNewPiece,"msg="+this.msg,"clock="+this.clock]);this.ajaxHelper.sendRequest();break;default:if(_DEBUG_){_console.toConsole("XMLHttpRequest error (board (2)):");_console.toConsole('rS: '+request.readyState+' s: '+request.status);}
this.ajaxHelper=null;}}};
