
/* Copyright (c) 2003 Timothy Sakharov, Alexander Sakharov */


var i;
//var arr = new Array();
var tmp;
var sr;
var lastMove;
lastMove = -1;

/*for (i = 0; i < 4; i++) {
  arr[i] = new Array();
}*/

function load_f() {
  for (i = 0; i < 19; i++) {
    var perm = Math.floor(Math.random()*12);
    if ( perm < 6 ) {
      swapRow(perm);
    } else {
      swapColumn(perm - 6);
    }
  }
}

function load_full() {
  for (i = 0; i < 29; i++) {
    var perm = Math.floor(Math.random()*16);
    if ( perm < 6 ) {
      swapRow(perm);
    } else if ( perm < 12 ) {
      swapColumn(perm - 6);
    } else {
      swapSquare(perm - 12);
    }
  }
}


function swapRow(n) {

  var itemText1;
  var itemVal1;
  var res = 0;

  sr = location.search;
  sr = sr.substring(sr.indexOf("SRC="));

  if ( sr.length < 9 || sr.charAt(7) != 'h' ) {
          return;
  }

  if ( n == 0 ) {
    itemValue1 = '12';
  } else if ( n == 1 ) {
    itemValue1 = '13';
  } else if ( n == 2 ) {
    itemValue1 = '14';
  } else if ( n == 3 ) {
    itemValue1 = '23';
  } else if ( n == 4 ) {
    itemValue1 = '24';
  } else if ( n == 5 ) {
    itemValue1 = '34';
  } else { // n is not given
    var ind = document.theForm.row.selectedIndex;
    if ( ind == -1 ) {
      alert("No row selected");
      return false;
    }

    itemText1 = document.theForm.row.options[ind].text;
    itemValue1 = document.theForm.row.options[ind].value;
    if ( itemValue1.charAt(0) == '-' ) {
      alert("No row selected");
      return false;
    }
  }

  if ( itemValue1 == '12' ) {
      lastMove = 0;
      tmp = document.square11.src;
      document.square11.src = document.square21.src;
      document.square21.src = tmp;

      tmp = document.square12.src;
      document.square12.src = document.square22.src;
      document.square22.src = tmp;

      tmp = document.square13.src;
      document.square13.src = document.square23.src;
      document.square23.src = tmp;

      tmp = document.square14.src;
      document.square14.src = document.square24.src;
      document.square24.src = tmp;
  } else if ( itemValue1 == '13' ) {
      lastMove = 1;
      tmp = document.square11.src;
      document.square11.src = document.square31.src;
      document.square31.src = tmp;

      tmp = document.square12.src;
      document.square12.src = document.square32.src;
      document.square32.src = tmp;

      tmp = document.square13.src;
      document.square13.src = document.square33.src;
      document.square33.src = tmp;

      tmp = document.square14.src;
      document.square14.src = document.square34.src;
      document.square34.src = tmp;
  } else if ( itemValue1 == '14' ) {
      lastMove = 2;
      tmp = document.square11.src;
      document.square11.src = document.square41.src;
      document.square41.src = tmp;

      tmp = document.square12.src;
      document.square12.src = document.square42.src;
      document.square42.src = tmp;

      tmp = document.square13.src;
      document.square13.src = document.square43.src;
      document.square43.src = tmp;

      tmp = document.square14.src;
      document.square14.src = document.square44.src;
      document.square44.src = tmp;
  } else if ( itemValue1 == '23' ) {
      lastMove = 3;
      tmp = document.square21.src;
      document.square21.src = document.square31.src;
      document.square31.src = tmp;

      tmp = document.square22.src;
      document.square22.src = document.square32.src;
      document.square32.src = tmp;

      tmp = document.square23.src;
      document.square23.src = document.square33.src;
      document.square33.src = tmp;

      tmp = document.square24.src;
      document.square24.src = document.square34.src;
      document.square34.src = tmp;
  } else if ( itemValue1 == '24' ) {
      lastMove = 4;
      tmp = document.square21.src;
      document.square21.src = document.square41.src;
      document.square41.src = tmp;

      tmp = document.square22.src;
      document.square22.src = document.square42.src;
      document.square42.src = tmp;

      tmp = document.square23.src;
      document.square23.src = document.square43.src;
      document.square43.src = tmp;

      tmp = document.square24.src;
      document.square24.src = document.square44.src;
      document.square44.src = tmp;
  } else if ( itemValue1 == '34' ) {
      lastMove = 5;
      tmp = document.square31.src;
      document.square31.src = document.square41.src;
      document.square41.src = tmp;

      tmp = document.square32.src;
      document.square32.src = document.square42.src;
      document.square42.src = tmp;

      tmp = document.square33.src;
      document.square33.src = document.square43.src;
      document.square43.src = tmp;

      tmp = document.square34.src;
      document.square34.src = document.square44.src;
      document.square44.src = tmp;
  }

  if ( sr.length < 11 || sr.charAt(10) != 'o' ) {
          return true;
  }

  document.theForm.row.selectedIndex = 0;
  if ( n < 0
  && document.square11.src.indexOf("br.gif") >= 0
  && document.square12.src.indexOf("bl.gif") >= 0
  && document.square13.src.indexOf("br.gif") >= 0
  && document.square14.src.indexOf("bl.gif") >= 0
  && document.square21.src.indexOf("tr.gif") >= 0
  && document.square22.src.indexOf("tl.gif") >= 0
  && document.square23.src.indexOf("tr.gif") >= 0
  && document.square24.src.indexOf("tl.gif") >= 0
  && document.square31.src.indexOf("br.gif") >= 0
  && document.square32.src.indexOf("bl.gif") >= 0
  && document.square33.src.indexOf("br.gif") >= 0
  && document.square34.src.indexOf("bl.gif") >= 0
  && document.square41.src.indexOf("tr.gif") >= 0
  && document.square42.src.indexOf("tl.gif") >= 0
  && document.square43.src.indexOf("tr.gif") >= 0
  && document.square44.src.indexOf("tl.gif") >= 0 ) {
     location.replace("diamond4solved.html");
  }
}

