window.onload = initPage;
var tries=0;
var type = 2;
function randOrd() {
return (Math.round(Math.random())-0.5); 
} 

function randImgs() {
anyArray = new Array('cell11','cell12','cell13','cell14','cell15','cell16','cell21','cell22','cell23','cell24','cell25','cell26','cell31','cell32','cell33','cell34','cell35','cell36','cell41','cell42','cell43','cell44','cell45','cell46','cell51','cell52','cell53','cell54','cell55','cell56','cell61','cell62','cell63','cell64','cell65','cell66');
anyArray.sort( randOrd );   // Randomized array
//alert('Random : ' + anyArray); 

  var table = document.getElementById("puzzleGrid"); 
  var cells = table.getElementsByTagName("td");
  for (var i=0; i<cells.length/2; i++) {
		testCellId=anyArray[i];  // 0-17
		testCellId2=anyArray[cells.length-i-1];  // 35-18
		
    var testCell = document.getElementById(testCellId);	
    var testCell2 = document.getElementById(testCellId2);

      swapTiles(testCell, testCell2);
  }
      updateTries(true);
	  document.getElementById("levelIndicator").innerHTML = "Random";
	  BEGIN();
	  return;
}

function levelImgs(level) {
anyArray = new Array('cell11','cell12','cell13','cell14','cell15','cell16','cell21','cell22','cell23','cell24','cell25','cell26','cell31','cell32','cell33','cell34','cell35','cell36','cell41','cell42','cell43','cell44','cell45','cell46','cell51','cell52','cell53','cell54','cell55','cell56','cell61','cell62','cell63','cell64','cell65','cell66');
Aimgs= new Array(33);

if (type==1) {
	folder = 'image1';	
} else if (type==2) {
	folder = 'images';
} else if (type==3) {
	folder = 'image2';	
} else {
	folder = 'image3';
}

if (level==1) { 
  var table = document.getElementById("puzzleGrid"); 
  var cells = table.getElementsByTagName("td");
  for (var i=1; i<=cells.length-3; i++) {
	testCellId=anyArray[i-1];  
		
    var testCell = document.getElementById(testCellId);	
  testCell.removeChild;
  if (i<10) {
 		testCell.innerHTML ="<img src='"+folder+"/0"+i+".gif' alt='"+i+"' height='69' width='69' id='"+"p"+i+"' />";
  } else {
	    testCell.innerHTML ="<img src='"+folder+"/"+i+".gif' alt='"+i+"' height='69' width='69' id='"+"p"+i+"' />";
  }
  }  // end for

    var testCell = document.getElementById('cell64');	
    testCell.innerHTML ="<img src='"+folder+"/empty.gif' alt='empty' height='69' width='69' id='empty' />";

    var testCell1 = document.getElementById('cell65');	
    testCell1.innerHTML ="<img src='"+folder+"/1empty.gif' alt='1empty' height='69' width='69' id='empty1' />";
	
    var testCell2 = document.getElementById('cell66');	
    testCell2.innerHTML ="<img src='"+folder+"/2empty.gif' alt='2empty' height='69' width='69' id='empty2' />";
 
    
	var testCell3 = document.getElementById('cell11');	
	
    var testCell4 = document.getElementById('cell61');	
	
	swapTiles(testCell3,testCell4)
	
  } else if (level==2) { 
  var table = document.getElementById("puzzleGrid"); 
  var cells = table.getElementsByTagName("td");
  for (var i=1; i<=cells.length-3; i++) {
	testCellId=anyArray[i-1];  
		
    var testCell = document.getElementById(testCellId);	
  testCell.removeChild;
  if (i<10) {
 		testCell.innerHTML ="<img src='"+folder+"/0"+i+".gif' alt='"+i+"' height='69' width='69' id='"+"p"+i+"' />";
  } else {
	    testCell.innerHTML ="<img src='"+folder+"/"+i+".gif' alt='"+i+"' height='69' width='69' id='"+"p"+i+"' />";
  }
  }  // end for

    var testCell = document.getElementById('cell64');	
    testCell.innerHTML ="<img src='"+folder+"/empty.gif' alt='empty' height='69' width='69' id='empty' />";

    var testCell = document.getElementById('cell65');	
    testCell.innerHTML ="<img src='"+folder+"/1empty.gif' alt='1empty' height='69' width='69' id='empty1' />";
	
    var testCell = document.getElementById('cell66');	
    testCell.innerHTML ="<img src='"+folder+"/2empty.gif' alt='2empty' height='69' width='69' id='empty2' />";
 
 
 
 	var testCell3 = document.getElementById('cell11');	
	
    var testCell4 = document.getElementById('cell61');	
	
	swapTiles(testCell3,testCell4)
 
 
 
    var testCell5 = document.getElementById('cell16');	
	
    var testCell6 = document.getElementById('cell63');	
	swapTiles(testCell5,testCell6)

  } else if (level==3) { 
  var table = document.getElementById("puzzleGrid"); 
  var cells = table.getElementsByTagName("td");
  for (var i=1; i<=cells.length-3; i++) {
	testCellId=anyArray[i-1];  
		
    var testCell = document.getElementById(testCellId);	
  testCell.removeChild;
  if (i<10) {
 		testCell.innerHTML ="<img src='"+folder+"/0"+i+".gif' alt='"+i+"' height='69' width='69' id='"+"p"+i+"' />";
  } else {
	    testCell.innerHTML ="<img src='"+folder+"/"+i+".gif' alt='"+i+"' height='69' width='69' id='"+"p"+i+"' />";
  }
  }  // end for

    var testCell = document.getElementById('cell64');	
    testCell.innerHTML ="<img src='"+folder+"/empty.gif' alt='empty' height='69' width='69' id='empty' />";

    var testCell = document.getElementById('cell65');	
    testCell.innerHTML ="<img src='"+folder+"/1empty.gif' alt='1empty' height='69' width='69' id='empty1' />";
	
    var testCell = document.getElementById('cell66');	
    testCell.innerHTML ="<img src='"+folder+"/2empty.gif' alt='2empty' height='69' width='69' id='empty2' />";

 
 	var testCell3 = document.getElementById('cell11');	
	
    var testCell4 = document.getElementById('cell61');	
	
	swapTiles(testCell3,testCell4)
 
    var testCell5 = document.getElementById('cell16');	
	
    var testCell6 = document.getElementById('cell63');	
	swapTiles(testCell5,testCell6)

    var testCell7 = document.getElementById('cell31');	
	
    var testCell8 = document.getElementById('cell46');	
	swapTiles(testCell7,testCell8)
  } else if (level==4) { 
  var table = document.getElementById("puzzleGrid"); 
  var cells = table.getElementsByTagName("td");
  for (var i=1; i<=cells.length-3; i++) {
	testCellId=anyArray[i-1];  
		
    var testCell = document.getElementById(testCellId);	
  testCell.removeChild;
  if (i<10) {
 		testCell.innerHTML ="<img src='"+folder+"/0"+i+".gif' alt='"+i+"' height='69' width='69' id='"+"p"+i+"' />";
  } else {
	    testCell.innerHTML ="<img src='"+folder+"/"+i+".gif' alt='"+i+"' height='69' width='69' id='"+"p"+i+"' />";
  }
  }  // end for

    var testCell = document.getElementById('cell61');	
    testCell.innerHTML ="<img src='"+folder+"/30.gif' alt='30' height='69' width='69' id='p30' />";
    var testCell = document.getElementById('cell62');	
    testCell.innerHTML ="<img src='"+folder+"/31.gif' alt='31' height='69' width='69' id='p31' />";

    var testCell = document.getElementById('cell65');	
    testCell.innerHTML ="<img src='"+folder+"/32.gif' alt='32' height='69' width='69' id='p32' />";
	
    var testCell = document.getElementById('cell66');	
    testCell.innerHTML ="<img src='"+folder+"/33.gif' alt='33' height='69' width='69' id='p33' />";
	
	
    var testCell = document.getElementById('cell56');	
    testCell.innerHTML ="<img src='"+folder+"/empty.gif' alt='empty' height='69' width='69' id='empty' />";

    var testCell = document.getElementById('cell63');	
    testCell.innerHTML ="<img src='"+folder+"/1empty.gif' alt='1empty' height='69' width='69' id='empty1' />";
	
    var testCell = document.getElementById('cell64');	
    testCell.innerHTML ="<img src='"+folder+"/2empty.gif' alt='2empty' height='69' width='69' id='empty2' />";
		
 
  }
      //swapTiles(cell11, cell22);
      document.getElementById("levelIndicator").innerHTML = "Level "+level;
      updateTries(true);
	  BEGIN();
if (level==4) { 
document.getElementById("levelIndicator").innerHTML = "Solved";
win(); 
}
	  return;
}

