﻿// JScript File
//
// Developed and coded by
// Author: Sunhee Miller
//         copyright@2006
//
// This property is protected by the copyright.  Please do not download
// and/or use this for any personal/commercial use without author's 
// permission.  For permission, contact webadmin@smifzone.org.
// Thank you for your cooperation!
//

//
// global variables
//


var a = [5, 4, 3, 2, 1];
var b = [0, 0, 0, 0, 0];
var c = [0, 0, 0, 0, 0];


var aTop = 1;
var bTop = 0;
var cTop = 0;
var aTInx = 4;
var bTInx = -1; 
var cTInx = -1;
var Bar_Moved = 0;

var OrgVal = 0;
var OrgPos = 0;
var OrgId = "";
var barClick = "";
var DestMoved = false;

var orgSrc = "";
var endTo = "";

var moved = false;
var moveFrom = "";
var moveTo = "";
var check = 0;
var barTotal = 5;
var autoInit = false;


function AutoInit(){

var numOfBar;
var levelS = document.getElementById('levelSelect');
var level =  levelS.options[levelS.selectedIndex].text;
var n = Number(level);

autoInit = true;
barTotal = n;

if ((barTotal != 3) && (barTotal != 4) && (barTotal != 5))
  barTotal = 5;
  
if ((aTInx == 4) || (bTInx == 4) || (cTInx == 4) || (barTotal == 5)){

  if (bTInx == 4){
    a = [0, 0, 0, 0, 0];
    b = [5, 4, 3, 2, 1];
    c = [0, 0, 0, 0, 0];

    aTop = 0;
    bTop = 1;
    cTop = 0;

    aTInx = -1;
    bTInx = 4;
    cTInx = -1;
  }
  else if (cTInx == 4){
    a = [0, 0, 0, 0, 0];
    b = [0, 0, 0, 0, 0];
    c = [5, 4, 3, 2, 1];

    aTop = 0;
    bTop = 0;
    cTop = 1;

    aTInx = -1;
    bTInx = -1;
    cTInx = 4;
  }
  else
  {
    a = [5, 4, 3, 2, 1];
    b = [0, 0, 0, 0, 0];
    c = [0, 0, 0, 0, 0];

    aTop = 1;
    bTop = 0;
    cTop = 0;

    aTInx = 4;
    bTInx = -1;
    cTInx = -1;
  }
}



if ((aTInx == 3) || (bTInx == 3) || (cTInx == 3) || (barTotal == 4)){

  if (bTInx == 3){
    a = [0, 0, 0, 0];
    b = [4, 3, 2, 1];
    c = [0, 0, 0, 0];

    aTop = 0;
    bTop = 1;
    cTop = 0;

    aTInx = -1;
    bTInx = 3;
    cTInx = -1;
  }
  else if (cTInx == 3){
    a = [0, 0, 0, 0];
    b = [0, 0, 0, 0];
    c = [4, 3, 2, 1];

    aTop = 0;
    bTop = 0;
    cTop = 1;

    aTInx = -1;
    bTInx = -1;
    cTInx = 3;
  }
  else
  {
    a = [4, 3, 2, 1];
    b = [0, 0, 0, 0];
    c = [0, 0, 0, 0];

    aTop = 1;
    bTop = 0;
    cTop = 0;

    aTInx = 3;
    bTInx = -1;
    cTInx = -1;
  }
  
}

if ((aTInx == 2) || (bTInx == 2) || (cTInx == 2)|| (barTotal == 3)){
  
  if (bTInx == 2){
    a = [0, 0, 0];
    b = [3, 2, 1];
    c = [0, 0, 0];

    aTop = 0;
    bTop = 1;
    cTop = 0;

    aTInx = -1;
    bTInx = 2;
    cTInx = -1;
  }
  else if (cTInx == 2){
    a = [0, 0, 0];
    b = [0, 0, 0];
    c = [3, 2, 1];

    aTop = 0;
    bTop = 0;
    cTop = 1;

    aTInx = -1;
    bTInx = -1;
    cTInx = 2;
  }
  else 
  {
    a = [3, 2, 1];
    b = [0, 0, 0];
    c = [0, 0, 0];

    aTop = 1;
    bTop = 0;
    cTop = 0;

    aTInx = 2;
    bTInx = -1;
    cTInx = -1;
  }
}

Bar_Moved = 0;
OrgVal = 0;
OrgPos = 0;
OrgId = "";
barClick = "";
orgSrc = "";
moved = false;
endTo = "";
moveFrom = "";
moveTo = "";
DestMoved = false;
check = 0;

    
document.getElementById('a5').style.width = "53px";
document.getElementById('a4').style.width = "78px";
document.getElementById('a3').style.width = "103px";
document.getElementById('a2').style.width = "128px";
document.getElementById('a1').style.width = "153px";

document.getElementById('b5').style.width = "53px";
document.getElementById('b4').style.width = "78px";
document.getElementById('b3').style.width = "103px";
document.getElementById('b2').style.width = "128px";
document.getElementById('b1').style.width = "153px";

document.getElementById('c5').style.width = "53px";
document.getElementById('c4').style.width = "78px";
document.getElementById('c3').style.width = "103px";
document.getElementById('c2').style.width = "128px";
document.getElementById('c1').style.width = "153px";

if (aTInx == 4){
  document.getElementById('a1').src = "../Images/bar5.png";
  document.getElementById('a2').src = "../Images/bar4.png";
  document.getElementById('a3').src = "../Images/bar3.png";
  document.getElementById('a4').src = "../Images/bar2.png";
  document.getElementById('a5').src = "../Images/bar1.png";

  document.getElementById('b1').src = "../Images/barC.png";
  document.getElementById('b2').src = "../Images/barC.png";
  document.getElementById('b3').src = "../Images/barC.png";
  document.getElementById('b4').src = "../Images/barC.png";
  document.getElementById('b5').src = "../Images/barC.png";

  document.getElementById('c1').src = "../Images/barC.png";
  document.getElementById('c2').src = "../Images/barC.png";
  document.getElementById('c3').src = "../Images/barC.png";
  document.getElementById('c4').src = "../Images/barC.png";
  document.getElementById('c5').src = "../Images/barC.png";
}

if (aTInx == 3){
  document.getElementById('a1').src = "../Images/bar4.png";
  document.getElementById('a2').src = "../Images/bar3.png";
  document.getElementById('a3').src = "../Images/bar2.png";
  document.getElementById('a4').src = "../Images/bar1.png";
  document.getElementById('a5').src = "../Images/barC.png";


  document.getElementById('b1').src = "../Images/barC.png";
  document.getElementById('b2').src = "../Images/barC.png";
  document.getElementById('b3').src = "../Images/barC.png";
  document.getElementById('b4').src = "../Images/barC.png";
  document.getElementById('b5').src = "../Images/barC.png";

  document.getElementById('c1').src = "../Images/barC.png";
  document.getElementById('c2').src = "../Images/barC.png";
  document.getElementById('c3').src = "../Images/barC.png";
  document.getElementById('c4').src = "../Images/barC.png";
  document.getElementById('c5').src = "../Images/barC.png";
}

if (aTInx == 2){
  document.getElementById('a1').src = "../Images/bar3.png";
  document.getElementById('a2').src = "../Images/bar2.png";
  document.getElementById('a3').src = "../Images/bar1.png";
  document.getElementById('a4').src = "../Images/barC.png";
  document.getElementById('a5').src = "../Images/barC.png";

  document.getElementById('b1').src = "../Images/barC.png";
  document.getElementById('b2').src = "../Images/barC.png";
  document.getElementById('b3').src = "../Images/barC.png";
  document.getElementById('b4').src = "../Images/barC.png";
  document.getElementById('b5').src = "../Images/barC.png";

  document.getElementById('c1').src = "../Images/barC.png";
  document.getElementById('c2').src = "../Images/barC.png";
  document.getElementById('c3').src = "../Images/barC.png";
  document.getElementById('c4').src = "../Images/barC.png";
  document.getElementById('c5').src = "../Images/barC.png";
}


if (bTInx == 4){
  document.getElementById('b1').src = "../Images/bar5.png";
  document.getElementById('b2').src = "../Images/bar4.png";
  document.getElementById('b3').src = "../Images/bar3.png";
  document.getElementById('b4').src = "../Images/bar2.png";
  document.getElementById('b5').src = "../Images/bar1.png";

  document.getElementById('a1').src = "../Images/barC.png";
  document.getElementById('a2').src = "../Images/barC.png";
  document.getElementById('a3').src = "../Images/barC.png";
  document.getElementById('a4').src = "../Images/barC.png";
  document.getElementById('a5').src = "../Images/barC.png";

  document.getElementById('c1').src = "../Images/barC.png";
  document.getElementById('c2').src = "../Images/barC.png";
  document.getElementById('c3').src = "../Images/barC.png";
  document.getElementById('c4').src = "../Images/barC.png";
  document.getElementById('c5').src = "../Images/barC.png";
}

if (bTInx == 3){
  document.getElementById('b1').src = "../Images/bar4.png";
  document.getElementById('b2').src = "../Images/bar3.png";
  document.getElementById('b3').src = "../Images/bar2.png";
  document.getElementById('b4').src = "../Images/bar1.png";
  document.getElementById('b5').src = "../Images/barC.png";

  document.getElementById('a1').src = "../Images/barC.png";
  document.getElementById('a2').src = "../Images/barC.png";
  document.getElementById('a3').src = "../Images/barC.png";
  document.getElementById('a4').src = "../Images/barC.png";
  document.getElementById('a5').src = "../Images/barC.png";

  document.getElementById('c1').src = "../Images/barC.png";
  document.getElementById('c2').src = "../Images/barC.png";
  document.getElementById('c3').src = "../Images/barC.png";
  document.getElementById('c4').src = "../Images/barC.png";
  document.getElementById('c5').src = "../Images/barC.png";
}

if (bTInx == 2){
  document.getElementById('b1').src = "../Images/bar3.png";
  document.getElementById('b2').src = "../Images/bar2.png";
  document.getElementById('b3').src = "../Images/bar1.png";
  document.getElementById('b4').src = "../Images/barC.png";
  document.getElementById('b5').src = "../Images/barC.png";

  document.getElementById('a1').src = "../Images/barC.png";
  document.getElementById('a2').src = "../Images/barC.png";
  document.getElementById('a3').src = "../Images/barC.png";
  document.getElementById('a4').src = "../Images/barC.png";
  document.getElementById('a5').src = "../Images/barC.png";

  document.getElementById('c1').src = "../Images/barC.png";
  document.getElementById('c2').src = "../Images/barC.png";
  document.getElementById('c3').src = "../Images/barC.png";
  document.getElementById('c4').src = "../Images/barC.png";
  document.getElementById('c5').src = "../Images/barC.png";
}

if (cTInx == 4){
  document.getElementById('c1').src = "../Images/bar5.png";
  document.getElementById('c2').src = "../Images/bar4.png";
  document.getElementById('c3').src = "../Images/bar3.png";
  document.getElementById('c4').src = "../Images/bar2.png";
  document.getElementById('c5').src = "../Images/bar1.png";

  document.getElementById('a1').src = "../Images/barC.png";
  document.getElementById('a2').src = "../Images/barC.png";
  document.getElementById('a3').src = "../Images/barC.png";
  document.getElementById('a4').src = "../Images/barC.png";
  document.getElementById('a5').src = "../Images/barC.png";

  document.getElementById('b1').src = "../Images/barC.png";
  document.getElementById('b2').src = "../Images/barC.png";
  document.getElementById('b3').src = "../Images/barC.png";
  document.getElementById('b4').src = "../Images/barC.png";
  document.getElementById('b5').src = "../Images/barC.png";

}

if (cTInx == 3){
  document.getElementById('c1').src = "../Images/bar4.png";
  document.getElementById('c2').src = "../Images/bar3.png";
  document.getElementById('c3').src = "../Images/bar2.png";
  document.getElementById('c4').src = "../Images/bar1.png";
  document.getElementById('c5').src = "../Images/barC.png";

  document.getElementById('a1').src = "../Images/barC.png";
  document.getElementById('a2').src = "../Images/barC.png";
  document.getElementById('a3').src = "../Images/barC.png";
  document.getElementById('a4').src = "../Images/barC.png";
  document.getElementById('a5').src = "../Images/barC.png";

  document.getElementById('b1').src = "../Images/barC.png";
  document.getElementById('b2').src = "../Images/barC.png";
  document.getElementById('b3').src = "../Images/barC.png";
  document.getElementById('b4').src = "../Images/barC.png";
  document.getElementById('b5').src = "../Images/barC.png";

}

if (cTInx == 2){
  document.getElementById('c1').src = "../Images/bar3.png";
  document.getElementById('c2').src = "../Images/bar2.png";
  document.getElementById('c3').src = "../Images/bar1.png";
  document.getElementById('c4').src = "../Images/barC.png";
  document.getElementById('c5').src = "../Images/barC.png";

  document.getElementById('a1').src = "../Images/barC.png";
  document.getElementById('a2').src = "../Images/barC.png";
  document.getElementById('a3').src = "../Images/barC.png";
  document.getElementById('a4').src = "../Images/barC.png";
  document.getElementById('a5').src = "../Images/barC.png";

  document.getElementById('b1').src = "../Images/barC.png";
  document.getElementById('b2').src = "../Images/barC.png";
  document.getElementById('b3').src = "../Images/barC.png";
  document.getElementById('b4').src = "../Images/barC.png";
  document.getElementById('b5').src = "../Images/barC.png";

}

document.getElementById('hanoiResult1').innerHTML = "";
document.getElementById('hanoiResult2').innerHTML = "";


}