function swapColumn(n) {

  var itemText1;
  var itemVal1;
  var res = 0;

  sr = location.search;
  sr = sr.substring(sr.indexOf("SRC="));

  if ( sr.length < 9 || sr.charAt(7) != 'h' ) {
          return;
  }

  if ( n == 0 ) {
    itemValue1 = '12';
  } else if ( n == 1 ) {
    itemValue1 = '13';
  } else if ( n == 2 ) {
    itemValue1 = '14';
  } else if ( n == 3 ) {
    itemValue1 = '23';
  } else if ( n == 4 ) {
    itemValue1 = '24';
  } else if ( n == 5 ) {
    itemValue1 = '34';
  } else { // n is not given
    var ind = document.theForm.column.selectedIndex;
    if ( ind == -1 ) {
      alert("No row selected");
      return false;
    }

    itemText1 = document.theForm.column.options[ind].text;
    itemValue1 = document.theForm.column.options[ind].value;
    if ( itemValue1.charAt(0) == '-' ) {
      alert("No row selected");
      return false;
    }
  }

  if ( itemValue1 == '12' ) {
      lastMove = 6;
      tmp = document.square11.src;
      document.square11.src = document.square12.src;
      document.square12.src = tmp;

      tmp = document.square21.src;
      document.square21.src = document.square22.src;
      document.square22.src = tmp;

      tmp = document.square31.src;
      document.square31.src = document.square32.src;
      document.square32.src = tmp;

      tmp = document.square41.src;
      document.square41.src = document.square42.src;
      document.square42.src = tmp;
  } else if ( itemValue1 == '13' ) {
      lastMove = 7;
      tmp = document.square11.src;
      document.square11.src = document.square13.src;
      document.square13.src = tmp;

      tmp = document.square21.src;
      document.square21.src = document.square23.src;
      document.square23.src = tmp;

      tmp = document.square31.src;
      document.square31.src = document.square33.src;
      document.square33.src = tmp;

      tmp = document.square41.src;
      document.square41.src = document.square43.src;
      document.square43.src = tmp;
  } else if ( itemValue1 == '14' ) {
      lastMove = 8;
      tmp = document.square11.src;
      document.square11.src = document.square14.src;
      document.square14.src = tmp;

      tmp = document.square21.src;
      document.square21.src = document.square24.src;
      document.square24.src = tmp;

      tmp = document.square31.src;
      document.square31.src = document.square34.src;
      document.square34.src = tmp;

      tmp = document.square41.src;
      document.square41.src = document.square44.src;
      document.square44.src = tmp;
  } else if ( itemValue1 == '23' ) {
      lastMove = 9;
      tmp = document.square12.src;
      document.square12.src = document.square13.src;
      document.square13.src = tmp;

      tmp = document.square22.src;
      document.square22.src = document.square23.src;
      document.square23.src = tmp;

      tmp = document.square32.src;
      document.square32.src = document.square33.src;
      document.square33.src = tmp;

      tmp = document.square42.src;
      document.square42.src = document.square43.src;
      document.square43.src = tmp;
  } else if ( itemValue1 == '24' ) {
      lastMove = 10;
      tmp = document.square12.src;
      document.square12.src = document.square14.src;
      document.square14.src = tmp;

      tmp = document.square22.src;
      document.square22.src = document.square24.src;
      document.square24.src = tmp;

      tmp = document.square32.src;
      document.square32.src = document.square34.src;
      document.square34.src = tmp;

      tmp = document.square42.src;
      document.square42.src = document.square44.src;
      document.square44.src = tmp;
  } else if ( itemValue1 == '34' ) {
      lastMove = 11;
      tmp = document.square13.src;
      document.square13.src = document.square14.src;
      document.square14.src = tmp;

      tmp = document.square23.src;
      document.square23.src = document.square24.src;
      document.square24.src = tmp;

      tmp = document.square33.src;
      document.square33.src = document.square34.src;
      document.square34.src = tmp;

      tmp = document.square43.src;
      document.square43.src = document.square44.src;
      document.square44.src = tmp;
  }

  if ( sr.length < 11 || sr.charAt(10) != 'o' ) {
          return true;
  }
  document.theForm.column.selectedIndex = 0;
  if ( n < 0
  && document.square11.src.indexOf("br.gif") >= 0
  && document.square12.src.indexOf("bl.gif") >= 0
  && document.square13.src.indexOf("br.gif") >= 0
  && document.square14.src.indexOf("bl.gif") >= 0
  && document.square21.src.indexOf("tr.gif") >= 0
  && document.square22.src.indexOf("tl.gif") >= 0
  && document.square23.src.indexOf("tr.gif") >= 0
  && document.square24.src.indexOf("tl.gif") >= 0
  && document.square31.src.indexOf("br.gif") >= 0
  && document.square32.src.indexOf("bl.gif") >= 0
  && document.square33.src.indexOf("br.gif") >= 0
  && document.square34.src.indexOf("bl.gif") >= 0
  && document.square41.src.indexOf("tr.gif") >= 0
  && document.square42.src.indexOf("tl.gif") >= 0
  && document.square43.src.indexOf("tr.gif") >= 0
  && document.square44.src.indexOf("tl.gif") >= 0 ) {
     location.replace("diamond4solved.html");
  }
}

