<!--

var hlines = null;
var vlines = null;
var squares = null;
var blnkTmId=null;
var p1=0;var p2=0;var gameover=false;
var keepblink=false;
var sqClrs = new Array("", "#FF7F50", "#98FB98");
var lnClrs = new Array("", "#ee0000", "#00aa00");
var lastidstr = "";var lastclr="";
var player = 1;

function setNames()
{
    var nmobj = document.getElementById("plr1");
    if (nmobj != null) {if (nmobj.value.length > 0) {nmArr[1]=nmobj.value;};}
    nmobj = document.getElementById("plr2");
    if (nmobj != null) {if (nmobj.value.length > 0) {nmArr[2]=nmobj.value;};}
}


function startGame()
{
  setNames();
  gameover=false;
  p1=0;p2=0;
  
  hlines = new Array(7);
  vlines = new Array(7);
  squares = new Array(7);
  for (var i = 0; i < 7; i++)
  {
      hlines[i] = new Array(7);
      vlines[i] = new Array(7);
      squares[i] = new Array(7);
      for (var j = 0; j < 7; j++) {hlines[i][j] = 0;vlines[i][j] = 0;squares[i][j] = 0;}
  }
  
  var r=0;;
  var tblstr = "";
  for (var i = 0; i < 5; i++,r++)
  {
      var j;
      tblstr += '<div id="div_h">';
      for (j=0; j < 5; j++)      
      {
         idstr = r + "_" + j + "_" + r + "_" + (j+1);
         tblstr += '<div class="dot"></div><div class="hline" id="' + idstr + '" onClick="selectLine(\'' + idstr + '\');"></div>';
      }
      tblstr += '<div class="dot"></div>';
      tblstr += '</div><div id="div_v">';
      for (j = 0; j < 5; j++)      
      {
         idstr = r + "_" + j + "_" + (r+1) + "_" + j;
         tblstr += '<div class="vline" id="' + idstr + '" onClick="selectLine(\'' + idstr + '\');"></div><div class="box" id = "hs_' + r + '_' + j + '"></div>';
      }
      idstr = r + "_" + j + "_" + (r+1) + "_" + j;
      tblstr += '<div class="vline" id = "' + idstr + '" onClick="selectLine(\'' + idstr + '\');"></div>';
      tblstr += '</div>';
  }

  tblstr += '<div id="div_h">';
  for (var j = 0; j < 5; j++)      
  {
     idstr = r + "_" + j + "_" + r + "_" + (j+1);
     tblstr += '<div class="dot"></div><div class="hline" id="' + idstr + '" onClick="selectLine(\'' + idstr + '\');"></div>';
  }
  tblstr += '<div class="dot"></div>';
  tblstr += '</div>';
    
  var obj = document.getElementById("dotsbrd");
  if (obj != null)
  {
    obj.innerHTML = tblstr;
  }
  updateTurn();showScores();
}



function selectLine(idstr)
{
    if (gameover) {alert("Game over");return;}
    if (blnkTmId != null) {clearTimeout(blnkTmId);blnkTmId=null;}
    keepblink=false;stopBlink();
    //processSelectedLine(idstr);
    setTimeout('processSelectedLine("' + idstr + '")', 50);
}

function stopBlink()
{
    var o = document.getElementById(lastidstr); 
    if (o != null) {o.style.backgroundColor=lastclr;}
}

function blinkLine(idstr, clr, n)
{
    if (keepblink)
    {
    	lastidstr = idstr;lastclr=clr;
        var nclr=clr;
	var o = document.getElementById(idstr); if (n%2 == 1) {nclr="#ffffff";}
	if (o != null) {o.style.backgroundColor = nclr;}
	n++;
        blnkTmId = setTimeout('blinkLine("' + idstr + '","' + clr + '",' + n + ')', 50);
    }
}


function processSelectedLine(idstr)
{
    if (blnkTmId != null) {clearTimeout(blnkTmId);blnkTmId=null;}
    var o = document.getElementById(idstr);
    if (o != null) {o.style.backgroundColor= lnClrs[player];o.onclick=null;o.style.cursor="default";}
    keepblink=true;blnkTmId = setTimeout('blinkLine("' + idstr + '","' + lnClrs[player] + '", 1)', 50);
    
    var strarr = idstr.split("_");
    var lparr = new Array(4); 
    lparr[0] = parseInt(strarr[0]);
    lparr[1] = parseInt(strarr[1]);
    lparr[2] = parseInt(strarr[2]);
    lparr[3] = parseInt(strarr[3]);
    
    if (lparr[0] == lparr[2]) {hlines[lparr[0]][lparr[1]] = 1;}
    else if (lparr[1] == lparr[3]) {vlines[lparr[1]][lparr[0]] = 1;}

    checkLine(lparr);    
    updateTurn();    
}

