
var iChessVersion="0.98beta";var PgnFileName="pgn/ichess.pgn";var UpdateInterval=0;var InitialClock="1:40:00";var IsDemo=0;var PieceName="KQRBNP";var ShowPieceName="KQRBNP";var Scale=0.5;var Rows=1;var Cols=1;var Author="<a href='http://ichess.de'>iChess.de</a> Viewer "+iChessVersion+" (c) by Felix Fuernhammer";var DisableURI=false;var ScrollIntoView=false;var TimeCountDown=false;var OneMovePerLine=false;var NoFooter=false;var NoButtons=false;var NoGameSelectForm=false;var FontSize=12;var Size=56;var TimeOut=400;var gImagePath="png/";var SkipRefresh=0;var IsLoading=0;var gImagePathOld="-";var gLastFileContent=0;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();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<llist.length;ii++){jj=llist[ii];if((jj.length==0)||(jj.search("=")<0))continue;entry=jj.split("=");if(entry.length!=2)continue;wert=entry[1];name=entry[0];eval(name+"="+wert);}}
function DispError(str){if(document.getElementById('Author'))document.getElementById('Author').innerHTML=str;};function GetIsRotated(BNr){var selObj=document.getElementById('isRotated-'+BNr);if((selObj)&&(parseInt(selObj.value)==1))return(1);else return(0);}
function GetActiveGame(BNr){var selObj=document.getElementById('GameSel-'+BNr);if(selObj){var sel=selObj.selectedIndex;}else{var sel=BNr;};if((ActiveGames)&&(ActiveGames.length>BNr))sel=ActiveGames[BNr];return(sel);}
function RotateBoard(BNr){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;bl=blObj.style.backgroundColor;whObj=getElementById('White-'+BNr);if(!whObj)return;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;}}
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;i<styleSheets.length;i++){if(isIE>0)obj=styleSheets[i].rules;else obj=styleSheets[i].cssRules;for(j=0;j<obj.length;j++){if(obj[j].selectorText=="#iChess"){FS=obj[j].style.fontSize;if(FS!="")FontSize=parseInt(FS);}}}}}
function SetFontSize(){var div,s,px;with(document){if(!createElement)return;div=createElement('div');s=div.style;s.border='none';s.padding=0;s.width=FontSize+'pt';body.appendChild(div);px=div.offsetWidth;body.removeChild(div);if(!px)px=FontSize*4/3;FontSize=Math.round(px/2+(px/2*Scale));var padd=Math.round(FontSize/2)
s.padding=padd+'px';s.width=FontSize+"px";body.appendChild(div);var px1=div.offsetWidth;body.removeChild(div);if(px1)CorrectPadding=FontSize+2*padd-px1;}}
function iChess(DispGames){var ii,jj,BNr;GetFontSize();EvalUrlString();SetFontSize();ActiveGames=DispGames;with(document){write("<div>");write("<TABLE id='iChess'>");for(ii=0;ii<Rows;ii++){write("<tr>");for(jj=0;jj<Cols;jj++){write("<td>");BNr=ii*Cols+jj;ExtendArrays(BNr);WriteGame(BNr);write("</td>");}
write("</tr>");}
if(!NoFooter){write("<tr><th colspan="+Cols+">");WriteFooter();write("</th></tr>");}
write("</TABLE>");write("<input type='hidden' id='pgnfile' value='No pgn file!'>");write("<input type='hidden' id='UpdateTime' value='0'>");write("</div>");}
setTimeout("UpdateFile()",TimeOut);}
function WriteGame(BNr){var FS=FontSize,padd=Math.round(FS/3);var W1=4*Size*Scale+FontSize*0.7;var H1,H0=FS;var H2=Math.round(8*Size*Scale+4*FontSize);var BlWhW=6*Size*Scale;var BlWhT=2*Size*Scale;H0=FS+CorrectPadding;H1=H0;BlWhW=BlWhW+CorrectPadding;BlWhT=BlWhT+CorrectPadding;var Style1=" style='font-size:"+FS+"px; width:"+BlWhW+"px; height:"+H0+"px; padding:"+padd+"px; white-space:nowrap;' ";var Style2=" style='font-size:"+FS+"px; width:"+BlWhT+"px; height:"+H0+"px; padding:"+padd+"px; text-align:right;' ";var Sty_GSel=" style='width:"+W1+"px; height:"+H1+"px; overflow:hidden; padding-top:"+padd+"px; vertical-align:top;' ";var Sty_pgn=" style='font-size:"+FS+"px; width:"+W1+"px; height:"+H2+"px; overflow:auto;   padding:"+padd+"px; vertical-align:top;' ";with(document){write("<TABLE class='FrameTabs'><tr>");write("<th rowspan='2'>");write("<table id='iCGameTab'>");write("<tr><td><div class='Black' "+Style1+" id='Black-"+BNr+"'>"+Tags[BNr]["Black"]+"</div></td>");write("<td><div class='Black'"+Style2+" id='TimeBlack-"+BNr+"' align='right'>"+InitialClock+"</div></td></tr>");write("<tr><th colspan='2'>");WriteBoard(BNr);write("</th></tr>");write("<tr><td><div class='White'"+Style1+"id='White-"+BNr+"' width='"+BlWhW+"'>"+Tags[BNr]["White"]+"</div></td>");write("<td><div class='White'"+Style2+"id='TimeWhite-"+BNr+"' align='right'>"+InitialClock+"</div></td></tr>");write("<tr><th colspan='2' align='left'>");WriteButtons(BNr);write("</th></tr>");write("</table>");write("</th>");write("<td id='IDGameSel-"+BNr+"'"+Sty_GSel+"></td></tr>");write("<tr><td style='vertical-align:top; padding:0px;'><div class='pgn' id='pgn-"+BNr+"' "+Sty_pgn+"></div></td>");write("</tr></TABLE>");}}
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+")' 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("<Table class='Board' cellpadding=0 cellspacing=0 border=1><TR><TH colspan=8 rowspan=8> ");WriteBoardTab(BNr);write("</TH>");for(ii=0;ii<8;ii++)write("<TD "+Styl+"height:"+siz3+"px;padding:2px'><div id='no_col_"+BNr+"-"+ii+"'></div></TD></TR><TR>");for(ii=0;ii<8;ii++)write("<TD "+Styl+" width:"+siz3+"px;'><div id='no_row_"+BNr+"-"+ii+"'></div></TD>");write("<TD onMouseDown='RotateBoard("+BNr+")'>");write("<div"+Styl2+"></div>");write("</TD></TR></Table>");}}
function WriteBoardTab(BNr){var pic=gImagePath+gPics[0],i,j,k;var i,j,k,siz=Math.round(Scale*Size);with(document){write("<TABLE class='BoardOutline' cellpadding=0 cellspacing=0>");for(i=0;i<8;i++){k=8*i;write("<TR>");for(j=0;j<8;j++){if((i%2+j%2)==1)write("<TD class='WhiteSq'>");else write("<TD class='BlackSq'>");write("<img src='"+pic+"' class='none' id='"+BNr+"-"+(k+j)+"' width='"+siz+"px' height='"+siz+"px'>")
write("</TD>");}
write("</TR>");}
write("</TABLE>")}}
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="&gt;I";with(document){if(!NoButtons){write("<TABLE id='ButtonTable' align='left'><TR>");write("<FORM name='BoardForm'>");write("<TD><input type=button value='I&lt;' width="+ss+styl+"id='btnInit"+BNr+"' onClick='ButtonAction("+BNr+",0)'></TD>");write("<TD><input type=button value='&lt;'  width="+ss+styl+"id='btnMovBk"+BNr+"'  onClick='ButtonAction("+BNr+",1)'></TD>");write("<TD><input type=button value='&gt;'  width="+ss+styl+"id='btnMovFw"+BNr+"'  onClick='ButtonAction("+BNr+",2)'></TD>");write("<TD><input type=button value='"+bIsLive+"' width="+2*ss+" style='width:"+2*ss+"px; font-size:"+FontSize+"px' id='btnLive"+BNr+"' onClick='ButtonAction("+BNr+",3)'></TD>");write("</TR></FORM></TABLE>");}
write("<input type='hidden' id='isRotated-"+BNr+"' value='0'>");write("<input type='hidden' id='Board-"+BNr+"' value=''>");write("<input type='hidden' class='HighlightedMove' id='HlightMv"+BNr+"' value='-1'>");}}
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='yellow';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){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="&nbsp;";if(HTime[BNr][mv_1])b=HTime[BNr][mv_1];else if(mv>0)b="&nbsp;";if(MvCount[BNr]%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;}}
with(document){if(getElementById&&(getElementById('TimeWhite-'+BNr)))getElementById('TimeWhite-'+BNr).innerHTML=TimeWh;if(getElementById&&(getElementById('TimeBlack-'+BNr)))getElementById('TimeBlack-'+BNr).innerHTML=TimeBl;}}
function WritePlayer(ID,Pl,Tooltip){with(document){if(getElementById&&(getElementById(ID)))getElementById(ID).innerHTML='<div title="dummy">'+Pl+'</div>';}}
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 WriteInfos(BNr,rot){var sel=GetActiveGame(BNr);var Pl=new Array("White","Black");WritePlayer("White-"+BNr,Tags[sel][Pl[rot]]);WritePlayer("Black-"+BNr,Tags[sel][Pl[1-rot]]);WriteTime(BNr);WriteBoardNumbers(BNr,rot);}
function WriteFooter(){var Style1="";with(document){write("<table width='100%' class='Footer'"+Style1+"><tr>");write("<td id='pgntext' style='width:"+(FontSize)+"px;'></td>");write("<td align='left' id='Author'>"+Author+"</td>");write("<td style='width:"+(FontSize*5)+"px; text-align:right;' id='ShowUpdateTime'>0 sec</td></tr>");write("</table>");}}
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=Tags.length;if((NrOfGames==1)||(NoGameSelectForm))return;var GameSelForm="",ii,BNr,GameSelected;for(BNr=0;BNr<(Cols*Rows);BNr++){GameSelected=GetActiveGame(BNr);GameSelForm+="<FORM><SELECT class='GameSel' id='GameSel-"+BNr+"' "+Styl1+" onChange='OpenGame("+BNr+", this.options[selectedIndex].value)' SIZE=1>";for(ii=0;ii<NrOfGames;ii++){if(ii==GameSelected)GameSelForm+="<OPTION VALUE="+ii+" selected>";else GameSelForm+="<OPTION VALUE="+ii+">";GameSelForm+=Tags[ii]["White"].split(",")[0]+"-"+Tags[ii]["Black"].split(",")[0]+"("+Tags[ii]["Result"]+")";}
GameSelForm+="</SELECT></FORM>";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;}
function RestorePos(BNr,ii,bw,Mv,ind){var x=PosX[BNr][bw][ii],y=PosY[BNr][bw][ii];var hx0=HPosX[BNr][ind][Mv],hy0=HPosY[BNr][ind][Mv];Brd[BNr][x][y]=0;Brd[BNr][hx0][hy0]=(HTyp[BNr][ind][Mv]+1)*(1-2*bw);}
function RestorePiece(BNr,ii,bw,Mv,ind){var hx0=HPosX[BNr][ind][Mv],hy0=HPosY[BNr][ind][Mv];Piece[BNr][bw][ii]=HTyp[BNr][ind][Mv];PosX[BNr][bw][ii]=hx0;PosY[BNr][bw][ii]=hy0;PMovs[BNr][bw][ii]--;}
function MoveBack(BNr,NrMvs){var ii,jj,Mv,bw,x,y,hx1,hy1;isMoving=true;for(jj=0;((jj<NrMvs)&&(MvCount[BNr]>0));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<nn)&&(ffst>=0)&&(MvCount[BNr]<MaxMove);ii++){ssearch=Math.floor(MvCount[BNr]/2+2)+".";llst=ffull.indexOf(ssearch);ssearch=Math.floor(MvCount[BNr]/2+1)+".";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,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=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;ii<ll;ii++){level++;lla=llist[ii].split("}");lla_len=lla.length-1;level=level-lla_len;if((level==0)&&(lla_len>0))uu+=lla[lla_len];}
llist=uu.split("$");ll=llist.length;uu=llist[0];for(ii=1;ii<ll;ii++){tt=llist[ii];kk=tt.length;for(jj=0;jj<kk;jj++){if(isNaN(parseInt(tt.charAt(jj)))){uu+=tt.substring(jj+1);jj=kk;}}}
return(uu);}
function HTML2Text(txt){txt=txt.replace(/\<html\>/g,'');txt=txt.replace(/\<\/html\>/g,'');txt=txt.replace(/\<head\>/g,'');txt=txt.replace(/\<\/head\>/g,'');txt=txt.replace(/\<body\>/g,'');txt=txt.replace(/\<\/body\>/g,'');txt=txt.replace(/\<pre\>/g,'');txt=txt.replace(/\<\/pre\>/g,'');txt=txt.replace(/\<xmp\>/g,'');txt=txt.replace(/\<br \/\>/g,'');txt=txt.replace(/\<br\>/g,'');txt=txt.replace(/\<\/xmp\>/g,'');txt=txt.replace(/&quot;/g,'"');txt=txt.replace(/&lt;/g,'<');txt=txt.replace(/&gt;/g,'>');txt=" "+txt;return(txt);}
function ApplySAN(ss){if(ss.length<6)PieceName="KQRBNP";else PieceName=ss;for(var ii=0;ii<6;ii++)PieceCode[ii]=PieceName.charCodeAt(ii);}
function GetMove(tt,nn){var ii=0,jj=0,mm="",ll=-1,cc,ss=tt;while(ss.indexOf("<br />")>0)ss=ss.replace("<br />","");var len=ss.length;while(ii<len){cc=ss.charCodeAt(ii);if((cc<=32)){if(ll+1!=ii)jj++;ll=ii;}else{if(jj==nn){if((cc==46)&&(!isNaN(mm))){mm="";ll=ii;}
else mm+=ss.charAt(ii);}}
ii++;}
if((nn==1)&&(mm=="")&&(ss.charAt(0)==".")){ii=0;while(ii<len){cc=ss.charAt(ii);if((cc!=".")&&(cc!=" "))mm+=cc;ii++;}}
if(mm!=""){ii=mm.indexOf("<");jj=mm.indexOf(">");ll=0;while((ii>=0)&&(jj>=0)&&(ii<jj)){mm=mm.substr(0,ii)+mm.substr(jj+1);ii=mm.indexOf("<");jj=mm.indexOf(">");}}
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]<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>2)ff=2;while((ff<PosX[BNr][bw][0])||(ff<=3)){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 CanCastleShort(BNr){var bw=MvTyp[BNr];if(PMovs[BNr][bw][0]>0)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<nn));ii=-1;do{ii=ss.indexOf("}",ii+1);bb--;}while((ii>=0)&&(ii<nn));return(bb);}
function TransformSAN(ss){if(ss=="")return("");if((ShowPieceName=="")||(ShowPieceName==PieceName))return(ss);var jj,rr,tt="";for(jj=0;jj<ss.length;jj++){rr=PieceName.indexOf(ss.charAt(jj));if(rr>=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)+"<span id='pgn_t'> "+Comm+" </span>"+ss.substring(j+1));else return(ss.substring(0,i)+ss.substring(j+1));}else return("<span id='pgn_t'>"+ss+"</span>");}
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)return(t[0]+"<div id='pgn_r'> 1/2 - 1/2 </div>");t=ss.split("1-0");if(t.length>1)return(t[0]+"<div id='pgn_r'> 1 - 0 </div>");t=ss.split("0-1");if(t.length>1)return(t[0]+"<div id='pgn_r'> 0 - 1 </div>");t=ss.split("*");if(t.length>1){if(t[1].indexOf(":")>0){GetTimeInPGN(BNr,t[1],'ActTime');}
return(t[0]+"<div id='pgn_a'> ...</div>");}
return(ss);}
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<MaxMove)&&(ffst>=0)&&(MvCount[BNr]<MaxMove);ii++){ssearch=Math.floor(MvCount[BNr]/2+2)+".";llst=ffull.indexOf(ssearch);ssearch=Math.floor(MvCount[BNr]/2+1)+".";ffst=ffull.indexOf(ssearch);mmove1=""
if(ffst>=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 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+="<a href='javascript:SetMove("+BNr+","+Mv+")' id='m-"+BNr+"-"+Mv+"'>";ss+="<b>"+TransformSAN(mmove1)+"</b></a>";if((MvTyp[BNr]==0)&&(OneMovePerLine)){ss+="<br>";};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<ll;ii++)uu+="<i>"+MvTxt[ii];MvTxt=uu.split("}");ll=MvTxt.length;uu=MvTxt[0];for(ii=1;ii<ll;ii++)uu+="</i>"+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)&&(jj<Mv.length-1)){if(Fig==Pawn){ii=Mv.charCodeAt(jj+1);for(ll=1;ll<5;ll++){if(ii==PieceCode[ll])Fig2=ll;}}}
for(ii=0;ii<16;ii++){if(Piece[BNr][bw][ii]==Fig){if(EvalMove(BNr,ii,Fig,x0,y0,Fig2,x1,y1,ccapt,CanPass))return(1);}}
return(0);}
function EvalMove(BNr,ii,Fig,x0,y0,Fig2,x1,y1,ccapt,CanPass){var dx,dy,xx,yy,jj=-1,Fig_prom=-1;var bw=MvTyp[BNr],Xii=PosX[BNr][bw][ii],Yii=PosY[BNr][bw][ii];var BRD=Brd[BNr],X=PosX[BNr][bw],Y=PosY[BNr][bw];if(Fig==OOO){jj=CanCastleLong(BNr);if(jj<0)return(false);if(StoreMove(BNr,0,0,2,bw*7,jj,2,3,bw*7))return(true);return(false);}
if(Fig==OO){jj=CanCastleShort(BNr);if(jj<0)return(false);if(StoreMove(BNr,0,0,6,bw*7,jj,2,5,bw*7))return(true);return(false);}
if(Fig==NullM){if(StoreMove(BNr,0,0,PosX[BNr][bw][0],PosY[BNr][bw][0],-1,-1,-1,-1))return(true);return(false);}
if((Xii==x1)&&(Yii==y1))return(false);if((ccapt>0)&&(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]<x2){iis_check+=IsCheck(BNr,PosX[BNr][bw][King],bw*7,bw);PosX[BNr][bw][King]++;}}
iis_check+=IsCheck(BNr,PosX[BNr][bw][King],PosY[BNr][bw][0],bw);if(iis_check==0)return(true);SetField2Val(BNr,bw,ii,0);Brd[BNr][HPosX[BNr][0][Mv]][HPosY[BNr][0][Mv]]=(HTyp[BNr][0][Mv]+1)*(1-2*bw);Piece[BNr][bw][ii]=HTyp[BNr][0][Mv];PosX[BNr][bw][ii]=HPosX[BNr][0][Mv];PosY[BNr][bw][ii]=HPosY[BNr][0][Mv];PMovs[BNr][bw][ii]-=dd;if(jj>=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);OpenGame(BNr,sel);}}
function OpenGame(BNr,GameNr){if(isMoving){setTimeout('OpenGame('+BNr+','+GameNr+')',TimeOut);return;}
if(GameNr<0)return;if(Tags[GameNr]["SAN"])ApplySAN(Tags[GameNr]["SAN"]);with(document){if(getElementById)getElementById('pgn-'+BNr).innerHTML=GetHTMLMoveText(BNr);}
RefreshBoard(BNr)}
function UpdateViewer(){SkipRefresh=1;WriteSelGames();OpenGames();SkipRefresh=0;}
function AnalyzePgn(){var pgn=document.getElementById('pgnfile').value;if(pgn=="")return;if((pgn.length==gLastFileContent)&&(IsDemo==0))return;gLastFileContent=pgn.length;pgn=HTML2Text(pgn);var ii,j,NrGames=-1,IsNewGame=1,ll=0,TagName,TagContent,kk,ff,found=0;var ppgnText=new Array();var TagNames=new Array("Event","Site2","Black","White","Result","WhiteElo","BlackElo","ActTime","FEN","SAN");var TagDefault=new Array("","","Black","White","*","na","na","","","");var lTags=new Array();var Results=new Array("*","1/2-1/2","1-0","0-1");aPgnText=pgn.split("[");if(aPgnText.length<2)return;var Parts=new Array(aPgnText.length-1);for(ii=1;ii<aPgnText.length;ii++)Parts[ii-1]=aPgnText[ii].split("]");for(ii=0;ii<Parts.length;ii++){if(IsNewGame){NrGames++
lTags[NrGames]=new Object();for(j in TagNames){lTags[NrGames][TagNames[j]]=TagDefault[j];}
ppgnText[NrGames]="No Moves yet!";IsNewGame=0;}
TagName=Parts[ii][0].split(" ")[0];TagContent=Parts[ii][0].split("\"")[1];for(kk in lTags[NrGames]){if(TagName==kk){lTags[NrGames][kk]=TagContent;break;}}
ff=Parts[ii][1]
for(j=0;j<4;j++){if(ff.indexOf(Results[j])>=0){ppgnText[NrGames]=ff;IsNewGame=1;break;}}}
PgnMoveText=ppgnText;Tags=lTags;setTimeout("UpdateViewer()",0);}
function PrepGames4Demo(){IsDemo++;return(PgnFileName+"?Demo="+IsDemo*UpdateInterval+"&UpdateInterval="+UpdateInterval);}
function getHttpRequest(FileN){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){with(document){if(getElementById('ShowUpdateTime'))getElementById('ShowUpdateTime').innerHTML=UpdateInterval+' sec';getElementById('UpdateTime').value=UpdateInterval;if(getElementById('pgntext'))getElementById('pgntext').style.backgroundColor='red';IsLoading=1;}
xmlHttp.open('GET',FileN,true);xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){document.getElementById('pgnfile').value=xmlHttp.responseText;if(document.getElementById('pgntext'))document.getElementById('pgntext').style.backgroundColor='green';AnalyzePgn();IsLoading=0;}};xmlHttp.send(null);}}
function DecrementTime(BNr){if(!IsLive[BNr]||(TimeCountDown==0)){return;};var Time=InitialClock,sec,s,m,h;blwh=new Array('TimeWhite-'+BNr,'TimeBlack-'+BNr);var tPlayer=blwh[MvCount[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++)DecrementTime(BNr)}
function UpdateFile(){if(IsLoading>0){setTimeout("UpdateFile()",200);return;}
if(document.getElementById('UpdateTime')){t=document.getElementById('UpdateTime').value;}else{t=0};if((!isNaN(t))&&(t>1)){CountDown(t);}else{if(IsDemo>0)getHttpRequest(PrepGames4Demo());else getHttpRequest(PgnFileName);}
if(UpdateInterval>0)setTimeout("UpdateFile()",1000);}



