var iChessVersion="1.0";var PgnFileName="pgn/ichess.pgn";var PostingFileName="pgn/postings.html" var AddPostsFileName="pgn/ichess.php" var UpdateInterval=5;var InitialClock="1:30:00";var IsDemo=0;var AllowPostings=1;var PieceName="KQRBNP";var ShowPieceName="KDTLSB";var Scale=0.6;var Rows=1;var Cols=2;var AlternateColors='';var DisplayPostings="b";var PostingHeight=10;var Author=" Rev:"+iChessVersion+" (c) Felix Fuernhammer iChess.de";var DisableURI=false;var ScrollIntoView=false;var TimeCountDown=true;var OneMovePerLine=false;var NoFooter=false;var NoButtons=false;var NoGameSelectForm=false;var CookiesAllowed=false;var FontSize=12;var Size=56;var TimeOut=400;var gImagePath="png/";var SkipRefresh=0;var IsLoading=0;var gImagePathOld="-";var gPostingName="Name";var gLastGameSelCont=0;var MaxMove=300,isInit=false,isMoving=false,isCalculating=false,i;var King=0,Queen=1,Rook=2,Bishop=3,Night=4,Pawn=5,OOO=6,OO=7,NullM=8;var ShowTimeInPGN=false;var CorrectPadding=0;var gPics=new Array('1x1.png','k.png','q.png','r.png','b.png','n.png','p.png');var isIE=CheckIE();PieceCode=new Array(6);for(i=0;i<6;i++)PieceCode[i]=PieceName.charCodeAt(i);PgnMoveText=new Array();var MvCount=new Array();var LastMove=new Array();var MvTyp=new Array();var IsLive=new Array();var Brd=new Array();var Tags=new Array();var Piece=new Array();var PosX=new Array();var PosY=new Array();var PMovs=new Array();var HTime=new Array();var HPiece=new Array();var HTyp=new Array();var HPosX=new Array();var HPosY=new Array();var ActiveGames=new Array();var PostingFeedback="Post sent, please be patient";var textPosts=new Array("Posting deactivated!","Post Comment (viewable by everybody)!","Posts selectively enabled!","Send Post!","Currently no postings!");function sign(nn){if(nn>0)return(1);if(nn<0)return(-1);return(0);} function EvalUrlString(){var entry,llist,ii,jj,wert,url=window.location.search;if((DisableURI)||(url==""))return;url=url.substring(1,url.length);url=url.replace(/\|/g,'/');url=url.replace(/%7C/g,'/');url=unescape(url);llist=url.split("&");for(ii=0;ii=0)return ActGame;return-1;} function WriteCookie(){if(document.cookie){var cookie=document.cookie.split(";");var a=new Date();a.setTime(a.getTime()-(1000*60*60));document.cookie=cookie[0]+'; expires='+a.toGMTString()+';';} cookie="Selection=";for(var BNr=0;BNr<(Rows*Cols);BNr++)cookie+=GetActiveGame(BNr)+",";var a=new Date();a=new Date(a.getTime()+1000*60*60);var x=cookie;document.cookie=x;} function GetActiveGame(BNr){var sel=ReadCookie(BNr);if((sel<0)||(sel>=PgnMoveText.length)){if((ActiveGames)&&(ActiveGames.length>BNr))sel=ActiveGames[BNr];else{var x=document.getElementById('GameSel-'+BNr);if(x){var sel=x.selectedIndex;}else{sel=BNr;};}} return(sel%PgnMoveText.length);} function RotateBoard(BNr,Refresh){with(document){var selObj=getElementById('isRotated-'+BNr),rot=GetIsRotated(BNr),bl,blObj,wh,whObj;if(selObj)selObj.value=(1-rot);blObj=getElementById('Black-'+BNr);if(!blObj)return;whObj=getElementById('White-'+BNr);if(!whObj)return;bl=blObj.style.backgroundColor;wh=whObj.style.backgroundColor;with(blObj.style){backgroundColor=wh;color=bl;} with(whObj.style){backgroundColor=bl;color=wh;} with(getElementById('TimeBlack-'+BNr).style){backgroundColor=wh;color=bl;} with(getElementById('TimeWhite-'+BNr).style){backgroundColor=bl;color=wh;}} if(Refresh)RefreshBoard(BNr);} function CheckIE(){var arVersion=navigator.appVersion.split("MSIE");var version=parseFloat(arVersion[1]);if(isNaN(version))return(0);else return(version);} function ExtendArrays(BNr){var i,j;if(Brd.length>BNr)return;Brd.push(new Array(8));i=Brd.length-1;for(j=0;j<8;j++)Brd[i][j]=new Array(8);MvCount.push(0);LastMove.push(0);MvTyp.push(0);IsLive.push(1);Tags.push(new Array('White','Black','...'));Piece.push(new Array(new Array(16),new Array(16)));PosX.push(new Array(new Array(16),new Array(16)));PosY.push(new Array(new Array(16),new Array(16)));PMovs.push(new Array(new Array(16),new Array(16)));HTime.push(new Array(MaxMove));HPiece.push(new Array(new Array(MaxMove),new Array(MaxMove)));HTyp.push(new Array(new Array(MaxMove),new Array(MaxMove)));HPosX.push(new Array(new Array(MaxMove),new Array(MaxMove)));HPosY.push(new Array(new Array(MaxMove),new Array(MaxMove)));} function GetFontSize(){var obj,i,j,l,FS=FontSize;with(document){for(i=0;i0)obj=styleSheets[i].rules;else obj=styleSheets[i].cssRules;for(j=0;j");write("");write("");write("");write("");write("
"+textPosts[4]+"
");}} function AddPosting(){var Name=document.getElementById("Name").value;var Post=document.getElementById("Post").value;if(Post=="")return;if(AllowPostings==0){document.getElementById("Post").value=textPosts[AllowPostings];return;} var FName=PgnFileName.split(".")[0];var FName=FName+".php";with(document){var Name=getElementById("Name").value;var Post=getElementById("Post").value;getElementById("Post").value=PostingFeedback;getHttpRequest(AddPostsFileName,"?Name="+escape(Name)+"&Post="+escape(Post));getHttpRequest(PostingFileName,"?T="+Math.random());}} function Check4AlternateColors(){var curcol;var acols=AlternateColors.split(',');for(var BNr=0;BNr<(Rows*Cols);BNr++){if(acols.length>BNr){curcol=GetIsRotated(BNr);if(curcol==(1-acols[BNr]))RotateBoard(BNr,0);}}} function iChess(){var ii,jj,BNr;GetFontSize();EvalUrlString();SetFontSize();if(typeof PresetGames!="undefined")ActiveGames=PresetGames.split(",");if((Rows*Cols)==1)ScrollIntoView=true;else ScrollIntoView=false;with(document){write("
");write("
");if(DisplayPostings=='t'){DispPostings(PostingHeight+'em');write("
");WriteGames();}else if(DisplayPostings=='l'){DispPostings('100%');write("");WriteGames();}else if(DisplayPostings=='b'){WriteGames();write("
");DispPostings(PostingHeight+'ex');}else if(DisplayPostings=='r'){WriteGames();write("");DispPostings('100%');}else{WriteGames();} write("
");write("");write("");write("
");} if(AlternateColors)Check4AlternateColors();setTimeout("UpdateFile(1)",TimeOut);} function WriteGames(){with(document){write("");for(var ii=0;ii");for(var jj=0;jj");BNr=ii*Cols+jj;ExtendArrays(BNr);WriteGame(BNr);write("");} write("");} if(!NoFooter){write("");} write("
");WriteFooter();write("
");}} function WriteGame(BNr){var BlWhW="width:"+Math.round(5*Size*Scale)+"px; ";var BlWhT="width:"+Math.round(2.5*Size*Scale)+"px; ";var padd="padding:"+Math.round(FontSize/3)+"px; ";var H0="height:"+Math.round(FontSize*7/3)+"px; ";var H1="height:"+Math.round(FontSize*2.25)+"px; ";var H2="height:"+(Math.round(8.5*Size*Scale+4.5*FontSize))+"px; ";var W1="width:"+(Math.round(4*Size*Scale+FontSize*2/3))+"px; ";var FS="font-size:"+Math.round(1.1*FontSize)+"px; ";var FS1="font-size:"+Math.round(FontSize)+"px; ";var top="vertical-align:top; ";var s="style='"+(top+W1+H1)+"'";with(document){write("");write("");write("");write("
");write("");write("");write("");write("");write("");write("");write("");write("
"+Tags[BNr]["Black"]+"
"+InitialClock+"
");WriteBoard(BNr);write("
"+Tags[BNr]["White"]+"
"+InitialClock+"
");WriteButtons(BNr);write("
");write("
");}} function WriteBoard(BNr){var siz=Math.round(FontSize*0.8),siz2=Math.round(FontSize*0.5),ii,bw=0;siz3=Math.round(Scale*Size)-bw;var Styl="onMouseDown='RotateBoard("+BNr+",1)' style='font-size:"+siz+"px; vertical-align:middle; text-align:center; border-width:"+bw+"px; border-style:none; ";var Styl1=" style='padding:1px; vertical-align:middle; text-align:center; border-width:0px; border-style:solid; border-color:black;' ";var Styl2=" style='height:"+siz+"px; width:"+siz+"px; border-width:0px;border-style:solid; background-color:black;' ";with(document){write("");for(ii=0;ii<8;ii++)write("");for(ii=0;ii<8;ii++)write("");write("
");WriteBoardTab(BNr);write("
");write("");write("
");}} function WriteBoardTab(BNr){var pic=gImagePath+gPics[0],i,j,k;var i,j,k,siz=Math.round(Scale*Size);with(document){write("");for(i=0;i<8;i++){k=8*i;write("");for(j=0;j<8;j++){if((i%2+j%2)==1)write("");} write("");} write("
");else write("");write("") write("
")}} function WriteButtons(BNr){var ss=Math.round(Size*Scale);var styl=" style='width:"+ss+"px; font-size:"+FontSize+"px;' ";var bIsLive="live!";if(UpdateInterval==0)bIsLive=">I";with(document){if(!NoButtons){write("");write("");write("
");write("");write("");write("");write("");write("");write("");write("
");write("
");} write("");write("");write("");}} function SetLiveButton(BNr,live){IsLive[BNr]=live;var lv="live!";if((UpdateInterval==0)||(live==0))lv=">I";with(document){var obj=getElementById('btnLive'+BNr);if(obj){if((live==0)&&(UpdateInterval>0))obj.style.background='#FFCF90' else obj.style.background=getElementById('btnInit'+BNr).style.background;obj.value=lv;}}} function ButtonAction(BNr,no){switch(no){case 0:MoveBack(BNr,MaxMove);SetLiveButton(BNr,0);break;case 1:MoveBack(BNr,1);SetLiveButton(BNr,0);break;case 2:MoveForward(BNr,1);SetLiveButton(BNr,0);break;default:MoveForward(BNr,MaxMove);SetLiveButton(BNr,1);break;}} function WriteTime(BNr,rot){var w=InitialClock,b=InitialClock;var mv=MvCount[BNr]-1;mv_1=mv-1;if(HTime[BNr][mv])w=HTime[BNr][mv];else if(mv>0)w=" ";if(HTime[BNr][mv_1])b=HTime[BNr][mv_1];else if(mv>0)b=" ";if((MvCount[BNr]+rot)%2==1){TimeWh=w;TimeBl=b;}else{TimeBl=w;TimeWh=b;} GameNr=GetActiveGame(BNr);if((Tags[GameNr]['ActTime'])&&IsLive[BNr]){var t=Tags[GameNr]['ActTime'] if(mv%2){TimeWh=t}else{TimeBl=t;}} var ID='TimeWhite-'+BNr;with(document){if(getElementById&&(getElementById(ID))){if(rot)getElementById(ID).className="BW Black Time";else getElementById(ID).className="BW White Time";getElementById(ID).innerHTML=TimeWh;} ID='TimeBlack-'+BNr;if(getElementById&&(getElementById(ID))){if(rot)getElementById(ID).className="BW White Time";else getElementById(ID).className="BW Black Time";getElementById(ID).innerHTML=TimeBl;}}} function WritePlayer(ID,Pl,ToolTip,rot){with(document){if(getElementById&&(getElementById(ID))){if(rot)getElementById(ID).className="BW Black";else getElementById(ID).className="BW White";getElementById(ID).innerHTML='
'+Pl+'
';}}} function WriteBoardNumbers(BNr,rot){var i,j;with(document){if((!getElementById)||(!getElementById('no_col_'+BNr+'-0')))return;for(i=0;i<8;i++){j=i*(1-rot)+(7-i)*rot;getElementById('no_col_'+BNr+'-'+i).innerHTML=8-j;getElementById('no_row_'+BNr+'-'+i).innerHTML='abcdefgh'.charAt(j);}}} function GetToolTips(BNr,Player){if(Tags[BNr][Player+"Elo"])return"Elo:"+Tags[BNr][Player+"Elo"];return"Elo:nicht übertragen!";} function WriteInfos(BNr,rot){var sel=GetActiveGame(BNr);var Pl=new Array("White","Black");WritePlayer("White-"+BNr,Tags[sel][Pl[rot]],GetToolTips(sel,"White"),rot);WritePlayer("Black-"+BNr,Tags[sel][Pl[1-rot]],GetToolTips(sel,"Black"),1-rot);WriteTime(BNr,rot);WriteBoardNumbers(BNr,rot);} function WriteFooter(){with(document){write("");write("");write("");write("");write("");write("");write("");}} function WriteSelGames(){if(!document.getElementById)return;var padd=Math.round(FontSize/3);var Styl1=" style='font-size:"+FontSize+"px; width:100%; padding:"+padd+"px; vertical-align:middle; ' ";var NrOfGames=PgnMoveText.length;if((NrOfGames==1)||(NoGameSelectForm))return;var GameSelForm="",ii,BNr,GameSelected;for(BNr=0;BNr<(Cols*Rows);BNr++){if(BNr>=NrOfGames)break;GameSelected=GetActiveGame(BNr);GameSelForm+="
";var len=GameSelForm.length;if(len==gLastGameSelCont){return;} var ID=document.getElementById('IDGameSel-'+BNr);if(ID){if(ID.innerHTML!=GameSelForm)ID.innerHTML=GameSelForm;} GameSelForm="";} gLastGameSelCont=len;var W1=4*Size*Scale+FontSize;var x=document.getElementsByTagName("GameSel");for(var i=0;i0));jj++){MvCount[BNr]--;Mv=MvCount[BNr];MvTyp[BNr]=1-MvTyp[BNr];bw=MvTyp[BNr];ii=HPiece[BNr][1][Mv];if((0<=ii)&&(ii<16)){RestorePos(BNr,ii,bw,Mv,1);} ii=HPiece[BNr][0][Mv];RestorePos(BNr,ii,bw,Mv,0);RestorePiece(BNr,ii,bw,Mv,0);ii=HPiece[BNr][1][Mv];if((0<=ii)&&(ii<16)){RestorePiece(BNr,ii,bw,Mv,1)} ii-=16;if(0<=ii){RestorePiece(BNr,ii,1-bw,Mv,1) hx1=HPosX[BNr][1][Mv];hy1=HPosY[BNr][1][Mv];Brd[BNr][hx1][hy1]=(HTyp[BNr][1][Mv]+1)*(2*bw-1);}} if(isCalculating){isMoving=false;return;} RefreshBoard(BNr);isMoving=false;} function MoveForward(BNr,nn){var ii,ffst=0,llst,ssearch,ssub,ffull,mmove0="",mmove1="";isMoving=true;var GameNr=GetActiveGame(BNr);ffull=Uncomment(PgnMoveText[GameNr]);for(ii=0;(ii=0)&&(MvCount[BNr]=0){ffst+=ssearch.length;if(llst<0)ssub=ffull.substring(ffst);else ssub=ffull.substring(ffst,llst);mmove0=GetMove(ssub,MvTyp[BNr]);if(mmove0!=""){if(ParseMove(BNr,mmove0)>0){mmove1=mmove0;MvCount[BNr]++;MvTyp[BNr]=1-MvTyp[BNr];}else{if(MvTyp[BNr]==1){ssub=Math.floor(MvCount[BNr]/2+1);ssearch=ssub+"....";ffst=ffull.indexOf(ssearch);if(ffst<0){ssearch=ssub+". ...";ffst=ffull.indexOf(ssearch);} if(ffst<0){ssearch=ssub+". ..";ffst=ffull.indexOf(ssearch);} if(ffst<0){ssearch=ssub+" ...";ffst=ffull.indexOf(ssearch);} if(ffst<0){ssearch=ssub+"...";ffst=ffull.indexOf(ssearch);} if(ffst<0){ssearch=ssub+" ..";ffst=ffull.indexOf(ssearch);} if(ffst>=0){ffst+=ssearch.length;if(llst<0)ssub=ffull.substring(ffst);else ssub=ffull.substring(ffst,llst);mmove0=GetMove(ssub,0);if(mmove0!=""){if(ParseMove(BNr,mmove0)>0){mmove1=mmove0;MvCount[BNr]++;MvTyp[BNr]=1-MvTyp[BNr];}else ffst=-1;}}}else ffst=-1;}}else ffst=-1;}} if(isCalculating){isMoving=false;return;} RefreshBoard(BNr);isMoving=false;} function SetImg(BNr,ii,src){var i='i'+BNr+'-'+ii;with(document){if(getElementById(i).src==src){if((isIE>0)&&(isIE<7.0)) getElementById(i).style.filter="";return;} if(!getElementById(i))return;if(isIE==0){getElementById(i).src=src;return};getElementById(i).style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"', sizingMethod='scale')";getElementById(i).src=gImagePath+gPics[0];}} function RefreshBoard(BNr){var ii=0,jj=0,kk,ll,mm,isRotated=GetIsRotated(BNr);WriteInfos(BNr,isRotated);for(ii=0;ii<8;ii++){for(jj=0;jj<8;jj++){if(isRotated)kk=63-ii-(7-jj)*8;else kk=ii+(7-jj)*8;ll=Brd[BNr][ii][jj];if(ll<0)mm='b';else{if(ll==0)mm='';else mm='w';};SetImg(BNr,kk,gImagePath+mm+gPics[Math.abs(ll)]);}} HighlightMove(BNr,MvCount[BNr]);} function InitBoard(BNr){var cc,ii,jj;for(ii=0;ii<2;ii++){Piece[BNr][ii]=Array(0,1,2,2,3,3,4,4,5,5,5,5,5,5,5,5) PosX[BNr][ii]=Array(4,3,0,7,2,5,1,6,0,1,2,3,4,5,6,7);PMovs[BNr][ii]=Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);} PosY[BNr][0]=Array(0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1);PosY[BNr][1]=Array(7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6);for(ii=0;ii<8;ii++){for(jj=0;jj<8;jj++)Brd[BNr][ii][jj]=0;} for(ii=0;ii<2;ii++){for(jj=0;jj<16;jj++)Brd[BNr][PosX[BNr][ii][jj]][PosY[BNr][ii][jj]]=(Piece[BNr][ii][jj]+1)*(1-2*ii);} MvCount[BNr]=0;MvTyp[BNr]=0;} function Init(BNr){isInit=true;InitBoard(BNr);RefreshBoard(BNr);isInit=false;} function Uncomment(ss){if(!ss)return("");var ii,jj,llist=ss.split("{"),ll=llist.length,uu=llist[0],lla,llalen,kk,level=0;for(ii=1;ii0))uu+=lla[lla_len];} llist=uu.split("$");ll=llist.length;uu=llist[0];for(ii=1;ii/g,'');txt=txt.replace(/\<\/html\>/g,'');txt=txt.replace(/\/g,'');txt=txt.replace(/\<\/head\>/g,'');txt=txt.replace(/\/g,'');txt=txt.replace(/\<\/body\>/g,'');txt=txt.replace(/\/g,'');txt=txt.replace(/\<\/pre\>/g,'');txt=txt.replace(/\/g,'');txt=txt.replace(/\
/g,'');txt=txt.replace(/\/g,'');txt=txt.replace(/\<\/xmp\>/g,'');txt=txt.replace(/"/g,'"');txt=txt.replace(/</g,'<');txt=txt.replace(/>/g,'>');txt=" "+txt;return(txt);} function ApplySAN(ss){if(ss.length!=6)return;for(var ii=0;ii<6;ii++)PieceCode[ii]=ss.charCodeAt(ii);} function GetMove(tt,nn){var ii=0,jj=0,mm="",ll=-1,cc,ss=tt;while(ss.indexOf("
")>0)ss=ss.replace("
","");var len=ss.length;while(ii");ll=0;while((ii>=0)&&(jj>=0)&&(ii");}} return(mm);} function CanCastleLong(BNr){var bw=MvTyp[BNr];if(PMovs[BNr][bw][0]>0)return(-1);var jj=0;while(jj<16){if((PosX[BNr][bw][jj]2)ff=2;while((ff0)return(-1);var jj=0;while(jj<16){if((PosX[BNr][bw][jj]>PosX[BNr][bw][0])&&(PosY[BNr][bw][jj]==bw*7)&&(Piece[BNr][bw][jj]==2)&&(PMovs[BNr][bw][jj]==0))jj+=100;else jj++;} if(jj==16)return(-1);jj-=100;Brd[BNr][PosX[BNr][bw][0]][bw*7]=0;Brd[BNr][PosX[BNr][bw][jj]][bw*7]=0;var ff=PosX[BNr][bw][jj];if(ff<6)ff=6;while((ff>PosX[BNr][bw][0])||(ff>=5)){if(Brd[BNr][ff][bw*7]!=0){Brd[BNr][PosX[BNr][bw][0]][bw*7]=1-2*bw;Brd[BNr][PosX[BNr][bw][jj]][bw*7]=(1-2*bw)*3;return(-1);} ff--;} Brd[BNr][PosX[BNr][bw][0]][bw*7]=1-2*bw;Brd[BNr][PosX[BNr][bw][jj]][bw*7]=(1-2*bw)*3;return(jj);} function IsInComment(ss,nn){var ii=-1,bb=0;do{ii=ss.indexOf("{",ii+1);bb++;}while((ii>=0)&&(ii=0)&&(ii=0)tt+=ShowPieceName.charAt(rr);else tt+=ss.charAt(jj);} return(tt);} function SetMove(BNr,mmove){SetLiveButton(BNr,0);if(isNaN(mmove))return;var dd=mmove-MvCount[BNr];if(dd<=0)MoveBack(BNr,-dd);else MoveForward(BNr,dd);} function GetTimeInPGN(BNr,ss,Mv){if(!ss)return(ss);var i,j,Comm;j=ss.indexOf("*");if(j>0)Comm=ss.substring(0,j);else Comm=ss;j=Comm.indexOf(".");if(j>0)Comm=Comm.substring(0,j);i=Comm.indexOf("{");if(i<0)return(ss);j=Comm.indexOf("}");if(j<0)return(ss);Comm=Comm.substring(i+1,j);if(Comm.match(/[0-9]:[0-9][0-9]:[0-9][0-9]/)){if(Mv=='ActTime'){Tags[GetActiveGame(BNr)]['ActTime']=Comm;return;}else if(Mv<0)return;HTime[BNr][Mv]=Comm;if(ShowTimeInPGN)return(ss.substring(0,i)+" "+Comm+" "+ss.substring(j+1));else return(ss.substring(0,i)+ss.substring(j+1));}else return(""+ss+"");} function GetGameResult(BNr,ss,Mv){if(!ss)return(ss);var t=new Array(2);t=ss.split("1/2-1/2");if(t.length>1){Tags[BNr]["Result"]="1/2-1/2";return(t[0]+"
1/2 - 1/2
");} t=ss.split("1-0");if(t.length>1){Tags[BNr]["Result"]="1-0";return(t[0]+"
1 - 0
");} t=ss.split("0-1");if(t.length>1){Tags[BNr]["Result"]="0-1";return(t[0]+"
0 - 1
");} t=ss.split("*");if(t.length>1){if(t[1].indexOf(":")>0){GetTimeInPGN(BNr,t[1],'ActTime');} return(t[0]+"
...
");} return("{Parsing Error when trying to determine the game result}");} function HighlightMove(BNr,Mv){var obj,bg,last_mv,anch;;if(!document.getElementById)return;obj=document.getElementById('HlightMv'+BNr);if(obj)bg=obj.style.background;bg='silver';if(obj){last_mv=obj.value;obj.value=Mv;}else last_mv="";anch='m-'+BNr+'-'+last_mv;with(document){if((last_mv>=0)&&(getElementById(anch))){obj=getElementById(anch);obj.style.background="";obj.style.borderWidth='0px';obj.style.borderStyle='none';} anch='m-'+BNr+'-'+Mv;if(getElementById(anch)){obj=getElementById(anch);obj.style.background=bg;obj.style.borderWidth='1px';obj.style.borderStyle='none';if(ScrollIntoView)obj.scrollIntoView(false);}}} function GetHTMLMoveText(BNr){var MvTxt,GameNr,Mv,jj,uu="",uuu="",cc,vvariant=0;bb=0,bbb=0,ccommenttype=true;var ss="",sstart=0,ffst=0,llst,ssearch,ssub,ffull,mmove0="",mmove1="",MvCnt=MvCount[BNr];isCalculating=true;Init(BNr);GameNr=GetActiveGame(BNr);MvTxt=PgnMoveText[GameNr];ffull=Uncomment(MvTxt);for(var ii=0;(ii=0)&&(MvCount[BNr]=0){ffst+=ssearch.length;if(llst<0)ssub=ffull.substring(ffst);else ssub=ffull.substring(ffst,llst);mmove0=GetMove(ssub,MvTyp[BNr]);if((mmove0!="")&&(ParseMove(BNr,mmove0)>0)){mmove1=mmove0;MvCount[BNr]++;MvTyp[BNr]=1-MvTyp[BNr];}else ffst=-1;} if(mmove1!=""){sstart=-1;do sstart=MvTxt.indexOf(mmove1,sstart+1);while((sstart>0)&&(IsInComment(MvTxt,sstart)));if(sstart>=0){Mv=MvCount[BNr] ss+=GetTimeInPGN(BNr,MvTxt.substr(0,sstart),(Mv-2));ss+="";ss+=""+TransformSAN(mmove1)+"";if((MvTyp[BNr]==0)&&(OneMovePerLine)){ss+="
";};MvTxt=MvTxt.substr(sstart+mmove1.length);}else ffst=-1;}else{MvTxt=GetTimeInPGN(BNr,MvTxt,(MvCount[BNr]-1));MvTxt=GetGameResult(BNr,MvTxt,(MvCount[BNr]-1));}} ss+=MvTxt;uu=MarkAllComments(ss);LastMove[BNr]=MvCount[BNr];isCalculating=false;if(IsLive[BNr]==1)MoveForward(BNr,MaxMove);else SetMove(BNr,MvCnt);return(uu);} function MarkAllComments(ss){var MvTxt=ss.split("{"),ll=MvTxt.length,uu,ii;uu=MvTxt[0];for(ii=1;ii"+MvTxt[ii];MvTxt=uu.split("}");ll=MvTxt.length;uu=MvTxt[0];for(ii=1;ii"+MvTxt[ii];return(uu);} function Check4Castling(BNr,Mv,x1,y1){if((x1>=0)&&(x1<=7)&&(y1>=0)&&(y1<=7))return(-1);if((Mv.indexOf("O")>=0)||(Mv.indexOf("0")>=0)){if((Mv.indexOf("O-O-O")>=0)||(Mv.indexOf("0-0-0")>=0)||(Mv.indexOf("O-O-O")>=0)||(Mv.indexOf("0-0-0")>=0)){if(EvalMove(BNr,-1,6,-1,-1,-1,x1,y1,0,-1))return(1);return(0);} if((Mv.indexOf("O-O")>=0)||(Mv.indexOf("0-0")>=0)||(Mv.indexOf("O?O")>=0)||(Mv.indexOf("0?0")>=0)){if(EvalMove(BNr,-1,7,-1,-1,-1,x1,y1,0,-1))return(1);return(0);} return(0);} if((Mv.indexOf("---")>=0)||(Mv.indexOf("???")>=0)){if(EvalMove(BNr,-1,8,-1,-1,-1,x1,y1,0,-1))return(1);return(0);} return(0);} function ParseMove(BNr,Mv){var ii,jj,ffrom="",ccapt=0,ll,Fig=Pawn,x0=-1,y0=-1,Fig2=-1,x1=-1,y1=-1;var rMv=MvCount[BNr]-1,bw=MvTyp[BNr],CanPass=-1;ii=Mv.length-1;while(ii>0){if(!isNaN(Mv.charAt(ii))){x1=Mv.charCodeAt(ii-1)-97;y1=Mv.charAt(ii)-1;ffrom=Mv.substring(0,ii-1);jj=ii;break;} ii--;} ii=Check4Castling(BNr,Mv,x1,y1);if(ii>=0)return(ii);ll=ffrom.length-1;if(ll>=0){for(ii=0;ii<5;ii++){if(ffrom.charCodeAt(0)==PieceCode[ii]){Fig=ii;ffrom=ffrom.slice(1);ll--;}}} if(ll>=0){if(ffrom.charAt(ll)=="x"){ccapt=1;ll--;}else{if((ffrom.charAt(ll)=="-")||(ffrom.charAt(ll)=="?"))ll--;}} if(ll>=0){if(!isNaN(ffrom.charAt(ll))){y0=ffrom.charAt(ll)-1;if((y0<0)||(y0>7))y0=-1;ll--;}} if(ll>=0){if(isNaN(ffrom.charAt(ll))){x0=ffrom.charCodeAt(ll)-97;if((x0<0)||(x0>7))x0=-1;ll--;}} if(rMv>=0){ii=HPiece[BNr][0][rMv];if((HTyp[BNr][0][rMv]==Pawn)&&(Math.abs(HPosY[BNr][0][rMv]-PosY[BNr][1-bw][ii])==2))CanPass=PosX[BNr][1-bw][ii];} if(Brd[BNr][x1][y1]!=0)ccapt=1;else{if((Fig==5)&&(x1==CanPass)&&(y1==5-3*bw))ccapt=1;} Fig2=Fig;ii=Mv.indexOf("=");if(ii>0)jj=ii;if((jj>0)&&(jj0)&&(sign(BRD[x1][y1])!=(2*bw-1))){if((Fig!=Pawn)||(CanPass!=x1)||(y1!=5-3*bw))return(false);} if(((x0>=0)&&(x0!=Xii))||((y0>=0)&&(y0!=Yii)))return(false);if(Fig==King){if((Math.abs(Xii-x1)>1)||(Math.abs(Yii-y1)>1))return(false);} if(Fig==Queen){if(((Math.abs(Xii-x1)!=Math.abs(Yii-y1)))&&((Xii-x1)*(Yii-y1)!=0))return(false);} if(Fig==Rook){if((Xii-x1)*(Yii-y1)!=0)return(false);} if(Fig==Bishop){if(Math.abs(Xii-x1)!=Math.abs(Yii-y1))return(false);} if(Fig==Night){if(Math.abs(Xii-x1)*Math.abs(Yii-y1)!=2)return(false);} if((Fig==Queen)||(Fig==Rook)||(Fig==Bishop)){dx=sign(x1-Xii);dy=sign(y1-Yii);xx=Xii+dx;yy=Yii+dy;while((xx!=x1)||(yy!=y1)){if(BRD[xx][yy]!=0)return(false);xx+=dx;yy+=dy;}} if(Fig==Pawn){if((Math.abs(Xii-x1)!=ccapt)||((y1==7*(1-bw))&&(Fig==Fig2)))return(false);if(ccapt==0){if(Yii-y1==4*bw-2){if(Yii!=1+5*bw)return(false);if(BRD[x1][y1+2*bw-1]!=0)return(false);}else{if(Yii-y1!=2*bw-1)return(false);}}else{if(Yii-y1!=2*bw-1)return(false);}} if(Fig2!=Fig){if((Fig!=Pawn)||(Fig2>=Pawn)||(y1!=7-7*bw))return(false);} if((Fig<=Pawn)&&(ccapt>0)){jj=15;var wb=1-bw;while(jj>=0){if((Piece[BNr][wb][jj]>0)&&(PosX[BNr][wb][jj]==x1)&&(PosY[BNr][wb][jj]==y1)){Fig_prom=Piece[BNr][wb][jj];break;} else jj--;} if((Fig_prom==-1)&&(Fig==Pawn)&&(CanPass>=0)){jj=15;while(jj>=0){if((Piece[BNr][wb][jj]==5)&&(PosX[BNr][wb][jj]==x1)&&(PosY[BNr][wb][jj]==y1-1+2*bw)){Fig_prom=Piece[BNr][wb][jj];break;} else jj--;}} Fig_prom=-1;} if(StoreMove(BNr,ii,Fig2,x1,y1,jj,Fig_prom,-1,-1))return(true);return(false);} function Save2Hist(BNr,Mv,bw,ind,ii,Adder){HPiece[BNr][ind][Mv]=ii+Adder;HTyp[BNr][ind][Mv]=Piece[BNr][bw][ii];HPosX[BNr][ind][Mv]=PosX[BNr][bw][ii];HPosY[BNr][ind][Mv]=PosY[BNr][bw][ii];} function SetField2Val(BNr,bw,ind,val){Brd[BNr][PosX[BNr][bw][ind]][PosY[BNr][bw][ind]]=val;} function StoreMove(BNr,ii,Fig,x2,y2,jj,Fig2,x3,y3){var iis_check=0,ll,Mv=MvCount[BNr],dd=0;var bw=MvTyp[BNr],wb=1-bw;HPiece[BNr][1][Mv]=-1;Save2Hist(BNr,Mv,bw,0,ii,0);SetField2Val(BNr,bw,ii,0);if((PosX[BNr][bw][ii]!=x2)||(PosY[BNr][bw][ii]!=y2)||(jj>=0)){PMovs[BNr][bw][ii]++;dd++;} if(jj>=0){if(Fig2<0){Save2Hist(BNr,Mv,1-bw,1,jj,16);SetField2Val(BNr,1-bw,jj,0) Piece[BNr][1-bw][jj]=Fig2;PMovs[BNr][1-bw][jj]++;SetField2Val(BNr,1-bw,jj,0);}else{Save2Hist(BNr,Mv,bw,1,jj,0);SetField2Val(BNr,bw,jj,0) PosX[BNr][bw][jj]=x3;PosY[BNr][bw][jj]=y3;PMovs[BNr][bw][jj]++;SetField2Val(BNr,bw,jj,(Piece[BNr][bw][jj]+1)*(1-2*bw));}} Piece[BNr][bw][ii]=Fig;PosX[BNr][bw][ii]=x2;PosY[BNr][bw][ii]=y2;SetField2Val(BNr,bw,ii,(Fig+1)*(1-2*bw));if((Fig==King)&&(Fig2==Rook)){while(PosX[BNr][bw][King]>x2){iis_check+=IsCheck(BNr,PosX[BNr][bw][King],bw*7,bw);PosX[BNr][bw][King]--;} while(PosX[BNr][bw][King]=0){if(Fig2>=0){Brd[BNr][PosX[BNr][bw][jj]][PosY[BNr][bw][jj]]=0;Brd[BNr][HPosX[BNr][0][Mv]][HPosY[BNr][0][Mv]]=(HTyp[BNr][0][Mv]+1)*(1-2*bw);Brd[BNr][HPosX[BNr][1][Mv]][HPosY[BNr][1][Mv]]=(HTyp[BNr][1][Mv]+1)*(1-2*bw);Piece[BNr][bw][jj]=HTyp[BNr][1][Mv];PosX[BNr][bw][jj]=HPosX[BNr][1][Mv];PosY[BNr][jj]=HPosY[BNr][1][Mv];PMovs[BNr][bw][jj]--;}else{Brd[BNr][HPosX[BNr][1][Mv]][HPosY[BNr][1][Mv]]=(HTyp[BNr][1][Mv]+1)*(2*bw-1);Piece[BNr][wb][jj]=HTyp[BNr][1][Mv];PosX[BNr][wb][jj]=HPosX[BNr][1][Mv];PosY[BNr][wb][jj]=HPosY[BNr][1][Mv];PMovs[BNr][wb][jj]--;}} if(iis_check==0)return(true);return(false);} function IsCheck(BNr,xx,yy,bw){var x0=xx,y0=yy,dx,dy,bb;for(dx=-2;dx<=2;dx+=4){for(dy=-1;dy<=1;dy+=2){if(IsOnBoard(x0+dx,y0+dy)){if(Brd[BNr][x0+dx][y0+dy]==10*bw-(Night+1))return(1);}}} for(dx=-1;dx<=1;dx+=2){for(dy=-2;dy<=2;dy+=4){if(IsOnBoard(x0+dx,y0+dy)){if(Brd[BNr][x0+dx][y0+dy]==10*bw-(Night+1))return(1);}}} dy=1-2*bw;for(dx=-1;dx<=1;dx+=2){if(IsOnBoard(x0+dx,y0+dy)){if(Brd[BNr][x0+dx][y0+dy]==12*bw-(Pawn+1))return(1);}} if((Math.abs(PosX[BNr][1-bw][King]-xx)<2)&&(Math.abs(PosY[BNr][1-bw][King]-yy)<2))return(1);for(dx=-1;dx<=1;dx++){for(dy=-1;dy<=1;dy++){if((dx!=0)||(dy!=0)){x0=xx+dx;y0=yy+dy;bb=0;while((IsOnBoard(x0,y0))&&(bb==0)){bb=Brd[BNr][x0][y0];if(bb==0){x0+=dx;y0+=dy;} else{if(bb==4*bw-(Queen+1)) return(1);if((bb==6*bw-(Rook+1))&&((dx==0)||(dy==0))) return(1);if((bb==8*bw-(Bishop+1))&&(dx!=0)&&(dy!=0)) return(1);}}}}} return(0);} function IsOnBoard(ii,jj){if((ii<0)||(ii>7)||(jj<0)||(jj>7))return(false);return(true);} function OpenGames(){for(var BNr=0;BNr<(Rows*Cols);BNr++){var sel=GetActiveGame(BNr);if(BNr>=PgnMoveText.length)break;Tags[BNr]=Tags[sel];OpenGame(BNr,sel);} WriteCookie();} function OpenGame(BNr,GameNr){if(isMoving){setTimeout('OpenGame('+BNr+','+GameNr+')',TimeOut);return;} if(GameNr<0)return;if(Tags[GameNr]["SAN"])ApplySAN(Tags[GameNr]["SAN"]);WriteCookie();with(document){if(getElementById){getElementById('pgn-'+BNr).innerHTML=GetHTMLMoveText(BNr);if(Tags[GameNr]["Result"]!="*") getElementById('Result-'+BNr).innerHTML=Tags[GameNr]["Result"].substr(0,3);else getElementById('Result-'+BNr).innerHTML="...";}} RefreshBoard(BNr)} function UpdateViewer(){SkipRefresh=1;WriteSelGames();OpenGames();SkipRefresh=0;} function ModifyTOMA(pgn){pgn=pgn.replace(/[\n\r]/g,'');pgn=pgn.replace(/\{ *\[%clk *(\d+):(\d+)/g,'\{$1:$2');pgn=pgn.replace(/(\d+) *\] *\}/g,'$1\}');pgn=pgn.replace(/\{(\d+):(\d+)\}/g,'\{$1:$2:00\}');pgn=pgn.replace(/\{(\d+):(\d+)\.(\d+)\}/g,'\{$1:$2:$3\}');return(pgn);} function AnalyzePgn(){var pgn=document.getElementById('pgnfile').value;if(pgn=="")return;pgn=HTML2Text(pgn);pgn=ModifyTOMA(pgn);var ii,j,NrGames=-1,IsNewGame=1,ll=0,TagName,TagContent,kk,ff,found=0;var ppgnText=new Array();var GlobTags=new Object();GlobTags["Event"]="";GlobTags["Site"]="";GlobTags["BroadcastTime"]="";GlobTags["UpdateInterval"]=UpdateInterval;GlobTags["AllowPostings"]=AllowPostings;function TagNames(){};TagNames["Black"]="Schwarz";TagNames["White"]="Weiss";TagNames["Result"]="*";TagNames["WhiteElo"]="";TagNames["BlackElo"]="";TagNames["ActTime"]="";TagNames["FEN"]="";TagNames["SAN"]="";TagNames["Round"]="";var lTags=new Array();var Results=new Array("*","1/2-1/2","1-0","0-1");aPgnText=pgn.split("[");var Parts=new Array(aPgnText.length-1);for(ii=1;ii=0){ppgnText[NrGames]=ff;IsNewGame=1;break;}}} if(document.getElementById('BroadcastTime'))document.getElementById('BroadcastTime').innerHTML=GlobTags["BroadcastTime"];UpdateInterval=GlobTags["UpdateInterval"];ii=parseInt(GlobTags["AllowPostings"]);if((AllowPostings!=2)&&(AllowPostings!=ii)){AllowPostings=ii;document.getElementById("Post").value=textPosts[AllowPostings];} if(NrGames<0)return;PgnMoveText=ppgnText;Tags=lTags;setTimeout("UpdateViewer()",0);} function PrepGames4Demo(){IsDemo++;return(PgnFileName+"?Demo="+IsDemo*UpdateInterval+"&UpdateInterval="+UpdateInterval);} function PrepGames4Demo(NoG){var BNr,NrOfBoards=(Rows*Cols);Games=new Array(NoG);for(i=0;i<=NoG;i++)Games[i]=-1;for(BNr=0;BNr=0){ssearch=Math.floor(LastMove[BNr]/2+1+Math.round(Math.random()*3))+".";llst=PgnMoveText[i].indexOf(ssearch);if(llst>0){PgnMoveText[i]=PgnMoveText[i].substring(0,llst)+" *";Tags[BNr]["Result"]="*";}}else PgnMoveText[i]="";} gLastFileContent=0;} function getHttpRequest(FileN,URIString){if(IsLoading){var x='getHttpRequest("'+FileN+'","'+URIString+'")';setTimeout(x,200);return;} var isPosting=true;if(FileN==PgnFileName)isPosting=0;else if(FileN==PostingFileName)isPosting=1;else isPosting=2;var xmlHttp=null;if(typeof XMLHttpRequest!='undefined'){xmlHttp=new XMLHttpRequest();}else{if(!xmlHttp){try{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){xmlHttp=null;}}}} if(!xmlHttp)return;IsLoading=1;if(isPosting==0){with(document){if(getElementById('ShowUpdateTime'))getElementById('ShowUpdateTime').innerHTML="lade...";getElementById('UpdateTime').value=UpdateInterval;}} xmlHttp.open('GET',FileN+URIString,true);if(isPosting==1){xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(document.getElementById("Postings"))document.getElementById("Postings").innerHTML=unescape(xmlHttp.responseText);IsLoading=0;}}}else if(isPosting==2){xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(document.getElementById("Post")&&(document.getElementById("Post").value==PostingFeedback))document.getElementById("Post").value="";IsLoading=0;}}}else{xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){document.getElementById('pgnfile').value=xmlHttp.responseText;if(document.getElementById('ShowUpdateTime'))document.getElementById('ShowUpdateTime').innerHTML=UpdateInterval+' sec';AnalyzePgn();IsLoading=0;}}};xmlHttp.send(null);} function DecrementTime(BNr){if(!IsLive[BNr]||(TimeCountDown==0)||(Tags[BNr]["Result"]!="*")){return;};var Time=InitialClock,sec,s,m,h;blwh=new Array('TimeWhite-'+BNr,'TimeBlack-'+BNr);var tPlayer=blwh[(MvCount[BNr]+GetIsRotated(BNr))%2];with(document){if(getElementById&&(getElementById(tPlayer)))Time=getElementById(tPlayer).innerHTML;} var t=Time.split(":");sec=t[0]*3600;sec+=t[1]*60;sec+=t[2]*1;sec--;s=sec%60;if(s<10)s="0"+s;m=parseInt(sec/60)%60;if(m<10)m="0"+m;h=parseInt(sec/3600);document.getElementById(tPlayer).innerHTML=h+":"+m+":"+s;} function CountDown(t){var BNr,MaxMv;t--;with(document){getElementById('UpdateTime').value=t;if(getElementById('ShowUpdateTime'))getElementById('ShowUpdateTime').innerHTML=t+" sec";} for(BNr=0;BNr<(Rows*Cols);BNr++){if(BNr0){setTimeout("UpdateFile(1)",200);return;} if(document.getElementById('UpdateTime')){t=document.getElementById('UpdateTime').value;}else{t=0};if(force==1){t=0;} if((!isNaN(t))&&(t>1)){CountDown(t);}else{getHttpRequest(PgnFileName,"?T="+Math.random());if(DisplayPostings)getHttpRequest(PostingFileName,"?T="+Math.random());} if(UpdateInterval>0)setTimeout("UpdateFile(0)",1000);} ;