
var maxx=13;
var maxy=8;
var maxbing=40;
var blank=40;
var hidden=0;
var gamemode=0;
var currentx=-1;
var currenty=-1;
var lastx=-1;
var lasty=-1;
var failed=false;
var score=0

var grid=new Array(maxx);
var bings=new Array(maxbing);
var scgs=new Array(9);
var scdigs=new Array(4);
var scgspace=new Image();
var scgminus=new Image();
scgspace.src=scg("space");
scgminus.src=scg("minus");

for (i=0; i<=maxbing; i++) {
 bings[i]=new Image();
 bings[i].src=bing(i);
}

for (i=0; i<=maxx; i++) {
 grid[i]=new Array(maxy);
};

for (i=0; i<=9; i++) {
 scgs[i]=new Image();
 scgs[i].src=scg(i);
}

function bing(id) {
 return ""+id+".png";
}

function scg(id) {
 return "../Trio/glyphs/d"+id+".gif";
}


function R(n) {
 return Math.floor(Math.random()*n);
}

function NewGame() {
 listn=(maxx+1)*(maxy+1);
 var list=new Array(listn);
 j=1;
 for (i=0;i<listn;i++) {
	 list[i]=j;
	 if (i%2) j++;
	 if (j==blank) j=1;
 };
 for (i=0;i<=listn*listn;i++) {
	 j=R(listn);
	 k=R(listn);
	 z=list[j];
	 list[j]=list[k];
	 list[k]=z;
 };
 i=0;
 for (y=0; y<=maxy; y++)
  for (x=0; x<=maxx; x++) {
   grid[x][y]=list[i];
   i++;
 };
 PaintGrid(2);
 gamemode=1;
 score=0
 PaintScore();
}

function Press(x,y) {
 if (gamemode==1) {
  if (grid[x][y]==blank) return;
  if (failed) {
   PaintGlyph(lastx,lasty,hidden);
   PaintGlyph(currentx,currenty,hidden);
   failed=false;
  };
  currentx=x;
  currenty=y;
  PaintGlyph(x,y,grid[x][y]);
  gamemode=2;
 } else if (gamemode==2) {
  if ((x==currentx) && (y==currenty)) return;
  if (grid[x][y]==blank) return;
  if (grid[x][y]==grid[currentx][currenty]) {
   grid[x][y]=blank;
   grid[currentx][currenty]=blank;
   PaintGlyph(x,y,blank);
   PaintGlyph(currentx,currenty,blank);
   currentx=-1;
   score=score+10;
   PaintScore();
  } else {
   failed=true;
   lastx=x;
   lasty=y;
   PaintGlyph(x,y,grid[x][y]);
   score=score-1;
   PaintScore();
  };
  gamemode=1;
 };		
};

function PaintScore() {
 q=score;
 minus=false;
 scgsrc="";
 if (q<0) {minus=true; q=-q;};
 if (minus) scgsign=scgminus.src; else scgsign=scgspace.src;
 document.getElementById("ssign").src=scgsign;
 scdigs[0]=Math.floor(q/10000);
 q=q-scdigs[0]*10000;
 scdigs[1]=Math.floor(q/1000);
 q=q-scdigs[1]*1000;
 scdigs[2]=Math.floor(q/100);
 q=q-scdigs[2]*100;
 scdigs[3]=Math.floor(q/10);
 q=q-scdigs[3]*10;
 scdigs[4]=q;
 for (i=0; i<=4; i++) {
  xelement=document.getElementById("s"+i);
  xelement.src=scgs[scdigs[i]].src;
 };
}

function PaintGrid(what) {
 for (y=0; y<=maxy; y++)
  for (x=0; x<=maxx; x++) {
	  if (what==1) PaintGlyph(x,y,grid[x][y]);
	  else PaintGlyph(x,y,hidden);
  };
}

function PaintGlyph(x,y,z) {
 xelement=document.getElementById("x"+x+"y"+y);
 if (xelement.src != bings[z].src)
  xelement.src=bings[z].src;
}

