var active=false

function initialize()
{
  imageOff=new Image()
  imageOff.src="./flipoff.gif"
  imageValid=new Image()
  imageValid.src="./flipval.gif"
  imageOn=new Image()
  imageOn.src="./flipon.gif"
  imageDone=new Image()
  imageDone.src="./flipdone.gif"
  fieldFixed=
    new Array
      (new Array(false,false,false,false,false),
       new Array(false,false,false,false,false),
       new Array(false,false,false,false,false),
       new Array(false,false,false,false,false),
       new Array(false,false,false,false,false))
  lastRow=-1
  lastColumn=-1
  filled=0
}

function doReset()
{
  if (active)
  {
    for (row=0;row<5;row++)
      for (column=0;column<5;column++)
      {
        document.images["field"+row+column].src=imageOff.src
        fieldFixed[row][column]=false
      }
    lastRow=-1
    lastColumn=-1
    filled=0 
  }
}

function finish()
{
  for (row=0;row<5;row++)
    for (column=0;column<5;column++)
      document.images["field"+row+column].src=imageDone.src
  alert("Congratulations! You have managed to flip all 25 tiles.")
}

function isValidElement(row,column)
{
  return !fieldFixed[row][column]&&
         ((lastRow==-1)&&(lastColumn==-1)||
          (Math.abs(row-lastRow)==1)&&(Math.abs(column-lastColumn)==2)||
          (Math.abs(row-lastRow)==2)&&(Math.abs(column-lastColumn)==1))
}

function mouseOver(row,column)
{
  window.status=""
  if (active)
    if (isValidElement(row,column))
      document.images["field"+row+column].src=imageValid.src
}

function mouseOut(row,column)
{
  window.status=""
  if (active)
    if (isValidElement(row,column))
      document.images["field"+row+column].src=imageOff.src
}

function mouseClick(row,column)
{
  if (active)
    if (isValidElement(row,column))
    {
      document.images["field"+row+column].src=imageOn.src
      fieldFixed[row][column]=true
      lastRow=row
      lastColumn=column
      filled++
      if (filled==25)
        finish()
    }
}

function enableScript()
{
  initialize()
  active=true
}
