<!--

var sgArr = new Array();
var blnkArr = new Array();
var imgArr = new Array(11);
var imgNms = new Array("","red_of.jpg","grn_of.jpg","blu_of.jpg","ylw_of.jpg","","red.jpg","grn.jpg","blu.jpg","ylw.jpg","");
var tScore=0;

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

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

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

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



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

function debugstr(str)
{
/*
    o = document.getElementById("dbg");
    if (o!=null)
    {
       f = document.createElement("div");f.innerHTML=str;
       o.appendChild(f);
    }
*/
}


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);debugstr(adjArr);
    for (i = 0; i < adjArr.length;i++) {sgArr[adjArr[i]]=0;}
    for (i = 0; i < adjArr.length;i++) {pushDown(adjArr[i]);}
    pushLeft(adjArr);
    scr = (adjArr.length)*(adjArr.length-1);
    showTotalScore(scr);
    showCurScore(0);
    if (checkGame()) {submitfrm();}
}


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);alert("Game Over.\nYour bonus is 1000 points.");}
    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;}
            }
        }
        if (gameover) {alert("Game Over.");}
    }
    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 i = col+1; i < RC; i++)
    {
        if (sgArr[(RC-1)*RC+i] == 0) {return;}
        for (j = RC-1; j >= 0; j--)
        {
            idxr = j*RC + i;
            idxl = idxr-1;
            debugstr("l=" + idxl + ",r=" + idxr);
            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)
        {
            debugstr("Move left:" + adjs[k]);
            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,ITMS));
        }
    }
}

function showGame()
{
    var tblstr = "<table border=0 cellspacing=0 cellpadding=0 bgcolor=#000000>";
    for (i = 0; i < RC; i++)
    {
        tblstr += "<tr>";
        for (j = 0; j < RC; j++)
        {
            idx = i*RC + j;
            tblstr += "<td><div class=s1 onClick='showDown(" + idx+ ");' onMouseOver='showOn(" + idx + ");' id='" + "s_" + idx + "'><img border=0 src='" + imgArr[sgArr[idx]].src + "'></div></td>";
        }
        tblstr += "</tr>";
    }
    tblstr += "</table>";

    var obj = document.getElementById("sg");
    if (obj != null) {obj.innerHTML = tblstr;}
}


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

function submitfrm()
{
      f = document.getElementById("stuscr");
      o = f.appendChild(document.createElement('div'));
      o.innerHTML="<input type=hidden name=points value=" + tScore + ">";
      o = f.appendChild(document.createElement('div'));
      o.innerHTML="<input type=hidden name=name value=\"" + window.parent.document.getElementById("nmplc").innerHTML + "\">";
      document.colorclipfrm.submit();
}

function IsAlphaNum(str) {
  $cstr = new String(str);
  return $cstr.match(/^[a-zA-Z0-9 ]+$/);
}

function setName()
{
  var nm;
  nm=document.colorclipfrm.sname.value;
  if (nm.length > 0)
  {
    if (IsAlphaNum(nm) == null)
    {
      alert("Name should contain only Alpha Numeric characters");
      document.colorclipfrm.sname.focus();
      return false;
    }
    var nm2;
    nm2=window.parent.document.getElementById("nmplc");
    if (nm2 != null) {nm2.innerHTML=nm;}
  }
  return true;
}

function getName()
{        
    var nm2=window.parent.document.getElementById("nmplc");
    if (nm2 != null) {
      if (nm2.innerHTML != "Name") {
        document.colorclipfrm.sname.value=nm2.innerHTML;
      }
    }
    document.colorclipfrm.sname.focus();
}

//-->