function swapSquare(n) {

  var itemText1;
  var itemVal1;
  var res = 0;

  sr = location.search;
  sr = sr.substring(sr.indexOf("SRC="));

  if ( sr.length < 9 || sr.charAt(7) != 'h' ) {
          return;
  }

  if ( n == 0 ) {
    itemValue1 = 'top';
  } else if ( n == 1 ) {
    itemValue1 = 'bottom';
  } else if ( n == 2 ) {
    itemValue1 = 'left';
  } else if ( n == 3 ) {
    itemValue1 = 'right';
  } else { // n is not given
    var ind = document.theForm.square.selectedIndex;
    if ( ind == -1 ) {
      alert("No row selected");
      return false;
    }

    itemText1 = document.theForm.square.options[ind].text;
    itemValue1 = document.theForm.square.options[ind].value;
    if ( itemValue1.charAt(0) == '-' ) {
      alert("No row selected");
      return false;
    }
  }

  if ( itemValue1 == 'top' ) {
      lastMove = 12;
      tmp = document.square11.src;
      document.square11.src = document.square13.src;
      document.square13.src = tmp;

      tmp = document.square12.src;
      document.square12.src = document.square14.src;
      document.square14.src = tmp;

      tmp = document.square21.src;
      document.square21.src = document.square23.src;
      document.square23.src = tmp;

      tmp = document.square22.src;
      document.square22.src = document.square24.src;
      document.square24.src = tmp;
  } else if ( itemValue1 == 'bottom' ) {
      lastMove = 13;
      tmp = document.square31.src;
      document.square31.src = document.square33.src;
      document.square33.src = tmp;

      tmp = document.square32.src;
      document.square32.src = document.square34.src;
      document.square34.src = tmp;

      tmp = document.square41.src;
      document.square41.src = document.square43.src;
      document.square43.src = tmp;

      tmp = document.square42.src;
      document.square42.src = document.square44.src;
      document.square44.src = tmp;
  } else if ( itemValue1 == 'left' ) {
      lastMove = 14;
      tmp = document.square11.src;
      document.square11.src = document.square31.src;
      document.square31.src = tmp;

      tmp = document.square12.src;
      document.square12.src = document.square32.src;
      document.square32.src = tmp;

      tmp = document.square21.src;
      document.square21.src = document.square41.src;
      document.square41.src = tmp;

      tmp = document.square22.src;
      document.square22.src = document.square42.src;
      document.square42.src = tmp;
  } else if ( itemValue1 == 'right' ) {
      lastMove = 15;
      tmp = document.square13.src;
      document.square13.src = document.square33.src;
      document.square33.src = tmp;

      tmp = document.square14.src;
      document.square14.src = document.square34.src;
      document.square34.src = tmp;

      tmp = document.square23.src;
      document.square23.src = document.square43.src;
      document.square43.src = tmp;

      tmp = document.square24.src;
      document.square24.src = document.square44.src;
      document.square44.src = tmp;
  }

  if ( sr.length < 11 || sr.charAt(8) != sr.charAt(5) ) {
          return true;
  }

  document.theForm.square.selectedIndex = 0;
  if ( n < 0
  && document.square11.src.indexOf("br.gif") >= 0
  && document.square12.src.indexOf("bl.gif") >= 0
  && document.square13.src.indexOf("br.gif") >= 0
  && document.square14.src.indexOf("bl.gif") >= 0
  && document.square21.src.indexOf("tr.gif") >= 0
  && document.square22.src.indexOf("tl.gif") >= 0
  && document.square23.src.indexOf("tr.gif") >= 0
  && document.square24.src.indexOf("tl.gif") >= 0
  && document.square31.src.indexOf("br.gif") >= 0
  && document.square32.src.indexOf("bl.gif") >= 0
  && document.square33.src.indexOf("br.gif") >= 0
  && document.square34.src.indexOf("bl.gif") >= 0
  && document.square41.src.indexOf("tr.gif") >= 0
  && document.square42.src.indexOf("tl.gif") >= 0
  && document.square43.src.indexOf("tr.gif") >= 0
  && document.square44.src.indexOf("tl.gif") >= 0 ) {
     location.replace("http://sakharov.net/puzzle/diamond4solved.html");
  }
}

function undo() {
  if ( lastMove >= 0 ) {
    if ( lastMove < 6 ) {
      swapRow(lastMove);
    } else if ( lastMove < 12 ) {
      swapColumn(lastMove - 6);
    }
  }
  lastMove = -1;
}

function undo_full() {
  if ( lastMove >= 0 ) {
    if ( lastMove < 6 ) {
      swapRow(lastMove);
    } else if ( lastMove < 12 ) {
      swapColumn(lastMove - 6);
    } else if ( lastMove < 16 ) {
      swapSquare(lastMove - 12);
    }
  }
  lastMove = -1;
}