function updateTurn()
{
    if (gameover) {return;}
    var o = document.getElementById("txtbrd");
    if (o != null) {o.innerHTML = nmArr[player] + " turn.";}
}

function checkLine(lparr)
{
    if (lparr[0] == lparr[2]) {if (checkBox(lparr,-1,0)) {trydown(lparr);checkBox(lparr,1,0);} else {if (checkBox(lparr,1,0)) {tryup(lparr);checkBox(lparr,-1,0)} else {player=(player==1?2:1);}}}
    else if (lparr[1] == lparr[3]) {if (checkBox(lparr,0,-1)) {tryright(lparr);checkBox(lparr,0,1)} else {if (checkBox(lparr,0,1)) {tryleft(lparr);checkBox(lparr,0,-1)} else {player=(player==1?2:1);}}}
    else {}
}

function tryup(lparr)
{
    trypoint(lparr[0]-1, lparr[1]);
}
function trydown(lparr)
{
    trypoint(lparr[0], lparr[1]);
}
function tryleft(lparr)
{
    trypoint(lparr[0], lparr[1]-1);
}
function tryright(lparr)
{
    trypoint(lparr[0], lparr[1]);
}

function trypoint(r, c)
{
    hr1 = r; hc1 = c; if (hr1 < 0 || hc1 < 0) {return;}
    hr2 = r+1; hc2 = c; if (hr2 > 5) {return;}
    vr1 = c; vc1 = r;
    vr2 = c+1, vc2 = r; if (vr2 > 5) {return;}
        
    var idstr = "";
    if (hlines[hr1][hc1] == 1 && hlines[hr2][hc2] == 1 && vlines[vr1][vc1] == 1)
    {
        if (vlines[vr2][vc2] == 0)
        	idstr = vc2 + "_" + vr2 + "_" + parseInt(vc2+1) + "_" + vr2;
    }
    else if (hlines[hr1][hc1] == 1 && hlines[hr2][hc2] == 1 && vlines[vr2][vc2] == 1)
    {
        if (vlines[vr1][vc1] == 0)
        	idstr = vc1 + "_" + vr1 + "_" + parseInt(vc1+1) + "_" + vr1;
    }
    else if (vlines[vr1][vc1] == 1 && vlines[vr2][vc2] == 1 && hlines[hr1][hc1] == 1)
    {
        if (hlines[hr2][hc2] == 0)
        	idstr = hr2 + "_" + hc2 + "_" + hr2 + "_" + parseInt(hc2+1);
    }
    else if (vlines[vr1][vc1] == 1 && vlines[vr2][vc2] == 1 && hlines[hr2][hc2] == 1)
    {
        if (hlines[hr1][hc1] == 0)
	        idstr = hr1 + "_" + hc1 + "_" + hr1 + "_" + parseInt(hc1+1);
    }
    
    if (idstr.length > 4) {processSelectedLine(idstr);}
}


