
/* Copyright (c) 2003 Timothy Sakharov, Alexander Sakharov */


var i;
var tmp;
var tmp2;
var lastx = 3;
var lasty = 3;


function load_f() {
  sr = location.search;
  sr = sr.substring(sr.indexOf("SRC="));

  for (i = 0; i < 101; i++) {
    var perm = Math.floor(Math.random()*4);
    if ( sr.length < 9 || sr.charAt(4) != 's' ) {
          perm += 10;
    }
    if ( perm == 0 && lastx > 1 ) {
      swap(lastx-1, lasty, 1);
    } else if ( perm == 1 && lastx < 3 ) {
      swap(lastx+1, lasty, 1);
    } else if ( perm == 2 && lasty > 1 ) {
      swap(lastx, lasty-1, 1);
    } else if ( perm == 3 && lasty < 3 ) {
      swap(lastx, lasty+1, 1);
    } else if ( perm == 0 && lastx < 3 ) {
      swap(lastx+1, lasty, 1);
    } else if ( perm == 1 && lastx > 1 ) {
      swap(lastx-1, lasty, 1);
    } else if ( perm == 2 && lasty < 3 ) {
      swap(lastx, lasty+1, 1);
    } else if ( perm == 3 && lasty > 1 ) {
      swap(lastx, lasty-1, 1);
    }
  }
}

function isNeighbor(m, n) {
  // neighbor
  if ( ( m - lastx == 1 || lastx - m == 1 ) && n == lasty )
    return 1;
  if ( ( n - lasty == 1 || lasty - n == 1 ) && m == lastx )
    return 1;
  // row/column
  if ( m - lastx == 2 && n == lasty ) {
    return 2;
  } else if ( lastx - m == 2 && n == lasty ) {
    return 3;
  } else if ( n - lasty == 2 && m == lastx ) {
    return 4;
  } else if ( lasty - n == 2 && m == lastx ) {
    return 5;
  // diagonal
  } else if ( lasty - n == 1 && lastx - m == 1 ) {
    return 6;
  } else if ( lasty - n == 1 && m - lastx == 1 ) {
    return 7;
  } else if ( n - lasty == 1 && lastx - m == 1 ) {
    return 8;
  } else if ( n - lasty == 1 && m - lastx == 1 ) {
    return 9;
  }
  return 0;
}

