off0 = new Image();
off0.src = "black.gif";
off1 = new Image();
off1.src = "1off.gif";
off2 = new Image();
off2.src = "2off.gif";
off3 = new Image();
off3.src = "3off.gif";
on0 = new Image();
on0.src = "black.gif";
on1 = new Image();
on1.src = "1on.gif";
on2 = new Image();
on2.src = "2on.gif";
on3 = new Image();
on3.src = "3on.gif";

total = 0;
winner = 0;

bottom = new Array();
n = 0;
for (i = 0; i < 15; i++) {
bottom[i] = n;
n += 10;
}

head = new Array();
n = 9;
for (i = 0; i < 15; i++) {
head[i] = n;
n += 10;
}

main = new Array();
for (i = 0; i < 150; i++) {
main[i] = random();
}

function random() {
ballCount = 3;
randomNum = Math.floor((Math.random() * ballCount));
randomNum++;
return randomNum;
}

function onBall(numba) {
if (main[numba] != 0) {
crayon = main[numba];
findAdjacent(numba);
if (adj.length > 1) {
for (n = 0; n < adj.length; n++) {
document["img" + adj[n]].src = eval("on" + crayon + ".src");
document.scores.click.value = (adj.length-2)*(adj.length-2);
         }
      }
   }
}

function offBall(numba) {
if (main[numba] != 0) {
crayon = main[numba];
findAdjacent(numba);
if (adj.length > 1) {
for (n = 0; n < adj.length; n++) {
document["img" + adj[n]].src = eval("off" + crayon + ".src");
document.scores.click.value = 0;
         }
      }
   }
}

function clickBall(numba) {
if (main[numba] != 0) {
findAdjacent(numba);
if (adj.length > 1) {
for (n=0; n<adj.length; n++) {
main[adj[n]] = 0;
}
slideBalls();
startUp();
total = (adj.length - 2) * (adj.length - 2) + total;
document.scores.show.value = total;
document.scores.click.value = 0;
winTotal = total + 1000;
if (checkWinner()) {

winner = 1;
}
q = 0;
checkLoser();
if (q == 60 && winner == 0) {
alert("Fim de jogo!");
         }
      }
   }
}


function checkLoser() {
if (q == 60) {
return true
}
if (main[q] != 0) {
if (smallAdjacent(q)) {
return false;
   }
}
q++;
checkLoser();
}


function checkWinner() {
if (main[0] == 0) {
return true;
   }
}


function smallAdjacent(numba) {
isBottom = 0;
isHead = 0;
for (n = 0; n < 20; n++) {
if (numba == head[n]) {
isHead = 1;
   }
}
for (n = 0; n < 20; n++) {
if (numba == bottom[n]) {
isBottom = 1;
   }
}
if (main[numba + 1] == main[numba] && isHead != 1) {
return true;
}
if (main[numba + 10] == main[numba]) {
return true;
}
if (main[numba - 1] == main[numba] && isBottom != 1) {
return true;
}
if (main[numba - 10] == main[numba]) {
return true;
}
return false;
}

function slideBalls() {
change = 0;
for (i = 0; i < 15; i++) {
blankCount = 0;
column = new Array();
newColumn = new Array();
for (c = 0; c < 10; c++) {
column[c] = main[c + change];
}
for (c = 0; c < 10; c++) {
if (column[c] == 0) {
blankCount++;
newColumn[10-blankCount] = 0;
}
else {
newColumn[c - blankCount] = column[c];
   }
}
for (c = 0; c < 10; c++) {
main[c + change] = newColumn[c];
}
if (blankCount == 10) {
for (c = change; c < 150; c++) {
main[c] = main[c + 10];
}
for (c = 140; c < 150; c++) {
main[c] = 0;
}
change -= 10;
}
change += 10;
   }
}

function startUp() {
document.scores.show.value = 0;
for (i = 0; i < main.length; i++) {
crayon = main[i];
document["img" + i].src = eval("off" + crayon + ".src");
   }
}


function findAdjacent(numba) {
adj = new Array();
adj[0] = numba;
i = 0;
c = 0;
findAdjacent2(adj[c]);
}

function findAdjacent2(numba) {
isBottom = 0;
isHead = 0;
for (n = 0; n < 20; n++) {
if (numba == head[n]) {
isHead = 1;
   }
}
for (n = 0; n < 20; n++) {
if (numba == bottom[n]) {
isBottom = 1;
   }
}
if (main[numba+1] == main[numba] && isHead != 1 && isAdjacent(numba+1)) {
i++;
adj[i] = numba + 1;
}
if (main[numba+10] == main[numba] && isAdjacent(numba+10)) {
i++;
adj[i] = numba + 10;
}
if (main[numba-1] == main[numba] && isBottom != 1 && isAdjacent(numba-1)) {
i++;
adj[i] = numba - 1;
}
if (main[numba-10] == main[numba] && isAdjacent(numba-10)) {
i++;
adj[i] = numba - 10;
}
c++;
if (c == adj.length) {
blah = 500;
}
else {
findAdjacent2(adj[c]);
   }
}

function isAdjacent(numba) {
isAdj = 1
for (n=0; n<adj.length; n++) {
if (adj[n] == numba) {
isAdj = 0
}
}
if (isAdj == 1) {
return true;
}
else {
return false;
   }
}