//
// see if the right bar is clicked
//
function AutoValidate_Val(T, K){

var tempC = T;
var tempP = K;
var tempV = 0;

if (tempC == "a")
  tempV = a[tempP-1];
else if (tempC == "b")
  tempV = b[tempP-1];
else if (tempC == "c")
  tempV = c[tempP-1];

return tempV;
  
}


//
// Is the bar to move onto the top position?
//
function AutoValidate_Top(T, K){

var tempC = T;
var tempP = K;
var tempV = 0;
var Q = false;

if (tempC == "a"){
  tempV = a[tempP-1];
  if (tempV == aTop)
    Q = true;
}

if (tempC == "b"){
  tempV = b[tempP-1];
  if (tempV == bTop)
    Q = true;
}

if (tempC == "c"){
  tempV = c[tempP-1];
  if (tempV == cTop)
    Q = true;
}

if ((Q == true) && (tempV > 0))
  return tempV;

}


function AutoMoveThisG(Gold, Pos){

var tempG = Gold;
var tempP = Pos;
var tempV = 0;
var tempId = Gold + Pos;

  Bar_Moved = 0;


if (AutoValidate_Val(Gold, Pos) == 0)
  return;
  
tempV = AutoValidate_Top(Gold, Pos);

if (tempV > 0){
  moveFrom = Gold;
  OrgVal = tempV;
  OrgPos = Pos;
  OrgId = tempId;
  barClick = tempG;

}

}

