var PIECE_CLASS_NAMES={p:"pawn",n:"knight",b:"bishop",r:"rook",q:"queen",k:"king"};var a_h=$A($R('a','h'));var PIESE_ROM={k:'R',q:'D',b:'N',n:'C',r:'T',p:''};var ROM_STD={D:'q',T:'r',C:'n',N:'b',R:'k'};var nrMovesRasp=0;var firstMove=0;var board_invert=false;function fen_POS(piese){var ofs=0;var POS={};a_h.each(function(col,row){var id=col+(row+1);POS[id]='';});piese.scan(/[prbnqk]|[1-8]/i,function(x){if(x<='8'){ofs+=x-0;}else{var k=a_h[ofs%8]+""+(8-parseInt(ofs/8));POS[k]=""+x;ofs++;}});return POS;};var dHTMLw='<div class="dlgProm"><div class="Field Col-a"><div class="Piecew Piecep-queen" id="queen"></div></div><div class="Field Col-b"><div class="Piecew Piecep-rook" id="rook"></div></div><div class="Field Col-c"><div class="Piecew Piecep-bishop" id="bishop"></div></div><div class="Field Col-d"><div class="Piecew Piecep-knight" id="knight"></div></div></div>';var dHTMLb='<div class="dlgProm"><div class="Field Col-a"><div class="Pieceb Piecep-queen" id="queen"></div></div><div class="Field Col-b"><div class="Pieceb Piecep-rook" id="rook"></div></div><div class="Field Col-c"><div class="Pieceb Piecep-bishop" id="bishop"></div></div><div class="Field Col-d"><div class="Pieceb Piecep-knight" id="knight"></div></div></div>';var Promote=Class.create({initialize:function(stop,tomove,continuation){this.continuation=continuation;this.stop=stop;var dlgProm=tomove?new Element('div',{'class':'dlg'}).update(dHTMLb):new Element('div',{'class':'dlg'}).update(dHTMLw);stop.insert(dlgProm);this.init_pobs();},init_pobs:function(){['queen','rook','bishop','knight'].each(function(p){$(p).observe('click',function(ev){var piesa=Event.element(ev);this.continuation(p,this.stop);}.bind(this));}.bind(this));}});function upd_fisa(pd_id){new Ajax.Updater('messfct','/partide/game_g/'+pd_id,{asynchronous:true,parameters:'',evalScripts:true});};var Board=Class.create({initialize:function(qb,i_fen,alb,negru,fisa){this.init_qb(qb,alb||'Alb',negru||'Negru');this.board=$('dboard');this.tbmov=$('Moves');this.Poss=new Array();this.moves=[];this.turn2='';this.promote='';this.set_pos('',false);if(i_fen){this.en_pass=i_fen.split(/\s/g)[3];}this.init_bobs();this.init_moves(fisa||'');},init_moves:function(fisa){if(fisa){var movs=$w(fisa);for(var i=0;i<movs.length;i++){var plen=this.Poss.length;this.Poss[plen]=Object.clone(this.Poss[plen-1]);if(movs[i]=='O-O-O'){if(i&1){this.Poss[plen]['e8']='';this.Poss[plen]['a8']='';this.Poss[plen]['c8']='k';this.Poss[plen]['d8']='r';this.moves.push(['O-O-O','c8,d8']);this._addMove('O-O-O','');}else{this.Poss[plen]['e1']='';this.Poss[plen]['a1']='';this.Poss[plen]['c1']='K';this.Poss[plen]['d1']='R';this.moves.push(['O-O-O','c1,d1']);this._addMove('O-O-O','');}}else{if(movs[i]=='O-O'){if(i&1){this.Poss[plen]['e8']='';this.Poss[plen]['h8']='';this.Poss[plen]['g8']='k';this.Poss[plen]['f8']='r';this.moves.push(['O-O','g8,f8']);this._addMove('O-O','');}else{this.Poss[plen]['e1']='';this.Poss[plen]['h1']='';this.Poss[plen]['g1']='K';this.Poss[plen]['f1']='R';this.moves.push(['O-O','g1,f1']);this._addMove('O-O','');}}else{var m=movs[i].split('-');tp=this.Poss[plen][m[0]];this.Poss[plen][m[0]]='';if(tp=='P'&&m[0].charAt(1)=='5'&&m[1].charAt(0)!=m[0].charAt(0)&&!this.Poss[plen][m[1]]){this.Poss[plen][m[1].charAt(0)+'5']='';}else{if(tp=='p'&&m[0].charAt(1)=='4'&&m[1].charAt(0)!=m[0].charAt(0)&&!this.Poss[plen][m[1]]){this.Poss[plen][m[1].charAt(0)+'4']='';}}var tt=m[1];if(tt.length==3){tp=tt.substr(2,1);tt=tt.substr(0,2);tp=ROM_STD[tp];if(tt.charAt(1)=='8')tp=tp.toUpperCase();}this.Poss[plen][tt]=tp;this.moves.push([m[0],m[1]]);this._addMove(m[0],m[1]);}}}var move=this.Poss.length-1;this.to_move=move&1?true:false;this.init_board();this._set_pos(move);this.init_bobs();}},init_qb:function(qb,alb,negru){var qboard=$(qb);var obj=new Element('div',{'class':'BeforeBoard'}).update('<button id="jinv"><b>Invers</b></button>   <button id="jund" title="Retrage ultima mutare">Retrage</button>');qboard.insert(obj);qboard.insert('<div class="chessBoard"><div id="dboard"></div></div>');var obj=new Element('div',{'class':'dSheet','id':'dSheet'}).update('<div style="text-align:center;"><img src="/static/arrow-left.gif" id="prevm"  style="cursor:pointer"/>   <img src="/static/arrow-right.gif" id="nextm" style="cursor:pointer"/>   <button id="reia"><b>Reia</b></button></div><table id="twhbl"><tr><th>'+alb+'</th><th>—</th><th>'+negru+'</th></tr></table><div class="Sheet"><table id="Moves"><tr><td></td><td></td><td></td></tr></table></div><div id="racere" style="margin-top:10px;"><button id="toFEN"><b>Răspunde</b></button>  <button id="cedez">Cedează</button>  <button id="prdraw">Remiză</button></div>');qboard.insert(obj);$('cedez').observe('click',function(){var cfrm=window.confirm('Confirmaţi cedarea partidei?');if(cfrm){var wh=$('twhbl').rows[0].cells[0].innerHTML,bl=$('twhbl').rows[0].cells[2].innerHTML;new Ajax.Updater('messp','/partide/game_resign',{asynchronous:true,parameters:{alb:wh,negru:bl},evalScripts:true});}});$('prdraw').observe('click',function(){var cfrm=window.confirm('Confirmaţi propunerea/acceptarea Remizei?');if(cfrm){var wh=$('twhbl').rows[0].cells[0].innerHTML,bl=$('twhbl').rows[0].cells[2].innerHTML;new Ajax.Updater('messp','/partide/game_draw',{asynchronous:true,parameters:{alb:wh,negru:bl},evalScripts:true});}});$('jinv').observe('click',function(){var cont=$('dboard').down();board_invert=!cont.hasClassName('reverseFields');if(board_invert)cont.addClassName('reverseFields');else cont.removeClassName('reverseFields');$('At-jos','At-sus').invoke('toggle');}.bind(this));$('jund').observe('click',function(){var tbm=this.tbmov;if(this.moves.length>0){this.Poss.pop();var row=tbm.rows[tbm.rows.length-1];if(row.cells.length==3){row.deleteCell(2);}else{tbm.deleteRow(tbm.rows.length-1);}var m=this.moves.pop();if(/O-O/.test(m[0])){var mm=m[1].split(',');for(var i=0;i<=1;i++){this.board.down('div[chessfield="'+mm[i]+'"]').down().remove();}switch(mm[0]){case 'g1':this.castle='K'+this.castle;break;case 'g8':this.castle='k'+this.castle;break;case 'c1':this.castle='Q'+this.castle;break;case 'c8':this.castle='q'+this.castle;break;}}else{this.board.down('div[chessfield="'+m[1]+'"]').down().remove();}this._set_pos(this.Poss.length-1);$('At-jos','At-sus').invoke('toggle');this.to_move=!this.to_move}}.bind(this));$('Moves').observe("click",function(ev){var trw=ev.element();if(trw.hasClassName('whm')||trw.hasClassName('blm')){var mov=trw.up().cells[0].innerHTML;var move=(trw.className=='whm')?2*mov-1:2*mov;$$('.hghlm').each(function(h){h.removeClassName('hghlm');});trw.addClassName('hghlm');this.to_move=(move%2)?true:false;this.init_board();this._set_pos(move);}}.bind(this));$('nextm').observe("click",function(){var trw=$$('.hghlm').find(function(h){return true;});if(trw&&(trw.next()||trw.up().next())){$$('.hghlm').invoke('removeClassName','hghlm');var mov=trw.up().cells[0].innerHTML;var move=2*mov;if(trw.next()){trw.next().addClassName('hghlm');this.to_move=false;this.init_board();this._set_pos(move);}else{if(trw.up().next()){$(trw.up().next().cells[1]).addClassName('hghlm');var mov=$(trw.up().next().cells[0]).innerHTML;var move=2*mov-1;this.to_move=true;this.init_board();this._set_pos(move);}}}}.bind(this));$('prevm').observe("click",function(){var trw=$$('.hghlm').find(function(h){return true;});if(trw&&((trw.previous()&&trw.previous().hasClassName('whm'))||(trw.up().previous()&&$(trw.up().previous().cells[2]).hasClassName('blm')))){$$('.hghlm').invoke('removeClassName','hghlm');var mov=trw.up().cells[0].innerHTML;var move=2*mov-1;if(trw.previous()&&trw.previous().hasClassName('whm')){trw.previous().addClassName('hghlm');this.to_move=true;this.init_board();this._set_pos(move);}else{if(trw.up().previous()){trw.up().previous().cells[2].addClassName('hghlm');var mov=trw.up().previous().cells[0].innerHTML;var move=2*mov;this.to_move=false;this.init_board();this._set_pos(move);}}}}.bind(this));$('reia').observe("click",function(){var trw=$$('.hghlm').find(function(h){return true;});if(trw){$$('.hghlm').invoke('removeClassName','hghlm');}var move=this.Poss.length-1;this.to_move=move&1?true:false;this.init_board();this._set_pos(move);this.init_bobs();}.bind(this));$('toFEN').observe("click",function(){var wh=$('twhbl').rows[0].cells[0].innerHTML,bl=$('twhbl').rows[0].cells[2].innerHTML;if(firstMove){var fen=this._toFEN(this.Poss[1]);var mc=this.moves[0];var movs=mc[0]+'-'+mc[1];firstMove=0;new Ajax.Updater('messp','/partide/game',{asynchronous:true,parameters:{alb:wh,negru:bl,fen:fen,movs:movs},evalScripts:true});}else{if(nrMovesRasp>0&&this.Poss.length>nrMovesRasp+1){var fen=this._toFEN(this.Poss[nrMovesRasp+1]);var movs='';for(var i=0;i<=nrMovesRasp;i++){var mc=this.moves[i];if(/O-O-O/.test(mc[0])){movs+='O-O-O'+' ';}else{if(/O-O/.test(mc[0])){movs+='O-O'+' ';}else{movs+=mc[0]+'-'+mc[1]+' ';}}}nrMovesRasp=0;new Ajax.Updater('messp','/partide/game',{asynchronous:true,parameters:{alb:wh,negru:bl,fen:fen,movs:movs},evalScripts:true});}}}.bind(this));},init_board:function(){var flip=board_invert?" reverseFields":"";var html=["<div class='chessFields "+flip+"'>"];for(var row=0;row<8;row++){for(var col=0;col<8;col++){var colID=String.fromCharCode(97+col);var rowID=row+1;var id=colID+rowID;var fieldColor=(row+col)&1?"whiteField":"blackField";html.push("<div chessField='",id,"' class='Field ",id," Row-",rowID," Col-",colID," ",fieldColor,"'></div>");}}for(var i=0;i<8;i++){rowID=i+1;colID=String.fromCharCode(97+i);html.push("<div class='Notation-Row Row-",rowID,"'>",rowID,"</div>");html.push("<div class='Notation-Col Col-",colID,"'>",colID,"</div>");}html.push("<div class='At-jos' id='At-jos' style='display:block'><img src='/static/class.png'></div>");html.push("<div class='At-sus' id='At-sus' style='display:none'><img src='/static/class.png'></div>");html.push("</div>");this.board.innerHTML=html.join("");if(this.to_move&&!board_invert)$('At-sus','At-jos').invoke('toggle');},set_pos:function(fen){if(fen=='')fen='rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1';var recs=fen.split(/\s/g);var piese=recs[0];this.to_move=(recs[1]=='w')?false:true;this.castle=recs[2].replace("-","");this.en_pass=recs[3];this.en_pass_kill='';this.init_board();this.Poss[0]=fen_POS(piese);this._set_pos(0);},_set_pos:function(i){var cont=this.board.firstChild;for(var div=cont.firstChild;div;div=div.nextSibling){var fieldID=div.getAttribute('chessField');var piece=this.Poss[i][fieldID];if(piece){var color=piece.toUpperCase()==piece;var color=color?"white":"black";var pieceClass="piece piece-"+color+"-"+PIECE_CLASS_NAMES[piece.toLowerCase()];div.innerHTML="<div class='"+pieceClass+"'></div>";if(piece=='K')this.w_kg=fieldID;if(piece=='k')this.b_kg=fieldID;}}},init_bobs:function(){var table=this.board.down();var first_click=true;var start=null,stop=null;var doProm=function(tp,stop){var fop=stop.className.split(" ")[1];var pwb=tp.charAt(0);if(tp=='knight')pwb='n';if(!this.to_move)pwb=pwb.toUpperCase();this.Poss[this.Poss.length-1][fop]=pwb;var m=this.moves.pop();m[1]=m[1]+PIESE_ROM[pwb.toLowerCase()];this.moves.push([m[0],m[1]]);this._addMove(m[0],m[1]);var bw=this.to_move?"black-":"white-";stop.update('<div class="piece piece-'+bw+tp+'"></div>');this.to_move=!this.to_move;first_click=true;$('At-jos','At-sus').invoke('toggle');}.bind(this);Event.observe(table,"click",function(ev){var el=ev.element();if(/piece/.test(el.className)&&!this.promote){var color=el.className.split(/-/)[1];var to_move=this.to_move?"black":"white";var where=el.up();if(to_move==color&&first_click){start=where;first_click=false;}else if(!first_click&&start!=where&&to_move!=color){stop=where;if(/piece/.test(stop.className))stop=stop.up();first_click=true;}}else if(/Field/.test(el.className)&&!first_click){stop=el;first_click=true;}if(start&&stop){if(this.validate(start,stop)){stop.update(start.down().remove());if(this.promote){var prom=new Promote(stop,this.to_move,doProm);this.promote='';start=stop=null;}else{var ek=this.en_pass_kill;if(ek){table.down('div[chessfield="'+ek+'"]').down().remove();this.en_pass_kill='';}ek=this.turn2;if(ek){var t2=ek.split('-');var st2=table.down('div[chessfield="'+t2[0]+'"]').down();var tt2=table.down('div[chessfield="'+t2[1]+'"]');tt2.update(st2.remove());this.turn2='';}this.to_move=!this.to_move;first_click=true;start=stop=null;var m=this.moves[this.moves.length-1];this._addMove(m[0],m[1]);}}}}.bind(this));table.observe('mousedown',this.sqMouseDown);table.observe('mouseup',this.sqMouseUp);},sqMouseDown:function(ev){ev.element().addClassName('highlight');},sqMouseUp:function(ev){ev.element().removeClassName('highlight');},validate:function(start,stop){var fst=start.className.split(" ")[1];var fop=stop.className.split(" ")[1];var plen=this.Poss.length;var pos=this.Poss[plen-1];var tp=pos[fst];if(pos[fop]&&((tp<'a'&&pos[fop]<'a')||(tp>'a'&&pos[fop]>'a')))return false;if(tp=='P'||tp=='p'){if((fst.charAt(0)==fop.charAt(0))&&pos[fop])return false;switch(tp){case "P":if(whi_pawn[fst].indexOf(fop)==-1)return false;if((fst.charAt(0)!=fop.charAt(0))&&(!pos[fop])&&(this.en_pass!=fop))return false;if(/8/.test(fop)){this.promote=fst+"-"+fop;}else{if(/2/.test(fst)&&/4/.test(fop)){var ep=fst.charAt(0)+'3';if(pos[ep])return false;var icp=fst.charCodeAt(0)-97;var scp='',dcp='';if(icp>0)scp=a_h[icp-1];if(icp<7)dcp=a_h[icp+1];if(scp&&(pos[scp+'4']=='p')||dcp&&(pos[dcp+'4']=='p')){this.en_pass=ep;}else{this.en_pass='-';}}else{if(/5/.test(fst)&&this.en_pass==fop){this.en_pass_kill=fop.charAt(0)+'5';this.en_pass='-';}}}break;case "p":if(bla_pawn[fst].indexOf(fop)==-1)return false;if((fst.charAt(0)!=fop.charAt(0))&&(!pos[fop])&&(this.en_pass!=fop))return false;if(/1/.test(fop)){this.promote=fst+"-"+fop;}else{if(/7/.test(fst)&&/5/.test(fop)){var ep=fst.charAt(0)+'6';if(pos[ep])return false;var icp=fst.charCodeAt(0)-97;var scp='',dcp='';if(icp>0)scp=a_h[icp-1];if(icp<7)dcp=a_h[icp+1];if(scp&&(pos[scp+'5']=='P')||dcp&&(pos[dcp+'5']=='P')){this.en_pass=ep;}else{this.en_pass='-';}}else{if(/4/.test(fst)&&this.en_pass==fop){this.en_pass_kill=fop.charAt(0)+'4';this.en_pass='-';}}}break;}}else{this.en_pass_kill='';switch(tp.toUpperCase()){case "N":if(Knight_Moves[fst].indexOf(fop)==-1)return false;break;case "B":if(Bishop_Moves[fst].indexOf(fop)==-1)return false;var c1=fst.charAt(0),c2=fop.charAt(0),r1=fst.charAt(1),r2=fop.charAt(1);var col1=c1<c2?c1:c2;var col2=c1<c2?c2:c1;var row1=r1<r2?r1:r2;var row2=r1<r2?r2:r1;var dd=Bishop_Moves[fst].findAll(function(sq){var c=sq.charAt(0),r=sq.charAt(1);return pos[sq]&&c>col1&&c<col2&&r>row1&&r<row2;});if(dd.length>0)return false;break;case "Q":if(Queen_Moves[fst].indexOf(fop)==-1)return false;var c1=fst.charAt(0),c2=fop.charAt(0),r1=fst.charAt(1),r2=fop.charAt(1);if(!(c1==c2||r1==r2)){var col1=c1<c2?c1:c2;var col2=c1<c2?c2:c1;var row1=r1<r2?r1:r2;var row2=r1<r2?r2:r1;var dd=Queen_Moves[fst].findAll(function(sq){var c=sq.charAt(0),r=sq.charAt(1);return pos[sq]&&c>col1&&c<col2&&r>row1&&r<row2;});if(dd.length>0)return false;}else{if(c1==c2){var row1=r1<r2?r1:r2;var row2=r1<r2?r2:r1;var dd=Queen_Moves[fst].findAll(function(sq){var c=sq.charAt(0),r=sq.charAt(1);return pos[sq]&&c==c1&&r>row1&&r<row2;});if(dd.length>0)return false;}else{var col1=c1<c2?c1:c2;var col2=c1<c2?c2:c1;var dd=Queen_Moves[fst].findAll(function(sq){var c=sq.charAt(0),r=sq.charAt(1);return pos[sq]&&r==r1&&c>col1&&c<col2;});if(dd.length>0)return false;}}break;case "R":if(Rook_Moves[fst].indexOf(fop)==-1)return false;var c1=fst.charAt(0),c2=fop.charAt(0),r1=fst.charAt(1),r2=fop.charAt(1);if(c1==c2){var row1=r1,row2=r2;if(r1>r2){row1=r2;row2=r1;}var dd=Rook_Moves[fst].findAll(function(sq){var c=sq.charAt(0),r=sq.charAt(1);return pos[sq]&&c==c1&&r>row1&&r<row2;});if(dd.length>0)return false;}else{var col1=c1,col2=c2;if(c1>c2){col1=c2;col2=c1;}var dd=Rook_Moves[fst].findAll(function(sq){var c=sq.charAt(0),r=sq.charAt(1);return pos[sq]&&r==r1&&c>col1&&c<col2;});if(dd.length>0)return false;}if(tp=='R'){if(/K/.test(this.castle)&&fst=='h1'){this.castle=this.castle.replace(/K/,'');}else{if(fst=='a1'&&/Q/.test(this.castle)){this.castle=this.castle.replace(/Q/,'');}}}else{if(fst=='h8'&&/k/.test(this.castle)){this.castle=this.castle.replace(/k/,'');}else{if(fst=='a8'&&/q/.test(this.castle)){this.castle=this.castle.replace(/q/,'');}}}break;case "K":if(this._check(fop))return false;if(tp=='K'){if(King_Moves[fst].indexOf(fop)==-1&&(fst!='e1'||(fop!='g1'&&fop!='c1')))return false;if(fst=='e1'&&fop=='g1'&&(!(/K/.test(this.castle))||this._check('')))return false;if(fst=='e1'&&fop=='c1'&&(!(/Q/.test(this.castle))||this._check('')))return false;this.w_kg=fop;}else{if(King_Moves[fst].indexOf(fop)==-1&&(fst!='e8'||(fop!='g8'&&fop!='c8')))return false;if(fst=='e8'&&fop=='g8'&&(!(/k/.test(this.castle))||this._check('')))return false;if(fst=='e8'&&fop=='c8'&&(!(/q/.test(this.castle))||this._check('')))return false;this.b_kg=fop;}break;}}this.Poss[plen]=Object.clone(this.Poss[plen-1]);this.Poss[plen][fst]='';this.Poss[plen][fop]=tp;if(this.en_pass_kill){this.Poss[plen][this.en_pass_kill]='';}if(this._check('')){this.Poss.pop();return false;}if(tp=='K'&&this.castle){if(fop=='g1'&&fst=='e1'){if(this._check('f1'))return false;this.Poss[plen]['f1']='R';this.Poss[plen]['h1']='';this.castle=this.castle.replace(/[K|Q]/g,'');this.turn2='h1-f1';fst='O-O';fop='g1,f1';}else{if(fop=='c1'&&fst=='e1'){if(this._check('d1'))return false;this.Poss[plen]['d1']='R';this.Poss[plen]['a1']='';this.castle=this.castle.replace(/[K|Q]/g,'');this.turn2='a1-d1';fst='O-O-O';fop='c1,d1';}}}else{if(tp=='k'&&this.castle){if(fop=='g8'&&fst=='e8'){if(this._check('f8'))return false;this.Poss[plen]['f8']='r';this.Poss[plen]['h8']='';this.castle=this.castle.replace(/[k|q]/g,'');this.turn2='h8-f8';fst='O-O';fop='g8,f8';}else{if(fop=='c8'&&fst=='e8'){if(this._check('d8'))return false;this.Poss[plen]['d8']='r';this.Poss[plen]['a8']='';this.castle=this.castle.replace(/[k|q]/g,'');this.turn2='a8-d8';fst='O-O-O';fop='c8,d8';}}}}this.moves.push([fst,fop]);if(!this.promote){$('At-jos','At-sus').invoke('toggle');}return true;},_check:function(field){var pos=this.Poss[this.Poss.length-1];var kg=field||this.w_kg;var _q='q',_r='r',_b='b',_n='n';if(this.to_move){kg=field||this.b_kg;_q='Q';_r='R';_b='B';_n='N';}var dd=Knight_Moves[kg].findAll(function(sq){return pos[sq]==_n;});if(dd.length>0)return true;var col=a_h.indexOf(kg.charAt(0)),row=kg.charAt(1);for(var c=col-1;c>=0;--c){var p=pos[a_h[c]+row];if(p&&p!=_r&&p!=_q)break;if(p==_r||p==_q)return true;}for(var c=col+1;c<=7;c++){var p=pos[a_h[c]+row];if(p&&p!=_r&&p!=_q)break;if(p==_r||p==_q)return true;}for(var r=row-1;r>=1;--r){var p=pos[a_h[col]+r];if(p&&p!=_r&&p!=_q)break;if(p==_r||p==_q)return true;}for(var r=parseInt(row)+1;r<=8;r++){var p=pos[a_h[col]+r];if(p&&p!=_r&&p!=_q)break;if(p==_r||p==_q)return true;}var r=parseInt(row)+1,c=col+1;while(r<=8&&c<=7){var p=pos[a_h[c]+r];if(p&&p!=_b&&p!=_q)break;if(p==_b||p==_q)return true;r++;c++;}r=row-1;c=col-1;while(r>=1&&c>=0){var p=pos[a_h[c]+r];if(p&&p!=_b&&p!=_q)break;if(p==_b||p==_q)return true;r--;c--;}var r=parseInt(row)+1,c=col-1;while(r<=8&&c>=0){var p=pos[a_h[c]+r];if(p&&p!=_b&&p!=_q)break;if(p==_b||p==_q)return true;r++;c--;}r=row-1;c=col+1;while(r>=1&&c<=7){var p=pos[a_h[c]+r];if(p&&p!=_b&&p!=_q)break;if(p==_b||p==_q)return true;r--;c++;}if(!this.to_move){r=parseInt(row)+1;c=col;if(r<=8&&c>=1&&pos[a_h[c-1]+r]=='p')return true;if(r<=8&&c<7&&pos[a_h[c+1]+r]=='p')return true;}else{r=parseInt(row)-1;c=col;if(r>=1&&c>=1&&pos[a_h[c-1]+r]=='P')return true;if(r>=1&&c<7&&pos[a_h[c+1]+r]=='P')return true;}return false;},_addMove:function(fst,fop){var table=$('Moves');var row,cls;var ps=this.Poss[this.Poss.length-2][fst];var r,t;if(table.rows.length==1||table.rows[table.rows.length-1].cells.length==3){var len=table.rows.length;r=table.insertRow(-1);t=r.insertCell(0);t.className="num";t.innerHTML=''+len;t=r.insertCell(1);t.className="whm";if(/O/.test(fst)){t.innerHTML=''+fst;}else{var tt='';if(fop.length==3){tt=fop.substr(2,1);fop=fop.substr(0,2);}t.innerHTML="<b>"+PIESE_ROM[ps.toLowerCase()]+"</b>"+fst+'-'+fop+"<b>"+tt+"</b>";}}else{t=table.rows[table.rows.length-1].insertCell(2);t.className="blm";if(/O/.test(fst)){t.innerHTML=''+fst;}else{var tt='';if(fop.length==3){tt=fop.substr(2,1);fop=fop.substr(0,2);}t.innerHTML="<b>"+PIESE_ROM[ps.toLowerCase()]+"</b>"+fst+"-"+fop+"<b>"+tt+"</b>";}}},_toFEN:function(pos){var a=[];for(var row=8;row>0;row--){var str="",empty=0;for(var col=0;col<8;col++){var p=pos[a_h[col]+row];if(p){if(empty)str+=empty;empty=0;str+=p;}else{empty++;}}if(empty)str+=empty;a.push(str);}var spos=a.join("/");a=[spos];a[1]=this.to_move?"b":"w";a[2]=this.castle||"-";a[3]=this.en_pass||"-";a[4]=0;a[5]=parseInt((this.moves.length+1)/2);return a.join(" ");}});