﻿// JScript File

//  
// Author: Sunhee Miller
// copyright@2006
// Name: Magic Squares Puzzle
// gloval variables
//
var numT = new Array(9);
var imgFrom = 0, imgTo = 0;
var imgMoved = false;
var OrgBorderT = "", OrgBorderB = "", OrgBorderR = "", OrgBorderL = "";
var ColorOn = true;


function InitMagic(){

var i=0, j=0, k=0, t=0;
var temp = "";

ColorOn = true;
imgFrom = 0;
imgTo = 0;

document.getElementById('how2').innerHTML= "" 
document.getElementById('how3').innerHTML= "" 


for(i=0;i<3;i++){
  for(j=0;j<3;j++){
    k++;
    temp = "td" + k;
    document.getElementById(temp).src = "../Images/number" + k + ".png";
    document.getElementById(temp).style.border = "#eeece7 thin solid";    
    numT[t] = k;
    t++;
  }
}

}


function ShuffleTable(){

var tempT = new Array(9);
var i, j, count;
var alreadyIn = false;

ColorOn = true;
imgFrom = 0;
imgTo = 0;


for(i=0;i<9;i++)
  tempT[i] = 0;
  
count = 0;  
while (count < 9){
  rdm = Math.floor(Math.random()*10);
  alreadyIn = false;
  for(j=0;j<9;j++){
    if (tempT[j] == rdm)
      alreadyIn = true;
  }
  if (alreadyIn == false){
    tempT[count] = rdm;
    count++;
  }
}

ShuffleImage(tempT);

}


function ShuffleImage(newTbl){

var newImgT = new Array(9);
var i, j, n, k, t;

newImgT = newTbl;

document.getElementById('how2').innerHTML= "" ;
document.getElementById('how3').innerHTML= "" ;

k = 0;
t = 0;
for(i=0;i<3;i++){
  for(j=0;j<3;j++){
    n = newImgT[k];
    temp = "td" + (t+1);
    document.getElementById(temp).src = "../Images/number" + n + ".png";
    document.getElementById(temp).style.border = "#eeece7 thin solid";    
    numT[t] = n;
    t++;
    k++;
  }
}

}


//
// how to move images
//
function MoveImg(T){

var tempT = T;
var i = 0, j = 0, t = 0;
var temp1 = "", temp2 = "";

if (ColorOn == false)
  return;

if (imgFrom == 0){
  imgFrom = tempT;
  if (imgTo == 0)
    return;
}
else
  imgTo = tempT;

if (inBlock() == true) {
  SwapImg();
  if (EvaluateTbl() == true) {
    ColorOn = false;
    //alert("Congratuations! You've completed Magic Squares!");
    document.getElementById('how2').innerHTML = "Congratulations!" 
    document.getElementById('how3').innerHTML= "Magical Squares have been completed!" 
    //return;
  }
}
else {
  imgFrom = 0;
  imgTo = 0;
  return
}

}


function inBlock(){

var isB = false;

if (imgTo == (imgFrom - 1)){
  if ((imgFrom % 3) == 1)
    isB = false;
  else
    isB = true;
}

if (imgTo == (imgFrom + 1)){
  if ((imgTo % 3) == 1)
    isB = false;
  else 
    isB = true;
}

if (imgTo == (imgFrom + 3)){
  isB = true;
}

if (imgTo == (imgFrom - 3)){
  isB = true;
}

return isB;

}



function SwapImg() {

var temp1 = "", temp2 = "", temp = "";
var i = 0;

// swap images
temp1 = "td" + imgFrom;
temp2 = "td" + imgTo;
temp = document.getElementById(temp1).src;
document.getElementById(temp1).src = document.getElementById(temp2).src;
document.getElementById(temp2).src = temp;

// swap table values
i = numT[imgFrom-1];
numT[imgFrom-1] = numT[imgTo-1];
numT[imgTo-1] = i;

imgFrom = 0;
imgTo = 0;

}


function EvaluateTbl() {

var i = 0, r1 = 0, r2 = 0, r3 = 0, c1 = 0, c2 = 0, c3 = 0, d1 = 0, d2 = 0;
var magicDone = false;

//evaluate rows
for(i=0;i<3;i++){
  r1 = numT[i] + r1;
}

for(i=3;i<6;i++){
  r2 = numT[i] + r2;
}

for(i=6;i<9;i++){
  r3 = numT[i] + r3;
}


//column 1
for(i=0;i<9;i=i+3)
  c1 = numT[i] + c1;

//column 2
for(i=1;i<9;i=i+3)
  c2 = numT[i] + c2;
  
//column 3
for(i=2;i<9;i=i+3)
  c3 = numT[i] + c3;

//diagonal 1
for(i=0;i<9;i=i+4)
  d1 = numT[i] + d1;

//diagnal 2
for(i=2;i<7;i=i+2)
  d2 = numT[i] + d2;



if ((r1==15) && (r2==15) && (r3==15) && (c1==15) && (c2==15) && (c3==15) && (d1==15) && (d2==15)){
  magicDone = true;
  ColorOn = false;
  ColorMagic();
}
  
return magicDone;
 
}

function ColorMagic(){

var i, temp;

  for (i=1;i<10;i++){
    temp = "td" + i;
    document.getElementById(temp).style.border = "solid thin  rgb(254, 235, 1)";
  }

}



function ChgColor(T){

var tempT = T;
var temp = "";

temp = "td" + tempT;

OrgBorderT = document.getElementById(temp).style.border;

if (ColorOn != false)
  document.getElementById(temp).style.border = "rgb(254, 235, 1) thin solid";

}


function BackToNorm(T){

var tempT = T;
var temp = "";

temp = "td" + tempT;

if (ColorOn != false)
  document.getElementById(temp).style.border = OrgBorderT;


}