var hclr='moccasin';
var vclr='green';
var doc=document;
ie4=(doc.all)?1:0;
ns6=(doc.getElementById)&&!(ie4);
ns4=(doc.layers)?1:0;
doc.onkeydown = KeyDown;
var restr=['1-0','0-1','1/2-1/2','*'];
var s1=s2=r1=r2=lvflg=mvflg=0;
var pc=capc=cf=ep=pr=tmid=tmc=0;
var atgm=-1;
var lk=vl=cm=tm=ml=cg=cb=0;
var prepc=8;
if(ie4)doc.onmousemove=MsMove;
if(ns6)doc.onclick=ns6Click;
gx=-4
mn=0;
jb=0
var ipcs='ipnbrqkxov';
function DrawPc(g,pc,sqr)
{
 var clr, pi;
 clr='';
 pi=ipcs.charAt(pc>=23?pc-16:pc&7);
 if(pc)
  clr=(pc&8)?'b':'w';
 if(gflip[g])
   sqr=63-sqr;
 doc.images[jb+sqr].src=imgurl+clr+pi+'.gif';
}
var fench='/PNBRQK//pnbrqk12345678XOV';
function Fen2Brd(g,fn)
{
 var fc;
 var s=0;
 for(i=0;i<64;i++){
  fc=fench.indexOf(fn.charAt(s++));
  if(fc<=14||fc>=23)
   gb[g][i]=fc;
  else{
   fc-=14;
   while(fc--)
    gb[g][i++]=0;
   --i;
   }
  }
 if(s!=fn.length)
  mn=parseInt(fn.substr(++s));
}
function InitBoard(g)
{
 if(atgm!=cg)Astop();
 Fen2Brd(g,gf[g]);
 gx=-4;
 cg=g;
}
function FindScrBrd()
{
 for(i=0;i<doc.images.length;i++)
  if(doc.images[i].name != '')
   if(doc.images[i].name=='brd0'){
    jb=i;
    return;
    }
}
function DrawBoard(g)
{
 for(i=0;i<64;i++)
  DrawPc(g,gb[g][i],i);
}
function DoMv(g,pc,to,from)
{
 gb[g][to]=pc;
 gb[g][from]=0;
}
function MvD(g)
{
 var m=gx;
 ep=cf=pr=0;
 s1=r1=gm[g].charCodeAt(m)-63;
 s2=r2=gm[g].charCodeAt(m+1)-63;
 lvflg=gm[g].charCodeAt(m+2);
 mvflg=gm[g].charCodeAt(m+3);
 capc=gb[g][s2];
 pc=gb[g][s1];
 if((pc&7)==1)
  if((s2<8)||(s2>55)){
   pr=(pc&8)+((mvflg>>4)&3)+2;
   return;
  }
 if(mvflg&32){
  mvflg&16?++r1:--r1;
  if((pc&7)==1)
   ep=(pc&8)?1:9;
  else{
   r2=(s1-s2)>0?s1-4:s1+3;
   cf=1;
  }
 }
}
function Mv1(g)
{
 DoMv(g,pc,s2,s1);
 if(pr)
  gb[g][s2]=pr;
 if(ep)
  gb[g][r1]=0;
 if(cf)
  DoMv(g,gb[g][r2],r1,r2);
 if(pc&8)
  ++mn;
}
function Mv(g,mv)
{
 if(g!=cg)
  eval("parent.frames['g'].location='zerocorus10g.htm#pg"+g+"'");
 Mva(g,--mv*4);
}
function Mva(g,mv)
{
 var tf;
 InitBoard(g);
 while(gx<mv){
  gx+=4;
  MvD(g);
  Mv1(g);
  }
 DrawBoard(g);
 MvStr(g);
}
function AutoMv()
{
var cm=gx+4;
if(cm-4>=gend[atgm]) Astop();
 else{
  tmc=1;
  Forward(atgm);
  tmc=0;
  }
}
function Astop()
{
 atgm=-1;
 tmc=0;
 clearInterval(tmid);
}
function Astart(g)
{
 if(atgm>=0)Astop();
 else{
 atgm=g;
 tmid=setInterval('AutoMv()',delay);
 AutoMv();
 }
}
function Flip(g)
{
 gflip[g]^=1;
 DrawBoard(g);
}
function Nxm5(g,dr)
{
 var i=11;
 var gln=gm[g].length-4;
 tm=gx;
 while(i--){
  tm+=dr;
  if((tm<-4)||(tm>gln)) break;
  }
 tm-=dr;
 Mva(g,tm);
}
function Forward5(g)
{
 Nxm5(g,4);
}
function Back5(g)
{
 Nxm5(g,-4);
}
function GoStart(g)
{
 if(atgm>=0)Astop();
 Mva(g,-4);
}
function GoEnd(g)
{
 if(atgm>=0)Astop();
 Mva(g,gend[g]);
}
function Forward(g)
{
 if(atgm>=0 && tmc==0)Astop();
 if(gx>=gm[g].length-4)return;
 Mva(g,gx+4);
}
function Back(g)
{
 if(atgm>=0)Astop();
 if(gx<0)return;
 Mva(g,gx-4);
}
function Step(g)
{
}
var files='abcdefgh';
var ranks='87654321';
function GetOrds(sqr,rf)
{
 var co='';
 if(rf&4)
   co=files.charAt(sqr&7);
 if(rf&8)
   co=co+ranks.charAt((sqr&0x38)>>3);
 return co;
}
var chks=['','#','+',''];
function MvStr(g)
{
 var clr;
 posbrd=0;
 if(gx<0){
  WriteCap(gc[g],'black');
  if(gc[g]!='')
   posbrd=1;
  return;
  }

 var mvs=(pc&8)?mn-1:mn;
 mvs=mvs.toString()+'. ';
 if(pc&8)
  mvs += '... ';

 chk=chks[mvflg&3];
 if(gx==gend[g])
  chk+=' '+restr[gres[g]];
 if(cf)
  mvs+=(mvflg&16)?'O-O':'O-O-O';
 else{
 pi=(pc&6)?fench.charAt(pc&7):'';
 pc2='';
 if(pr){
  pc2='='+fench.charAt(pr&7);
  pi='';
 }
 capflg=(capc||ep)?'x':'';
 mvs+=pi+GetOrds(s1,mvflg)+capflg+GetOrds(s2,0x0C)+pc2;
 }
 mvs+=chk;
clr='black';
 WriteCap(mvs,clr);
}
function WriteCap(tx,clr)
{
 if(ns4)return;
 if(ie4){
  if(!doc.getElementById)
   if(tx=='')
    tx='start';
  doc.all['it0'].innerText = tx;
  doc.all['it0'].style.color = clr;
  }
 else{
  if(tx=='')
   tx='&nbsp;';
  doc.getElementById('it0').innerHTML = tx;
  doc.getElementById('it0').style.color = clr;
 }
}
function KeyDown(e)
{
 var key = 0;
 key=ie4?event.keyCode:e.which;
 if(key!=0)
   ActOnKey(key);
}
function ActOnKey(key)
{
 if(key==39||key==102)
   Forward(cg)
 if(key==37||key==100)
   Back(cg)
 if(key==103)
   GoStart(cg)
 if(key==97)
   GoEnd(cg)
 if(key==111)
   Flip(cg)
 if(key==106)
   Astart(cg)
 if(key==96)
   Step(cg);
 if(!posbrd)
  MvStr(cg);
}
var MsX=MsY=0;
var PcX=PcY=0;
var Bx=By=0;
var nq=dgp=dgs=0;
function MsMove()
{
 if(ie4){
  if(dgp){
   MvPc(event.x, event.y);
   }  
 }
}
function MvPc(x,y)
{
 PcX-=MsX-x;
 PcY-=MsY-y;
 MsX=x;
 MsY=y;
 doc.all.pc1.style.pixelLeft=PcX;
 doc.all.pc1.style.pixelTop=PcY;
 return false;
}
function DropPc(g)
{
 var Sx,Sy;

 doc.all.pc1.style.visibility='hidden';

 if(PcX+14<Bx||PcX+14>(Bx+232)){
   PcOffBrd(g);
   return false;
   }
 if(PcY+14<By||PcY+14>(By+232)){
   PcOffBrd(g);
   return false;
   }

 Sx=PcX-Bx+14;
 Sy=PcY-By+14;
 Sx=Math.floor(Sx/29);
 Sy=Math.floor(Sy/29);

 nq=Sy*8+Sx;
 if(gflip[g])
  nq=63-nq;

 Kibitz(g);
 return false;
}
function BrdNum(g)
{
 var s,a8,sqr;

 g=cg;
 if(ns6){
  ns6B=1;
  return false;
 }
 if(ie4){
 e=window.event;
 a8=doc.images[jb].sourceIndex;
 if(dgp==0){
  sqr=doc.elementFromPoint(MsX=e.clientX,MsY=e.clientY).sourceIndex;
  PcX=MsX-e.offsetX+doc.body.scrollLeft;
  PcY=MsY-e.offsetY+doc.body.scrollTop;
  Bx=PcX-doc.all[sqr].offsetLeft;
  By=PcY-doc.all[sqr].offsetTop;
  s=sqr-a8;
  s-=Math.floor(s/9);
  if(gflip[g])
   s=63-s;

  dgp=gb[g][s];
  if(dgp){
   dgs=s;
   col=dgp&8?'b':'w';
   pcstr=imgurl+col+ipcs.charAt(dgp&7)+'.gif';
   doc.images['dpc'].src=pcstr;
   gb[g][s]=0;
   DrawPc(g,0,s);
   doc.all.pc1.style.pixelLeft=PcX;
   doc.all.pc1.style.pixelTop=PcY;
   doc.all.pc1.style.visibility='visible';
   return false;
  }
 }
 else
  DropPc(cg);
  return false;
 }
}
function PcOffBrd(g)
{
alert('Piece Off Board!');
 gb[g][dgs]=dgp;
 DrawPc(g,dgp,dgs);
 dgp=0;
}
function Kibitz(g)
{
 if(dgp==1||dgp==9)
  if(nq<8||nq>55)
    dgp+=4;

 if(dgp==6&&dgs==60)
  if(nq==62)
   DoMv(g,4,61,63);
  else
   if(nq==58)
    DoMv(g,4,59,56);

 if(dgp==14&&dgs==4)
  if(nq==6)
   DoMv(g,12,5,7);
  else
   if(nq==2)
    DoMv(g,12,3,0);

 gb[g][nq]=dgp;
 DrawBoard(g)
 dgp=0;
}
var ns6T=ns6B=0;
function ns6Click(e)
{
 ns6T=e.target;
 if(ns6B)
  ns6Brd(cg);
 else
  dgp=0;
 ns6B=0;
}
function ns6Brd(g)
{
 for(i=0;i<64;i++)
  if(doc.images[jb+i]==ns6T)break;
 if(i<64){
  if(gflip[g])
   i=63-i;
  if(dgp){
   nq=i;
   gb[g][dgs]=0;
   Kibitz(g);
   }
  else{
   dgp=gb[g][i];
   if(dgp)
    dgs=i;
   }
  }
}
function InitSys()
{
 FindScrBrd();
 GoStart(0);
}