//
//
// This is the main function initiated by a user's request.
//
function PlayAuto(){

AutoInit();
if ((aTInx == 4) || (aTInx == 3) || (aTInx == 2))
  moveAutoFromA();
if ((bTInx == 4) || (bTInx == 3) || (bTInx == 2))
  moveAutoFromB();
if ((cTInx == 4) || (cTInx == 3 ) || (cTInx == 2))
  moveAutoFromC();  


}


//
// If the first move starts from the tower A
//
function moveAutoFromA(){

var t;
var rounded = false;
var endTo2;

endTo = "b";
endTo2 = "c";


if (aTop == 0){
  if (bTop < cTop){
    if (check == 1){
      moveFrom = "c";
      AutoMoveThisG(moveFrom, cTInx + 1);
      AutoResolveTo('a');
      check = 0;
    }
    else
    {
      moveFrom = "b";
      AutoMoveThisG(moveFrom, bTInx + 1);
      if (endTo2 == "c")
        AutoResolveTo('c');
      else
        AutoResolveTo('a');
    }
  }
  else
  {
    if (cTop < bTop){
      if ((cTop + 1) == bTop){
        moveFrom = "b";
        AutoMoveThisG(moveFrom, bTInx + 1);
        AutoResolveTo('a');
      }
      else {
        moveFrom = "c";
        AutoMoveThisG(moveFrom, cTInx + 1);
        AutoResolveTo('a');
      }
    }
  }
  rounded = true;
}

if ((rounded == false) && (aTop != 0) && (aTop < bTop) && (aTop < cTop)) {
  if (bTop < cTop){
    //testing
    //
    if ((aTop + 1) == bTop){
      moveFrom = "a";
      AutoMoveThisG(moveFrom, aTInx + 1);
      AutoResolveTo('b');
    }
    else {
      moveFrom = "b";
      AutoMoveThisG(moveFrom, bTInx + 1);
      AutoResolveTo('c');
    }
  }
  if (cTop < bTop){
    moveFrom = "c";
    AutoMoveThisG(moveFrom, cTInx + 1);
    AutoResolveTo('b');
  }
  rounded = true;
}


if ((rounded == false) && ((bTop == 0) || (cTop == 0))){
  moveFrom = "a";
  AutoMoveThisG(moveFrom, aTInx + 1);
  if ((bTop == 0) || (bTop > aTop))
    AutoResolveTo('b');
  if (cTop == 0)
    AutoResolveTo('c');
  
  rounded = true;
  
  if (aTop == 0)
    DestMoved = true;
}


if ((aTop > bTop) && (aTop > cTop) && (rounded == false)){

  if ((endTo == "b") && (bTop > cTop)){
    //testing
    //
    if (aTop == 4){
      moveFrom = "c";
      AutoMoveThisG(moveFrom, cTInx + 1);
      AutoResolveTo('a');
    }
    else
    {
      moveFrom = "b";
      AutoMoveThisG(moveFrom, bTInx + 1);
      AutoResolveTo('a');
    
    }
  }
  
  if ((endTo == "c") && (cTop > bTop)){
    moveFrom = "b";
    AutoMoveThisG(moveFrom, bTInx + 1);
    AutoResolveTo('a');
  }
  
  if ((endTo == "c") && (bTop > cTop)){
    moveFrom = "c";
    AutoMoveThisG(moveFrom, cTInx + 1);
    AutoResolveTo('b');
  }
  
  if ((endTo == "b") && (cTop > bTop)) {
    moveFrom = "b";
    AutoMoveThisG(moveFrom, bTInx + 1);
    AutoResolveTo('c');
  }
  
  rounded = true;
  if (aTop == 0)
    DestMoved = true;
}

 
 if ((rounded == false) && (aTop > cTop) && (bTop > aTop)){
   if ((cTop + 1) != aTop){
     moveFrom = "a";
     AutoMoveThisG(moveFrom, aTInx + 1);
     AutoResolveTo('b');
   }
   else
   { 
     moveFrom = "c";
     AutoMoveThisG(moveFrom, cTInx + 1);
     AutoResolveTo('a');
   }
   rounded = true;
}

if ((rounded == false) && (cTop > bTop) && (bTop > aTop)){
  moveFrom = "b";
  AutoMoveThisG(moveFrom, bTInx + 1);
  AutoResolveTo('c');
  rounded = true;
}

if ((rounded == false) && (cTop > aTop) && (aTop > bTop)){
  if ((bTop + 1) == aTop){
    moveFrom = "a";
    AutoMoveThisG(moveFrom, aTInx + 1);
    AutoResolveTo('c');
  }
  else
  {
    moveFrom = "b";
    AutoMoveThisG(moveFrom, bTInx + 1);
    AutoResolveTo('c');
  }
  rounded = true;
}


//
// This will automize the gaming process.
//

if (barTotal == 4){
  if ((cTop == 1) && (cTInx == (barTotal - 1))){
    clearTimeout(t);
    autoInit = false;
    return;
  }
  else {
    t = setTimeout("moveAutoFromA()", 400);
  }
}
else {
  if ((bTop == 1) && (bTInx == (barTotal - 1))){
    clearTimeout(t);
    autoInit = false;
    return;
  }
  else {
    t = setTimeout("moveAutoFromA()", 400);
}
}
}