function lower() {
  for (var i=0; i<33; i++) {
	  var j=i+1
	  if (j<10) {
		  document.getElementById("p"+j).src="http://www.paphoscarhire.mobi/Reciprocals/ru/36/image1/0"+j+".gif";
	  } else {
		  document.getElementById("p"+j).src="http://www.paphoscarhire.mobi/Reciprocals/ru/36/image1/"+j+".gif";
	  }

  }  
  type = 1;  
}
function upper() {
  for (var i=0; i<33; i++) {
	  var j=i+1
	  if (j<10) {
		  document.getElementById("p"+j).src="http://www.paphoscarhire.mobi/Reciprocals/ru/36/images/0"+j+".gif";
	  } else {
		  document.getElementById("p"+j).src="http://www.paphoscarhire.mobi/Reciprocals/ru/36/images/"+j+".gif";
	  }

  }
  type = 2;  
}

function hand() {
  for (var i=0; i<33; i++) {
	  var j=i+1
	  if (j<10) {
		  document.getElementById("p"+j).src="http://www.paphoscarhire.mobi/Reciprocals/ru/36/image2/0"+j+".gif";
	  } else {
		  document.getElementById("p"+j).src="http://www.paphoscarhire.mobi/Reciprocals/ru/36/image2/"+j+".gif";
	  }

  }   
  type = 3;  
}