function checkBox(lparr, r, c)
{
    var pts = new Array(4);
    pts[0] = lparr[0] + r; pts[1] = lparr[1] + c;
    pts[2] = lparr[2] + r; pts[3] = lparr[3] + c;
    if (pts[0] < 0 || pts[0] > 10) {return;}
    if (pts[1] < 0 || pts[1] > 10) {return;}
    if (pts[2] < 0 || pts[2] > 10) {return;}
    if (pts[3] < 0 || pts[3] > 10) {return;}
    
    var squared = false;
    if (c == 0)
    {
	    r1 = Math.min(lparr[0], pts[0]); r2 = Math.max(lparr[0], pts[0]);
	    c1 = Math.min(lparr[1], pts[1]); c2 = Math.max(lparr[3], pts[3]);
	    /*
	    pstr = "l1=" + lparr[0] + ",l2=" + lparr[1] + ",l3=" + lparr[2] + ",l4=" + lparr[3] + "<br>"; 
	    pstr += "p1=" + pts[0] + ",p2=" + pts[1] + ",p3=" + pts[2] + ",p4=" + pts[3] + "<br>"; 
	    pstr += "r1=" + r1 + ",c1=" + c1 + ",r2=" + r2 + ",c2=" + c2 + "<br>"; 
	    showdebug(pstr);
	    */
	    if (hlines[r1][c1] == 1 && hlines[r2][c1] == 1 && vlines[c1][r1] == 1 && vlines[c2][r1] == 1)
	    {
		squared = true;
	    }   
    }
    else
    {
	    r1 = Math.min(lparr[0], lparr[2]); r2 = Math.max(lparr[0], lparr[2]);
	    c1 = Math.min(lparr[1], pts[1]); c2 = Math.max(lparr[1], pts[1]);
	    /*
	    pstr = "l1=" + lparr[0] + ",l2=" + lparr[1] + ",l3=" + lparr[2] + ",l4=" + lparr[3] + "<br>"; 
	    pstr += "p1=" + pts[0] + ",p2=" + pts[1] + ",p3=" + pts[2] + ",p4=" + pts[3] + "<br>"; 
	    pstr += "r1=" + r1 + ",c1=" + c1 + ",r2=" + r2 + ",c2=" + c2 + "<br>"; 
	    showdebug(pstr);
	    */
	    if (hlines[r1][c1] == 1 && hlines[r2][c1] == 1 && vlines[c1][r1] == 1 && vlines[c2][r1] == 1)
	    {
		squared = true;
	    }   
    }

    if (squared) 
    {
       squared = fillBox(lparr, pts);
    }
    
    return squared;
}

function fillBox(lparr, pts)
{
    var x = lparr[0]; var y = lparr[1];
    if (x > pts[0]) {x = pts[0];} 
    if (y > pts[1]) {y = pts[1];}
        
    var squared = false;
    if (squares[x][y] == 0)
    {
        squared = true;
        squares[x][y] = player;
        var o = document.getElementById("hs_" + x + "_" + y);
        if (o != null) {o.style.backgroundColor=sqClrs[player];}
        showScores();
    }  
    
    return squared;
}

function showScores()
{
    p1=0;p2=0;
    for (var i = 0; i < 7; i++)
    {
        for (var j = 0; j < 7; j++)
        {
            if (squares[i][j] == 1) {p1++;}
            else if (squares[i][j] == 2) {p2++;}
        }
    }
    
    var o = document.getElementById("scrdiv_1");if (o != null) {o.innerHTML = nmArr[1] + ":&nbsp;" + p1;}
    o = document.getElementById("scrdiv_2");if (o != null) {o.innerHTML = nmArr[2] + ":&nbsp;" + p2;}    
    if (p1+p2 == 25) {keepblink=false;stopBlink();showGameOver();}
}

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

function submitfrm()
{
    var f = document.getElementById("dotsbrd");
    if (f != null) 
    {
        f.innerHTML = "";
        var str = "";if (p1 > p2) {str = "Congratulations " + nmArr[1] + "<br/>You won by " + p1 + " to " + p2;}
        else {str = "Congratulations " + nmArr[2] + "<br/>You won by " + p2 + " to " + p1;}
        var o = f.appendChild(document.createElement('div'));
        o.innerHTML='<input type="hidden" name="helppage" value="dotshelp.html" />';
        var o = f.appendChild(document.createElement('div'));
        o.innerHTML='<input type="hidden" name="gamepage" value="dots.html" />';
        o = f.appendChild(document.createElement('div'));
        o.innerHTML='<input type="hidden" name="msg" value="' + str + '" />';
    }
        
    document.dots_frm.submit();
}


function showdebug(pstr)
{
    var str = "";
    /*
    str = "<br>Hlines<br><table border=1>";
    for (i = 0; i < 7; i++)
    {
        str += "<tr>";
        for (j = 0; j < 7; j++)
        {
            str += ("<td>" + hlines[i][j] + "</td>");
        }
        str += "</tr>";
    }
    str += "</table>";
    
    str += "<br>Vlines<br><table border=1>";
    for (i = 0; i < 7; i++)
    {
        str += "<tr>";
        for (j = 0; j < 7; j++)
        {
            str += ("<td>" + vlines[i][j] + "</td>");
        }
        str += "</tr>";
    }
    str += "</table>";
    */
    var p = document.getElementById("debug");
    var a = p.appendChild(document.createElement('div')); 
    a.innerHTML = pstr + str;
}


//-->