//
// If the first move starts from the tower B
//

function moveAutoFromB(){

var t;
var rounded = false;
var endTo2;

//startFrom = "a";
endTo = "a";
endTo2 = "c";


if (bTop == 0){
  if (aTop < cTop){
    if (check == 1){
      moveFrom = "c";
      AutoMoveThisG(moveFrom, cTInx + 1);
      AutoResolveTo('b');
      check = 0;
    }
    else
    {
      moveFrom = "a";
      AutoMoveThisG(moveFrom, aTInx + 1);
      if (endTo2 == "c")
        AutoResolveTo('c');
      else
        AutoResolveTo('b');
    }
  }
  else
  {
    if (cTop < aTop){
      if ((cTop + 1) == aTop){
        moveFrom = "a";
        AutoMoveThisG(moveFrom, aTInx + 1);
        AutoResolveTo('b');
      }
      else {
        moveFrom = "c";
        AutoMoveThisG(moveFrom, cTInx + 1);
        AutoResolveTo('b');
      }
    }
  }
  rounded = true;
}

if ((rounded == false) && (bTop != 0) && (bTop < aTop) && (bTop < cTop)) {
  if (aTop < cTop){
    //testing
    //
    if ((bTop + 1) == aTop){
      moveFrom = "b";
      AutoMoveThisG(moveFrom, bTInx + 1);
      AutoResolveTo('a');
    }
    else {
      moveFrom = "a";
      AutoMoveThisG(moveFrom, aTInx + 1);
      AutoResolveTo('c');
    }
  }
  if (cTop < aTop){
    moveFrom = "c";
    AutoMoveThisG(moveFrom, cTInx + 1);
    AutoResolveTo('a');
  }
  rounded = true;
}


if ((rounded == false) && ((aTop == 0) || (cTop == 0))){
  moveFrom = "b";
  AutoMoveThisG(moveFrom, bTInx + 1);
  if ((aTop == 0) || (aTop > bTop))
    AutoResolveTo('a');
  if (cTop == 0)
    AutoResolveTo('c');
  
  rounded = true;
  
  if (bTop == 0)
    DestMoved = true;
}


if ((bTop > aTop) && (bTop > cTop) && (rounded == false)){

  if ((endTo == "a") && (aTop > cTop)){
    //testing
    //
    if (bTop == 4){
      moveFrom = "c";
      AutoMoveThisG(moveFrom, cTInx + 1);
      AutoResolveTo('b');
    }
    else
    {
      moveFrom = "a";
      AutoMoveThisG(moveFrom, aTInx + 1);
      AutoResolveTo('b');
    
    }
  }
  
  if ((endTo == "c") && (cTop > aTop)){
    moveFrom = "a";
    AutoMoveThisG(moveFrom, aTInx + 1);
    AutoResolveTo('b');
  }
  
  if ((endTo == "c") && (aTop > cTop)){
    moveFrom = "c";
    AutoMoveThisG(moveFrom, cTInx + 1);
    AutoResolveTo('a');
  }
  
  if ((endTo == "a") && (cTop > aTop)) {
    moveFrom = "a";
    AutoMoveThisG(moveFrom, aTInx + 1);
    AutoResolveTo('c');
  }
  
  rounded = true;
  if (bTop == 0)
    DestMoved = true;
}

 
 if ((rounded == false) && (bTop > cTop) && (aTop > bTop)){
   if ((cTop + 1) != bTop){
     moveFrom = "b";
     AutoMoveThisG(moveFrom, bTInx + 1);
     AutoResolveTo('a');
   }
   else
   { 
     moveFrom = "c";
     AutoMoveThisG(moveFrom, cTInx + 1);
     AutoResolveTo('b');
   }
   rounded = true;
}

if ((rounded == false) && (cTop > aTop) && (aTop > bTop)){
  moveFrom = "a";
  AutoMoveThisG(moveFrom, aTInx + 1);
  AutoResolveTo('c');
  rounded = true;
}

if ((rounded == false) && (cTop > bTop) && (bTop > aTop)){
  if ((aTop + 1) == bTop){
    moveFrom = "b";
    AutoMoveThisG(moveFrom, bTInx + 1);
    AutoResolveTo('c');
  }
  else
  {
    moveFrom = "a";
    AutoMoveThisG(moveFrom, aTInx + 1);
    AutoResolveTo('c');
  }
  rounded = true;
}


//
// This will automize the gaming process.
//

if (barTotal == 4){
  if ((cTop == 1) && (cTInx == (barTotal - 1))){
    clearTimeout(t);
    autoInit = false;
    return;
  }
  else {
    t = setTimeout("moveAutoFromB()", 400);
  }

}
else {
  if ((aTop == 1) && (aTInx == (barTotal - 1))){
    clearTimeout(t);
    autoInit = false;
    return;
  }
  else {
    t = setTimeout("moveAutoFromB()", 400);
  }
}

}