function swap(m, n, k) {

  var itemText1;
  var itemVal1;
  var res = 0;
//alert("A " + m + " " + n + " " + lastx + " " + lasty + " ");
  var prox = isNeighbor(m, n);

  if ( prox == 0 )
    return;

  sr = location.search;
  sr = sr.substring(sr.indexOf("SRC="));

  if ( sr.length < 9 || sr.charAt(6) != 'k' ) {
          return;
  }

  if ( m == 1 && n == 1 ) {
    if ( prox == 6 && document.square12.src.indexOf("black.gif") >= 0 ) {
      tmp2 = document.square12.src;
    } else if ( prox == 6 && document.square21.src.indexOf("black.gif") >= 0 ) {
      tmp2 = document.square21.src;
    } else if ( prox >= 6 ) {
      return;
    }
    tmp = document.square11.src;
    document.square11.src = "../image/grey.gif";
    if ( prox == 3 ) tmp2 = document.square21.src;
    else if ( prox == 5 ) tmp2 = document.square12.src;
  } else if ( m == 1 && n == 2 ) {
    if ( prox == 6 && document.square13.src.indexOf("blackl.gif") >= 0 ) {
      tmp2 = document.square13.src;
    } else if ( prox == 6 && document.square22.src.indexOf("blackl.gif") >= 0 ) {
      tmp2 = document.square22.src;
    } else if ( prox == 8 && document.square11.src.indexOf("blackr.gif") >= 0 ) {
      tmp2 = document.square11.src;
    } else if ( prox == 8 && document.square22.src.indexOf("blackr.gif") >= 0 ) {
      tmp2 = document.square22.src;
    } else if ( prox >= 6 ) {
      return;
    }
    tmp = document.square12.src;
    document.square12.src = "../image/grey.gif";
    if ( prox == 3 ) tmp2 = document.square22.src;
  } else if ( m == 1 && n == 3 ) {
    if ( prox == 8 && document.square12.src.indexOf("black.gif") >= 0 ) {
      tmp2 = document.square12.src;
    } else if ( prox == 8 && document.square23.src.indexOf("black.gif") >= 0 ) {
      tmp2 = document.square23.src;
    } else if ( prox >= 6 ) {
      return;
    }
    tmp = document.square13.src;
    document.square13.src = "../image/grey.gif";
    if ( prox == 3 ) tmp2 = document.square23.src;
    else if ( prox == 4 ) tmp2 = document.square12.src;
  } else if ( m == 2 && n == 1 ) {
    if ( prox == 6 && document.square22.src.indexOf("blackt.gif") >= 0 ) {
      tmp2 = document.square22.src;
    } else if ( prox == 6 && document.square31.src.indexOf("blackt.gif") >= 0 ) {
      tmp2 = document.square31.src;
    } else if ( prox == 7 && document.square11.src.indexOf("blackb.gif") >= 0 ) {
      tmp2 = document.square11.src;
    } else if ( prox == 7 && document.square22.src.indexOf("blackb.gif") >= 0 ) {
      tmp2 = document.square22.src;
    } else if ( prox >= 6 ) {
      return;
    }
    tmp = document.square21.src;
    document.square21.src = "../image/grey.gif";
    if ( prox == 5 ) tmp2 = document.square22.src;
  } else if ( m == 2 && n == 2 ) {
    if ( prox == 9 && document.square12.src.indexOf("blackbr.gif") >= 0 ) {
      tmp2 = document.square12.src;
    } else if ( prox == 9 && document.square21.src.indexOf("blackbr.gif") >= 0 ) {
      tmp2 = document.square21.src;
    } else if ( prox == 7 && document.square12.src.indexOf("blackbl.gif") >= 0 ) {
      tmp2 = document.square12.src;
    } else if ( prox == 7 && document.square23.src.indexOf("blackbl.gif") >= 0 ) {
      tmp2 = document.square23.src;
    } else if ( prox == 8 && document.square21.src.indexOf("blacktr.gif") >= 0 ) {
      tmp2 = document.square21.src;
    } else if ( prox == 8 && document.square32.src.indexOf("blacktr.gif") >= 0 ) {
      tmp2 = document.square32.src;
    } else if ( prox >= 6 ) {
      return;
    }
    tmp = document.square22.src;
    document.square22.src = "../image/grey.gif";
  } else if ( m == 2 && n == 3 ) {
    if ( prox == 9 && document.square13.src.indexOf("blackb.gif") >= 0 ) {
      tmp2 = document.square13.src;
    } else if ( prox == 9 && document.square22.src.indexOf("blackb.gif") >= 0 ) {
      tmp2 = document.square22.src;
    } else if ( prox == 8 && document.square22.src.indexOf("blackt.gif") >= 0 ) {
      tmp2 = document.square22.src;
    } else if ( prox == 8 && document.square33.src.indexOf("blackt.gif") >= 0 ) {
      tmp2 = document.square33.src;
    } else if ( prox >= 6 ) {
      return;
    }
    tmp = document.square23.src;
    document.square23.src = "../image/grey.gif";
    if ( prox == 4 ) tmp2 = document.square22.src;
  } else if ( m == 3 && n == 1 ) {
    if ( prox == 7 && document.square21.src.indexOf("black.gif") >= 0 ) {
      tmp2 = document.square21.src;
    } else if ( prox == 7 && document.square32.src.indexOf("black.gif") >= 0 ) {
      tmp2 = document.square32.src;
    } else if ( prox >= 6 ) {
      return;
    }
    tmp = document.square31.src;
    document.square31.src = "../image/grey.gif";
    if ( prox == 2 ) tmp2 = document.square21.src;
    else if ( prox == 5 ) tmp2 = document.square32.src;
  } else if ( m == 3 && n == 2 ) {
    if ( prox == 9 && document.square31.src.indexOf("blackr.gif") >= 0 ) {
      tmp2 = document.square31.src;
    } else if ( prox == 9 && document.square22.src.indexOf("blackr.gif") >= 0 ) {
      tmp2 = document.square22.src;
    } else if ( prox == 7 && document.square22.src.indexOf("blackl.gif") >= 0 ) {
      tmp2 = document.square22.src;
    } else if ( prox == 7 && document.square33.src.indexOf("blackl.gif") >= 0 ) {
      tmp2 = document.square33.src;
    } else if ( prox >= 6 ) {
      return;
    }
    tmp = document.square32.src;
    document.square32.src = "../image/grey.gif";
    if ( prox == 2 ) tmp2 = document.square22.src;
  } else if ( m == 3 && n == 3 ) {
    if ( prox == 9 && document.square32.src.indexOf("black.gif") >= 0 ) {
      tmp2 = document.square32.src;
    } else if ( prox == 9 && document.square23.src.indexOf("black.gif") >= 0 ) {
      tmp2 = document.square23.src;
    } else if ( prox >= 6 ) {
      return;
    }
    tmp = document.square33.src;
    document.square33.src = "../image/grey.gif";
    if ( prox == 2 ) tmp2 = document.square23.src;
    else if ( prox == 4 ) tmp2 = document.square32.src;
  }

  //
  if ( lastx == 1 && lasty == 1 ) {
    document.square11.src = tmp;
    if ( prox == 2 ) { document.square21.src = tmp; document.square11.src = tmp2; }
    else if ( prox == 4 ) { document.square12.src = tmp; document.square11.src = tmp2; }
    else if ( prox == 9 ) {
      if ( document.square12.src.indexOf("blackbr.gif") >= 0 )
        document.square12.src = tmp;
      else if ( document.square21.src.indexOf("blackbr.gif") >= 0 )
        document.square21.src = tmp;
      document.square11.src = tmp2;
    }
  } else if ( lastx == 1 && lasty == 2 ) {
    document.square12.src = tmp;
    if ( prox == 2 ) { document.square22.src = tmp; document.square12.src = tmp2; }
    else if ( prox == 7 ) {
      if ( document.square11.src.indexOf("blackb.gif") >= 0 )
        document.square11.src = tmp;
      else if ( document.square22.src.indexOf("blackb.gif") >= 0 )
        document.square22.src = tmp;
      document.square12.src = tmp2;
    } else if ( prox == 9 ) {
      if ( document.square13.src.indexOf("blackb.gif") >= 0 )
        document.square13.src = tmp;
      else if ( document.square22.src.indexOf("blackb.gif") >= 0 )
        document.square22.src = tmp;
      document.square12.src = tmp2;
    }
  } else if ( lastx == 1 && lasty == 3 ) {
    document.square13.src = tmp;
    if ( prox == 2 ) { document.square23.src = tmp; document.square13.src = tmp2; }
    else if ( prox == 5 ) { document.square12.src = tmp; document.square13.src = tmp2; }
    else if ( prox == 7 ) {
      if ( document.square12.src.indexOf("blackbl.gif") >= 0 )
        document.square12.src = tmp;
      else if ( document.square23.src.indexOf("blackbl.gif") >= 0 )
        document.square23.src = tmp;
      document.square13.src = tmp2;
    }
  } else if ( lastx == 2 && lasty == 1 ) {
    document.square21.src = tmp;
    if ( prox == 4 ) { document.square22.src = tmp; document.square21.src = tmp2; }
    else if ( prox == 8 ) {
      if ( document.square11.src.indexOf("blackr.gif") >= 0 )
        document.square11.src = tmp;
      else if ( document.square22.src.indexOf("blackr.gif") >= 0 )
        document.square22.src = tmp;
      document.square21.src = tmp2;
    } else if ( prox == 9 ) {
      if ( document.square22.src.indexOf("blackr.gif") >= 0 )
        document.square22.src = tmp;
      else if ( document.square31.src.indexOf("blackr.gif") >= 0 )
        document.square31.src = tmp;
      document.square21.src = tmp2;
    }
  } else if ( lastx == 2 && lasty == 2 ) {
    document.square22.src = tmp;
    if ( prox == 6 ) {
      if ( document.square12.src.indexOf("black.gif") >= 0 )
        document.square12.src = tmp;
      else if ( document.square21.src.indexOf("black.gif") >= 0 )
        document.square21.src = tmp;
      document.square22.src = tmp2;
    } else if ( prox == 8 ) {
      if ( document.square23.src.indexOf("black.gif") >= 0 )
        document.square23.src = tmp;
      else if ( document.square12.src.indexOf("black.gif") >= 0 )
        document.square12.src = tmp;
      document.square22.src = tmp2;
    } else if ( prox == 7 ) {
      if ( document.square21.src.indexOf("black.gif") >= 0 )
        document.square21.src = tmp;
      else if ( document.square32.src.indexOf("black.gif") >= 0 )
        document.square32.src = tmp;
      document.square22.src = tmp2;
    } else if ( prox == 9 ) {
      if ( document.square23.src.indexOf("black.gif") >= 0 )
        document.square23.src = tmp;
      else if ( document.square32.src.indexOf("black.gif") >= 0 )
        document.square32.src = tmp;
      document.square22.src = tmp2;
    }
  } else if ( lastx == 2 && lasty == 3 ) {
    document.square23.src = tmp;
    if ( prox == 5 ) { document.square22.src = tmp; document.square23.src = tmp2; }
    else if ( prox == 6 ) {
      if ( document.square22.src.indexOf("blackl.gif") >= 0 )
        document.square22.src = tmp;
      else if ( document.square13.src.indexOf("blackl.gif") >= 0 )
        document.square13.src = tmp;
      document.square23.src = tmp2;
    } else if ( prox == 7 ) {
      if ( document.square22.src.indexOf("blackl.gif") >= 0 )
        document.square22.src = tmp;
      else if ( document.square33.src.indexOf("blackl.gif") >= 0 )
        document.square33.src = tmp;
      document.square23.src = tmp2;
    }
  } else if ( lastx == 3 && lasty == 1 ) {
    document.square31.src = tmp;
    if ( prox == 3 ) { document.square21.src = tmp; document.square31.src = tmp2; }
    else if ( prox == 4 ) { document.square32.src = tmp; document.square31.src = tmp2; }
    else if ( prox == 8 ) {
      if ( document.square21.src.indexOf("blacktr.gif") >= 0 )
        document.square21.src = tmp;
      else if ( document.square32.src.indexOf("blacktr.gif") >= 0 )
        document.square32.src = tmp;
      document.square31.src = tmp2;
    }
  } else if ( lastx == 3 && lasty == 2 ) {
    document.square32.src = tmp;
    if ( prox == 3 ) { document.square22.src = tmp; document.square32.src = tmp2; }
    else if ( prox == 8 ) {
      if ( document.square22.src.indexOf("blackt.gif") >= 0 )
        document.square22.src = tmp;
      else if ( document.square33.src.indexOf("blackt.gif") >= 0 )
        document.square33.src = tmp;
      document.square32.src = tmp2;
    } else if ( prox == 6 ) {
      if ( document.square22.src.indexOf("blackt.gif") >= 0 )
        document.square22.src = tmp;
      else if ( document.square31.src.indexOf("blackt.gif") >= 0 )
        document.square31.src = tmp;
      document.square32.src = tmp2;
    }
  } else if (lastx == 3 && lasty == 3 ) {
    document.square33.src = tmp;
    if ( prox == 3 ) { document.square23.src = tmp; document.square33.src = tmp2; }
    else if ( prox == 5 ) { document.square32.src = tmp; document.square33.src = tmp2; }
  }

  lastx = m;
  lasty = n;

  if ( sr.length < 11 || sr.charAt(8) != sr.charAt(5) ) {
          return;
  }

  if ( k == 0
  && document.square11.src.indexOf("blackbr.gif") >= 0
  && document.square12.src.indexOf("blackb.gif") >= 0
  && document.square13.src.indexOf("blackbl.gif") >= 0
  && document.square21.src.indexOf("blackr.gif") >= 0
  && document.square22.src.indexOf("black.gif") >= 0
  && document.square23.src.indexOf("blackl.gif") >= 0
  && document.square31.src.indexOf("blacktr.gif") >= 0
  && document.square32.src.indexOf("blackt.gif") >= 0
  && document.square33.src.indexOf("grey.gif") >= 0 ) {
     location.replace("http://sakharov.net/puzzle/eightsolved.html");
  }
}




