<!--

var sgArr = new Array();
var blnkArr = new Array();
var imgArr = null;
var imgNms = new Array("","r_of.png","g_of.png","b_of.png","r_on.png","g_on.png","b_on.png");
var tScore=0;
var RC=8;

function initScr()
{
    imgArr = new Array(imgNms.length);
    for (var i = 1; i < imgNms.length; i++) {imgArr[i] = new Image();imgArr[i].src='images/' + imgNms[i];}
    tScore=0;
    genGame();
    showGame();
}

function showCurScore(scr)
{
	var o = document.getElementById("cscr");
	if (o != null) {o.innerHTML = 'Touch Score:' + scr;}
}

function showTotalScore(scr)
{
    	tScore += scr;
	var o = document.getElementById("tscr");
	if (o != null) {o.innerHTML = 'Total Score:' + tScore;}
}

function showImage(idx,spFlag)
{
	var o = document.getElementById("s_" + idx);
	x = sgArr[idx];
	if (spFlag)
	{
	    if (o != null) {o.innerHTML = '<img src="' + imgArr[x+3].src + '">';}
	}
	else
	{
	    if (o != null) 
	    {
	        if (sgArr[idx] > 0) {o.innerHTML ='<img src="' + imgArr[x].src + '">';}
	        else {o.innerHTML = '<div class="s0"></div>';}
	    }
	}
}



function showOn(idx)
{
    for (var i1 = 0; i1 < blnkArr.length;i1++)
    {
        if (idx == blnkArr[i1]) {showDown(idx);cursorOnOff();return;}
    }
    showOff(blnkArr);
    scr = 0;
    showCurScore(scr);
    while (blnkArr.pop()) {;}
    addAllAdjs(idx,blnkArr); if (blnkArr.length < 2) {while (blnkArr.pop()) {;};return;}
    for (var i1 = 0; i1 < blnkArr.length;i1++)
    {
        showImage(blnkArr[i1],true);
    }
    scr = (blnkArr.length)*(blnkArr.length-1);
    showCurScore(scr);
}


function pushDown(idx)
{
    b = idx;
    t = b-RC;
    showImage(b, false);
    while (sgArr[t] != 0 && t >= 0)
    {
	sgArr[b] = sgArr[t];sgArr[t]=0;
	showImage(b, false);
	showImage(t, false);
	b = t;t = b-RC;
    }
}

function sortfunction(a, b){return (a - b);}

function showDown(idx)
{
    while (blnkArr.pop()) {;}
    var adjArr = new Array();
    addAllAdjs(idx,adjArr); if (adjArr.length < 2) {return;}
    adjArr.sort(sortfunction);
    for (var i = 0; i < adjArr.length;i++) {sgArr[adjArr[i]]=0;}
    for (var i = 0; i < adjArr.length;i++) {pushDown(adjArr[i]);}
    pushLeft(adjArr);
    scr = (adjArr.length)*(adjArr.length-1);
    showTotalScore(scr);
    showCurScore(0);
    if (checkGame()) {showGameOver();} //("Game Over!!");submitfrm();}
}


function showGameOver()
{
    var str = '<div style="height:36px;float:right;"><div style="float:left;padding-top:10px;;">Game Over</div><div id="lbtn"></div><div id="mbtn" onClick="submitfrm();">OK</div><div id="rbtn"></div></div>';
    var f = document.getElementById("scoreboard"); if (f != null) {f.innerHTML = str;}
}

function submitfrm()
{
    var f = document.getElementById("colorclipbrd");
    if (f != null) 
    {
        f.innerHTML = "";
        var str = "Congratulations!!<br>Your score is " + tScore;
        var o = f.appendChild(document.createElement('div'));
        o.innerHTML='<input type="hidden" name="helppage" value="colorcliphelp.html" />';
        var o = f.appendChild(document.createElement('div'));
        o.innerHTML='<input type="hidden" name="gamepage" value="colorclip.html" />';
        o = f.appendChild(document.createElement('div'));
        o.innerHTML='<input type="hidden" name="msg" value="' + str + '" />';
    }
        
    document.colorclip_frm.submit();
}