//
// If the first move starts from the tower c
//


function moveAutoFromC(){

var t;
var rounded = false;
var endTo2;

//startFrom = "a";
endTo = "b";
endTo2 = "a";

if (cTop == 0){
  if (bTop < aTop){
    if (check == 1){
      moveFrom = "a";
      AutoMoveThisG(moveFrom, aTInx + 1);
      AutoResolveTo('c');
      check = 0;
    }
    else
    {
      moveFrom = "b";
      AutoMoveThisG(moveFrom, bTInx + 1);
      if (endTo2 == "a")
        AutoResolveTo('a')
      else
        AutoResolveTo('c');
    }
  }
  else
  {
    if (aTop < bTop){
      if ((aTop + 1) == bTop){
        moveFrom = "b";
        AutoMoveThisG(moveFrom, bTInx + 1);
        AutoResolveTo('c');
      }
      else {
        moveFrom = "a";
        AutoMoveThisG(moveFrom, aTInx + 1);
        AutoResolveTo('c');
      }
    }
  }
  rounded = true;
}

if ((rounded == false) && (cTop != 0) && (cTop < bTop) && (cTop < aTop)) {
  if (bTop < aTop){
    //testing
    //
    if ((cTop + 1) == bTop){
      moveFrom = "c";
      AutoMoveThisG(moveFrom, cTInx + 1);
      AutoResolveTo('b');
    }
    else {
      moveFrom = "b";
      AutoMoveThisG(moveFrom, bTInx + 1);
      AutoResolveTo('a');
    }
  }
  if (aTop < bTop){
    moveFrom = "a";
    AutoMoveThisG(moveFrom, aTInx + 1);
    AutoResolveTo('b');
  }
  rounded = true;
}

//real test
//
//
if ((rounded == false) && ((bTop == 0) || (aTop == 0))){
  moveFrom = "c";
  AutoMoveThisG(moveFrom, cTInx + 1);
  if ((bTop == 0) || (bTop > cTop))
    AutoResolveTo('b');
  if (aTop == 0)
    AutoResolveTo('a');
  
  rounded = true;
  
  if (cTop == 0)
    DestMoved = true;
}


if ((cTop > bTop) && (cTop > aTop) && (rounded == false)){

  if ((endTo == "b") && (bTop > aTop)){
    //testing
    //
    if (cTop == 4){
      moveFrom = "a";
      AutoMoveThisG(moveFrom, aTInx + 1);
      AutoResolveTo('c');
    }
    else
    {
      moveFrom = "b";
      AutoMoveThisG(moveFrom, bTInx + 1);
      AutoResolveTo('c');
    
    }
  }
  
  if ((endTo == "a") && (aTop > bTop)){
    moveFrom = "b";
    AutoMoveThisG(moveFrom, bTInx + 1);
    AutoResolveTo('c');
  }
  
  if ((endTo == "a") && (bTop > aTop)){
    moveFrom = "a";
    AutoMoveThisG(moveFrom, aTInx + 1);
    AutoResolveTo('b');
  }
  
  if ((endTo == "b") && (aTop > bTop)) {
    moveFrom = "b";
    AutoMoveThisG(moveFrom, bTInx + 1);
    AutoResolveTo('a');
  }
  
  rounded = true;
  if (cTop == 0)
    DestMoved = true;
}

 
 if ((rounded == false) && (cTop > aTop) && (bTop > cTop)){
   if ((aTop + 1) != cTop){
     moveFrom = "c";
     AutoMoveThisG(moveFrom, cTInx + 1);
     AutoResolveTo('b');
   }
   else
   { 
     moveFrom = "a";
     AutoMoveThisG(moveFrom, aTInx + 1);
     AutoResolveTo('c');
   }
   rounded = true;
}

if ((rounded == false) && (aTop > bTop) && (bTop > cTop)){
  moveFrom = "b";
  AutoMoveThisG(moveFrom, bTInx + 1);
  AutoResolveTo('a');
  rounded = true;
}

if ((rounded == false) && (aTop > cTop) && (cTop > bTop)){
  if ((bTop + 1) == cTop){
    moveFrom = "c";
    AutoMoveThisG(moveFrom, cTInx + 1);
    AutoResolveTo('a');
  }
  else
  {
    moveFrom = "b";
    AutoMoveThisG(moveFrom, bTInx + 1);
    AutoResolveTo('a');
  }
  rounded = true;
}


//
// This will automize the gaming process.
//

if (barTotal == 4){
  if ((aTop == 1) && (aTInx == (barTotal - 1))){
    clearTimeout(t);
    autoInit = false;
    return;
  }
  else
    t = setTimeout("moveAutoFromC()", 400);
}
else {

  if ((bTop == 1) && (bTInx == (barTotal - 1))){
    clearTimeout(t);
    autoInit = false;
    return;
  }
  else {
    t = setTimeout("moveAutoFromC()", 400);
  }
}


}




