// JavaScript Document
var n, m, IsOver, StartTime, EndTime, I_Sel, J_Sel, MoveCount, MaxMoveCount;
Pic= new Array(3);

for (n=0; n<3; n++)
{ Pic[n] = new Image(); 
  Pic[n].src = "images/peg_"+eval(n)+"1.gif"; 
}
Fld=new Array(5);
for (n=0; n<5; n++)
  Fld[n]=new Array(5);
History=new Array(4);
for (i=0; i<4; i++) History[i]=new Array();

function Init()
{ var nn, mm;
  for (nn=0; nn<5; nn++)
  { for (mm=0; mm<5; mm++)
      Fld[nn][mm]=-1;
  }
  for (nn=0; nn<3; nn++)
  { for (mm=0; mm<3; mm++)
    { Fld[nn][mm]=1;
      Fld[nn+2][mm+2]=2;
    }
  }
  Fld[2][2]=0;
  I_Sel=2;
  J_Sel=2;
  MoveCount=0;
  MaxMoveCount=0;
  IsOver=false;
  RefreshScreen();
  window.document.OptionsForm.Moves.value=" 0 ";
  Now = new Date();
  StartTime = Now.getTime() / 1000;
}

function Back()
{ if (MoveCount==0) return;
  IsOver=0;
  MoveCount--;
  var nn=History[2][MoveCount];
  var mm=History[3][MoveCount];
  Fld[I_Sel][J_Sel]=Fld[nn][mm];
  Fld[nn][mm]=0;
  RefreshFld(I_Sel, J_Sel);
  RefreshFld(nn,mm);
  I_Sel=nn;
  J_Sel=mm;
  if (MoveCount<10)
    window.document.OptionsForm.Moves.value=" "+MoveCount+" ";
  else
    window.document.OptionsForm.Moves.value=MoveCount;
}

function Replay()
{ if (MoveCount>=MaxMoveCount) return;
  var nn=History[0][MoveCount];
  var mm=History[1][MoveCount];
  Fld[I_Sel][J_Sel]=Fld[nn][mm];
  Fld[nn][mm]=0;
  RefreshFld(I_Sel, J_Sel);
  RefreshFld(nn,mm);
  I_Sel=nn;
  J_Sel=mm;
  MoveCount++;
  if (MoveCount<10)
    window.document.OptionsForm.Moves.value=" "+MoveCount+" ";
  else
    window.document.OptionsForm.Moves.value=MoveCount;
}

function GoFirst()
{ while (MoveCount>0) Back();
}

function GoLast()
{ while (MoveCount<MaxMoveCount) Replay();
}

function Clicked(ii, jj)
{ if (IsOver) return;
  if ((ii+jj)%2!=0) return;
  var mm=(ii+jj)/2-1;
  var nn=(jj-ii)/2+1;
  if ((nn>2)&&(mm<2)) return;
  if ((nn<2)&&(mm>2)) return;
  if ((nn!=I_Sel)&&(mm!=J_Sel)) return;
  if ((nn==I_Sel)&&(mm==J_Sel)) return;
  if (Math.abs(mm-J_Sel)>2) return;
  if (Math.abs(nn-I_Sel)>2) return;
  Fld[I_Sel][J_Sel]=Fld[nn][mm];
  Fld[nn][mm]=0;
  RefreshFld(I_Sel, J_Sel);
  RefreshFld(nn,mm);
  if (History[0][MoveCount]!=nn)
  { History[0][MoveCount]=nn;
    MaxMoveCount=MoveCount+1;
  }
  if (History[1][MoveCount]!=mm)
  { History[1][MoveCount]=mm;
    MaxMoveCount=MoveCount+1;
  }
  if (History[2][MoveCount]!=I_Sel)
  { History[2][MoveCount]=I_Sel;
    MaxMoveCount=MoveCount+1;
  }
  if (History[3][MoveCount]!=J_Sel)
  { History[3][MoveCount]=J_Sel;
    MaxMoveCount=MoveCount+1;
  }
  MoveCount++;
  if (MaxMoveCount<MoveCount)
    MaxMoveCount=MoveCount;
  if (MoveCount<10)
    window.document.OptionsForm.Moves.value=" "+MoveCount+" ";
  else
    window.document.OptionsForm.Moves.value=MoveCount;
  I_Sel=nn;
  J_Sel=mm;
  OverTest();
} 

function OverTest()
{ var nn, mm;
  if (IsOver) return;
  for (nn=0; nn<3; nn++)
  { for (mm=0; mm<3; mm++)
    { if (Fld[nn][mm]==1) return;
      if (Fld[nn+2][mm+2]==2) return;
    }
  }
  IsOver=true;
  Now = new Date();
  EndTime = Now.getTime() / 1000;
  nn=Math.floor(EndTime - StartTime);
  alert("Super, you solved this game in "+nn+ " seconds !");
}

function RefreshScreen()
{ var nn, mm;
  for (nn=0; nn < 5; nn++)
  { for (mm=0; mm < 5; mm++)
    { if (Fld[nn][mm]>=0) RefreshFld(nn, mm);
    }
  }
}

function RefreshFld(nn, mm)
{ window.document.images[9*(2+mm-nn)+(mm+nn)].src = Pic[Fld[nn][mm]].src;
}

