var pieces = new Array(50);
var startval=0;
//var picdir='empty';
var picdir=basedir;

for (n=1;n<=maxrow;n++)
	{
	for (m=1;m<=maxcol;m++)
		{
		pieces[n*10+m]=(n*10+m);
		}
	}


function mix()
{
if (startval==1) { return; }
startval=1;

var holerow=maxrow;
var holecol=maxcol;

var lastdirect = -1;
var n=0;
while (n<50)
	{
	var mixokay=false;
	var direct=Math.floor(Math.random()*4);
	if (direct==0) { rg=holerow+1; cg=holecol;  mixokay=on_board(rg,cg) && (lastdirect != 1); }
	if (direct==1) { rg=holerow-1; cg=holecol;  mixokay=on_board(rg,cg) && (lastdirect != 0); }
	if (direct==2) { rg=holerow; cg=holecol+1;  mixokay=on_board(rg,cg) && (lastdirect != 3); }
	if (direct==3) { rg=holerow; cg=holecol-1;  mixokay=on_board(rg,cg) && (lastdirect != 2); }
	if (mixokay)
		{
		n++;
		lastdirect = direct;
		document.getElementById("F"+holerow+holecol).src = document.getElementById("F"+rg+cg).src;
		document.getElementById("F"+rg+cg).src = picdir+"/hole.jpg";
                var thole = pieces[holerow*10+holecol];
                pieces[holerow*10+holecol]=pieces[rg*10+cg];
		pieces[rg*10+cg]=thole;
		holerow = rg;
		holecol = cg;
		}
	}
}

function dot_is(imgname)
{
        var fn = document.getElementById(imgname).src;
        var l=fn.length;
        var filename=fn.substring(l-8,l-4);
        return filename;
}

function on_board(r,c)
{
if (r<1 || r>maxrow || c<1 || c>maxcol ) return false;
return true;
}


function click_on(rowpos, colpos)
{
        if (startval==0) { return;}
        rg=rowpos+1; cg=colpos;   if(on_board(rg,cg) && dot_is("F"+rg+cg)=="hole") { move(rowpos, colpos,rg,cg); return; }
        rg=rowpos-1; cg=colpos;   if(on_board(rg,cg) && dot_is("F"+rg+cg)=="hole") { move(rowpos, colpos,rg,cg); return; }
        rg=rowpos;   cg=colpos+1; if(on_board(rg,cg) && dot_is("F"+rg+cg)=="hole") { move(rowpos, colpos,rg,cg); return; }
        rg=rowpos;   cg=colpos-1; if(on_board(rg,cg) && dot_is("F"+rg+cg)=="hole") { move(rowpos, colpos,rg,cg); return; }
        return;
}

function move(rowpos, colpos,rg,cg)
{
	document.getElementById("F"+rg+""+cg).src = document.getElementById("F"+rowpos+colpos).src;
	document.getElementById("F"+rowpos+colpos).src = picdir+"/hole.jpg";
        pieces[rg*10+cg]=pieces[rowpos*10+colpos]
        pieces[rowpos*10+colpos]=33
        if (reachedfinish()) {
           document.getElementById("F"+rowpos+colpos).src = picdir+"/r"+rowpos+"c"+colpos+".jpg";
           //document.getElementById('Layer1').style.visibility='visible';
           stoptimer();
           startval=0; }
}

function reachedfinish()
{
for (n=1;n<=maxrow;n++)
	{
	for (m=1;m<=maxcol;m++)
		{
		if (!(pieces[n*10+m]==(n*10+m))) { return false; }
		}
	}
return true;
}

function alerting(alertmsg)
{
        alert(alertmsg);
}

function resetpuzzle(dir)
{
        startval=0;
        var picdir=dir;
        //document.getElementById('Layer1').style.visibility='hidden';
        for (n=1;n<=maxrow;n++)
        	{
        	for (m=1;m<=maxcol;m++)
        		{
                        document.getElementById("F"+n+""+m).src = picdir+"/r"+n+"c"+m+".jpg";
        		pieces[n*10+m]=(n*10+m);
        		}
        	}
        document.getElementById("F"+maxrow+maxcol).src = picdir+"/hole.jpg";
}