function AutofindDest(){

var tempQ = false;

if ((moveFrom == "a") && (tempQ == false)){
  if (bTop < aTop){
    AutoResolveTo('b');
    tempQ = true;
  }
  if ((cTop < aTop) && (tempQ == false)){
    AutoResolveTo('c');
    tempQ = true;
  }
}

if ((moveFrom == "b") && (tempQ == false)){
  if (aTop < bTop){
    AutoResolveTo('a');
    tempQ = true;
  }
  if ((cTop < bTop) && (tempQ == false)){
    AutoResolveTo('c');
    tempQ = true;
  }
}

if ((moveFrom == "c") && (tempQ == false)){
  if (aTop < cTop){
    AutoResolveTo('a');
    tempQ = true;
  }
  if ((bTop < cTop) && (tempQ == false)){
    AutoResolveTo('b');
    tempQ = true;
  }
}
  
}
  


  
function AutoResolveTo(Dest){

var tempD = Dest;
var tempId = "";
//var TempCIn = "";
var tempB = 0;
var moveG = 0;
var i;

if ((tempD == "a") && (Bar_Moved == 0)){
  
  if (aTop == 0){
    tempId = "a1";
    moveG = 1;
  }
  
  if (aTop > OrgVal){
    i = aTInx + 2;
    tempId = "a" + i;
    moveG = 1;
  }
  
  if (moveG ==1){
    document.getElementById(tempId).style.width = document.getElementById(OrgId).style.width;
    document.getElementById(tempId).style.height = document.getElementById(OrgId).style.height;
    document.getElementById(tempId).src = "../Images/bar" + OrgVal + ".png";
    //find the next top value    
    AutoAddValue('a');
    tempB = 1;
  }
  
}

if ((tempD == "b") && (Bar_Moved == 0)){
  
  if (bTop == 0){
    tempId = "b1";
    moveG = 1;
  }
  
  if (bTop > OrgVal){
    i = bTInx + 2;
    tempId = "b" + i;
    moveG = 1;
  }
  
  if (moveG ==1){
    document.getElementById(tempId).style.width = document.getElementById(OrgId).style.width;
    document.getElementById(tempId).style.height = document.getElementById(OrgId).style.height;
    document.getElementById(tempId).src = "../Images/bar" + OrgVal + ".png";
    //find the next top value    
    AutoAddValue('b');
    tempB = 1;
  }
  
}


if ((tempD == "c") && (Bar_Moved == 0)){
  
  if (cTop == 0){
    tempId = "c1";
    moveG = 1;
  }
  
  if (cTop > OrgVal){
    i = cTInx + 2;
    tempId = "c" + i;
    moveG = 1;
  }
  
  if (moveG ==1){
    document.getElementById(tempId).style.width = document.getElementById(OrgId).style.width;
    document.getElementById(tempId).style.height = document.getElementById(OrgId).style.height;
    document.getElementById(tempId).src = "../Images/bar" + OrgVal + ".png";
    //find the next top value    
    AutoAddValue('c');
    tempB = 1;
  }
  
}


//testing
if ((barTotal % 2) == 1) {
  if ((aTInx == 3) && (aTop == 1))
    check = 1;
  else if ((bTInx == 3) && (bTop == 1))
    check = 1;
  else if ((cTInx == 3) && (cTop == 1))
    check = 1;
}

if (tempB == 1){
  AutoRemoveG();
  Bar_Moved = 1;
  barClick = "";
}

}


function AutoRemoveG(){

var tempId = "";
var count = 0;

tempId = barClick + OrgPos;
document.getElementById(tempId).src = "../Images/barC.png";

switch (barClick){
  case "a": a[aTInx] = 0;
            aTInx--;
            if (aTInx < 0)
              aTop = 0;
            else
              aTop = a[aTInx];
            break;
  case "b": b[bTInx] = 0;
            bTInx--;
            if (bTInx < 0)
              bTop = 0;
            else
              bTop = b[bTInx];
            break;  
  case "c": c[cTInx] = 0;
            cTInx--;
            if (cTInx < 0)
              cTop = 0;
            else
              cTop = c[cTInx];
            break; 
  default: break;
 
} 
               
}



function AutoAddValue(Target_T){

var temp = Target_T;

switch (temp){
  case "a": aTInx++;
            a[aTInx] = OrgVal;
            aTop = OrgVal;
            break;
  case "b": bTInx++;
            b[bTInx] = OrgVal;
            bTop = OrgVal;
            break;
  case "c": cTInx++;
            c[cTInx] = OrgVal;
            cTop = OrgVal;
            break;
  default: break;
}

}