function checkGame()
{
    var gameover = true;
    for (var i = (RC-1)*RC; i < RC*RC; i++) {if (sgArr[i] != 0) {gameover=false;break;}}
    if (gameover) {showTotalScore(1000);}
    else
    {
        gameover=true;var tmpArr = new Array();
        for (var i = RC; i > 0 && (gameover == true); i--)
        {
            for (var j = 0; j < RC && (gameover == true); j++)
            {
                k = (i-1)*RC + j;
                while (tmpArr.pop()) {;}
                addAllAdjs(k, tmpArr); if (tmpArr.length > 1) {gameover=false;}
            }
        }
    }
    return gameover;
}

function moveColumn(idx)
{
    if (idx+1 == RC*RC) {return;} //last column
    if (sgArr[idx+1] == 0 || sgArr[idx] != 0) {return;}
    col = idx-(RC-1)*RC;
    for (var i2 = col+1; i2 < RC; i2++)
    {
        if (sgArr[(RC-1)*RC+i2] == 0) {return;}
        for (var j2 = RC-1; j2 >= 0; j2--)
        {
            idxr = j2*RC + i2;
            idxl = idxr-1;
            sgArr[idxl] = sgArr[idxr];sgArr[idxr]=0;
            showImage(idxl, false);showImage(idxr, false);
        }
    }
}



function pushLeft(adjs)
{
    for (var k = adjs.length-1; k >= 0; k--)
    {
        if (adjs[k] >= (RC-1)*RC)
        {
            moveColumn(adjs[k]);
        }
    }
}

function showOff(adjArr)
{
    if (adjArr.length < 2) {return;}
    for (i = 0; i < adjArr.length;i++)
    {
        showImage(adjArr[i], false);
    }
}

function addAllAdjs(idx, adjArr)
{
    if (sgArr[idx] == 0) {return;}
    adjArr.push(idx);
    addLTRD(idx, adjArr);
}


function adjArrPush(idx, adjArr)
{
    for (i = 0; i < adjArr.length;i++) {if (idx == adjArr[i]) {return false;}}
    adjArr.push(idx);
    return true;
}


function addLeft(idx, adjArr)
{
    if (idx % RC == 0) {return;}
    if (sgArr[idx] == sgArr[idx-1]) {if (adjArrPush(idx-1, adjArr)) {addLTRD(idx-1, adjArr);}}
}


function addTop(idx, adjArr)
{
    if (idx < RC) {return;}
    if (sgArr[idx] == sgArr[idx-RC]) {if (adjArrPush(idx-RC, adjArr)) {addLTRD(idx-RC, adjArr);}}
}


function addRight(idx, adjArr)
{
    if ((idx+1) % RC == 0) {return;}
    if (sgArr[idx] == sgArr[idx+1]) {if(adjArrPush(idx+1, adjArr)){addLTRD(idx+1, adjArr);}}
}


function addBottom(idx, adjArr)
{
    if (idx > (RC-1)*RC) {return;}
    if (sgArr[idx] == sgArr[idx+RC]) {if(adjArrPush(idx+RC, adjArr)) {addLTRD(idx+RC, adjArr);}}
}


function addLTRD(idx, adjArr)
{
    addLeft(idx, adjArr);
    addTop(idx, adjArr);
    addRight(idx, adjArr);
    addBottom(idx, adjArr);
}


function genGame()
{
    for (i = 0; i < RC; i++)
    {
        for (j = 0; j < RC; j++)
        {
            sgArr.push(getRandom(1,3));
        }
    }
}

function showGame()
{
    var str = "";
    for (var i = 0; i < RC; i++)
    {
        for (var j = 0; j < RC; j++)
        {
            idx = i*RC + j;
            str += '<div class="s1" onClick="showOn(' + idx+ ');" id="s_' + idx + '"><img src="' + imgArr[sgArr[idx]].src + '"></div>';
        }
    }

    var obj = document.getElementById("colorclipbrd");
    if (obj != null) {obj.innerHTML = str;}
    showTotalScore(0);
    showCurScore(0);
}


function getRandom(min,max)
{
    return min + Math.floor(Math.random()*(max-min+1))
}



function cursorOnOff()
{
    for (var i6 = 0; i6 < RC; i6++)
    {
        for (var j6 = 0; j6 < RC; j6++)
        {
            idx4 = i6*RC + j6;
            var obj = document.getElementById("s_"+idx4);
            if (obj != null) 
            {
                if (sgArr[idx4] == 0) {obj.style.cursor="default";} else {obj.style.cursor="pointer";}
            }
        }
    }
}


//-->