function numbers() {
  for (var i=0; i<33; i++) {
	  var j=i+1
	  if (j<10) {
		  document.getElementById("p"+j).src="http://www.paphoscarhire.mobi/Reciprocals/ru/36/image3/0"+j+".gif";
	  } else {
		  document.getElementById("p"+j).src="http://www.paphoscarhire.mobi/Reciprocals/ru/36/image3/"+j+".gif";
	  }

  } 
  type = 4;
}

function initPage() {
  var table = document.getElementById("puzzleGrid"); 
  var cells = table.getElementsByTagName("td");
  for (var i=0; i<cells.length; i++) {
    var cell = cells[i];
    cell.onclick = tileClick;
  }
  document.getElementById("levelIndicator").innerHTML = "HOME";

}

function updateTries(r) {
	if (r==true) {
		tries=0;
	var triesCell = document.getElementById("tries");
	var nodeTries = triesCell.firstChild;
	nodeTries.nodeValue = tries+"";	
		
	} else {
	tries=tries+1;
	var triesCell = document.getElementById("tries");
	var nodeTries = triesCell.firstChild;
	nodeTries.nodeValue = tries+"";
	}
}

function tileClick() {
  if (cellIsEmpty(this)) {
    // User clicked on an empty cell
    alert("Please click on a numbered tile.");
    return;
  }
  
  var currentRow = this.id.charAt(4);
  var currentCol = this.id.charAt(5);

  // Check above
  if (currentRow > 1) {
    var testRow = Number(currentRow) - 1;
    var testCellId = "cell" + testRow + currentCol;
    var testCell = document.getElementById(testCellId);
    if (cellIsEmpty(testCell)) {
      swapTiles(this, testCell);
	  updateTries(false);
      return;
    }
  }

  // Check below
  if (currentRow < 6) {
    var testRow = Number(currentRow) + 1;
    var testCellId = "cell" + testRow + currentCol;
    var testCell = document.getElementById(testCellId);
    if (cellIsEmpty(testCell)) {
      swapTiles(this, testCell);
	  updateTries(false);
      return;
    }
  }

  // Check to the left
  if (currentCol > 1) {
    var testCol = Number(currentCol) - 1;
    var testCellId = "cell" + currentRow + testCol;
    var testCell = document.getElementById(testCellId);
    if (cellIsEmpty(testCell)) {
      swapTiles(this, testCell);
	  updateTries(false);
      return;
    }			
  }

  // Check to the right
  if (currentCol < 6) {
    var testCol = Number(currentCol) + 1;
    var testCellId = "cell" + currentRow + testCol;
    var testCell = document.getElementById(testCellId);
    if (cellIsEmpty(testCell)) {
      swapTiles(this, testCell);
	  updateTries(false);
      return;
    }
  }

  // The clicked-on cell is locked
  alert("Please click a tile next to an empty cell.");
}

function cellIsEmpty(cell) {
  var image = cell.firstChild;
  while (image.nodeName == "#text") { image = image.nextSibling; }
  if (image.alt == "empty" || image.alt == "1empty" || image.alt == "2empty")
    return true; 
  else 
    return false; 
}

function swapTiles(selectedCell, destinationCell) {
  selectedImage = selectedCell.firstChild;
  while (selectedImage.nodeName == "#text") {
    selectedImage = selectedImage.nextSibling;
  }
  destinationImage = destinationCell.firstChild;
  while (destinationImage.nodeName == "#text") {
    destinationImage = destinationImage.nextSibling;
  } 

  selectedCell.appendChild(destinationImage);
  destinationCell.appendChild(selectedImage);

  if (puzzleIsComplete()) {
    win();
  }
}

function puzzleIsComplete() {
  var tiles = document.getElementById("puzzleGrid").getElementsByTagName("img");
  var hash = "";
  for (var x = 0; x < tiles.length; x++) {
    //var num = tiles[x].src.substr(-6,2);    
    var num = tiles[x].src.slice(-6,-4);    
    if (num != "ty")
      hash += num;
  }
  //alert(hash);
  if (hash == "010203040506070809101112131415161718192021222324252627282930313233") 
    return true; 

  return false; 
}

function win() {
  document.getElementById('tries').className = 'win';
  document.bgColor = '#33CC00';
}

function BEGIN() {
  document.getElementById('tries').className = 'BEGIN';
  document.bgColor = '#FFFFFF';
}

function rL() {
if (confirm('This ends current play, are you sure?')) {
location.reload(true);
} else {
return; 	
}
}
function rL1() {
if (confirm('This ends current play, are you sure?')) {
levelImgs(1);
} else {
return; 	
}
}
function rL2() {
if (confirm('This ends current play, are you sure?')) {
levelImgs(2);
} else {
return; 	
}
}
function rL3() {
if (confirm('This ends current play, are you sure?')) {
levelImgs(3);
} else {
return; 	
}
}

function randomConfirm() {
if (confirm('This ends current play, are you sure?')) {
randImgs();
} else {
return; 	
}
}
function solved() {
if (confirm('This ends current play, are you sure?')) {
levelImgs(4);
} else {
return; 	
}
}

