images = new Array(101);
loadedImages = new Array(101); // Array of Bool values
loadedImagesCount = 0;

pole = new Array();
for (k=1; k<11; k++) {
  pole[k] = new Array()
  for (i=1; i<11; i++) {
    pole[k][i] = 0;
  }
}

prgrsWidthMax = 178; // Max width of gaug_prgrs block
prgrsWidt = 0;       // Current width of gaug_prgrs block

var timerID;

gameover = 0;
PrevX = 0; PrevY = 0;
PrevElem = null;
CurMove = 0;

curImage = new Image(32,32);
curImage.src = '/game/current.png';

function pageLoad() {
  document.getElementById("gaug_prgrs").style.width = "0";
  document.getElementById("gaug_wrap").style.visibility = "visible";

  for (k=0; k<101; k++) {
    images[k] = new Image(40,40);
    images[k].src = "/game/"+k+".png";
  }
  for (k=0; k<101; k++) {
    loadedImages[k] = false;
  }
  checkLoadImages();
}

function checkLoadImages() {
  var prgrsStp;

  if (loadedImagesCount == images.length) {
    loadComplete();
    return;
  }
  for (i=0; i<=images.length; i++) {
    if (loadedImages[i] == false && images[i].complete) {
      loadedImages[i] = true;
      if ( (prgrsWidt % 5 == 0) || (prgrsWidt % 10 == 0) ) { prgrsStp=1; } else { prgrsStp=2; } 
      prgrsWidt=prgrsWidt+prgrsStp; if (prgrsWidt>prgrsWidthMax) { prgrsWidt=prgrsWidthMax; }
      document.getElementById("gaug_prgrs").style.width = prgrsWidt + "px";
      loadedImagesCount++;
    }
  }
  timerID = setTimeout("checkLoadImages()",10);
}

function loadComplete()
{
  document.getElementById("gaug_prgrs").style.width = prgrsWidthMax + "px";
  document.getElementById("gaug_wrap").style.visibility = "hidden";
  document.getElementById("msg_wrap").style.visibility = "hidden";
}

function IfGameOver(nowx, nowy) {
  gameover = 0;

  if ((nowx+1 > 0 && nowy+2 > 0)&&(nowx+1 < 11 && nowy+2 < 11))
    if (pole[nowx+1][nowy+2] == 0)
      gameover++; 
  if ((nowx+1 > 0 && nowy-2 > 0)&&(nowx+1 < 11 && nowy-2 < 11))    
    if (pole[nowx+1][nowy-2] == 0)
      gameover++; 
  if ((nowx-1 > 0 && nowy+2 > 0)&&(nowx-1 < 11 && nowy+2 < 11))    
    if (pole[nowx-1][nowy+2] == 0)
      gameover++; 
  if ((nowx-1 > 0 && nowy-2 > 0)&&(nowx-1 < 11 && nowy-2 < 11))    
    if (pole[nowx-1][nowy-2] == 0)
      gameover++; 
  if ((nowx+2 > 0 && nowy+1 > 0)&&(nowx+2 < 11 && nowy+1 < 11))    
    if (pole[nowx+2][nowy+1] == 0)
      gameover++; 
  if ((nowx+2 > 0 && nowy-1 > 0)&&(nowx+2 < 11 && nowy-1 < 11))    
    if (pole[nowx+2][nowy-1] == 0)
      gameover++; 
  if ((nowx-2 > 0 && nowy+1 > 0)&&(nowx-2 < 11 && nowy+1 < 11))    
    if (pole[nowx-2][nowy+1] == 0)
      gameover++; 
  if ((nowx-2 > 0 && nowy-1 > 0)&&(nowx-2 < 11 && nowy-1 < 11))    
    if (pole[nowx-2][nowy-1] == 0)
      gameover++; 
}

function move(event,x,y) {
  if (pole[x][y] == 0)
  {
    var curElement = null;

    if(event.srcElement) curElement = event.srcElement; else curElement = event.target;

    CanDoIt = 0;
    
    if (PrevX == 0 || PrevY == 0)
      CanDoIt = 1;
    else if ((PrevX+1 == x)&&((PrevY+2 == y)||(PrevY-2 == y)))
      CanDoIt = 1;
    else if ((PrevX-1 == x)&&((PrevY+2 == y)||(PrevY-2 == y)))
      CanDoIt = 1;
    else if ((PrevX+2 == x)&&((PrevY+1 == y)||(PrevY-1 == y)))
      CanDoIt = 1;
    else if ((PrevX-2 == x)&&((PrevY+1 == y)||(PrevY-1 == y)))
      CanDoIt = 1;
    else CanDoIt = 0;

    if (CanDoIt == 1)
    {
      CurMove++;	
      pole[x][y] = 1;

      if (PrevElem != null) PrevElem.style.background = "";

      curElement.style.background = "url('" + curImage.src + "') 0 0 no-repeat";
      curElement.src = images[CurMove].src;

      PrevX = x; PrevY = y;
      PrevElem = curElement;
      gameover = 0;
  
      IfGameOver(x,y);
      if ((gameover == 0)&&(CurMove == 100))
        showCongratulationMsg();
      if ((gameover == 0)&&(CurMove != 100))
        showGameOverMsg();
    }
  }

  return false;
}

function restart()
{
  for (k=1; k<11; k++) {
    for (i=1; i<11; i++) {
  	pole[k][i] = 0;
	eval("document.sq"+k+""+i+".src = images[0].src;");
    }
  }
  if (PrevElem != null) PrevElem.style.background = "";

  gameover = 0;
  PrevX = 0; PrevY = 0;
  PrevElem = null;
  CurMove = 0;

  document.getElementById("msg").style.visibility = "hidden";
  document.getElementById("msg_congratulation").style.visibility = "hidden";
  document.getElementById("msg_gameover").style.visibility = "hidden";
  document.getElementById("msg_wrap").style.visibility =  "hidden";
}

function showCongratulationMsg() {
  document.getElementById("msg_wrap").style.visibility = "visible";
  document.getElementById("msg_congratulation").style.visibility = "visible";
  document.getElementById("msg").style.visibility = "visible";
}

function showGameOverMsg() {
  document.getElementById("msg_wrap").style.visibility = "visible";
  document.getElementById("msg_gameover").style.visibility = "visible";
  document.getElementById("msg").style.visibility = "visible";
}

function msgBtnClick()
{
  document.getElementById("msg").style.visibility = "hidden";
  document.getElementById("msg_congratulation").style.visibility = "hidden";
  document.getElementById("msg_gameover").style.visibility = "hidden";
  document.getElementById("msg_wrap").style.visibility =  "hidden";
}
