﻿var KEY_LEFT = 0x25;
var KEY_UP = 0x26;
var KEY_RIGHT = 0x27;
var KEY_DOWN = 0x28; 
var currentlySelectedTextbox = null;
function GetFocus(text)
{
    text.focus();
    text.select();
}


function HelperCloseWindow()
{
       var MyHelper = returnObjById("Helper");
       MyHelper.style.display="none";  
}
function setText(text)
{
    if (currentlySelectedTextbox!=null)
    {
       currentlySelectedTextbox.value = text;
       var MyHelper = returnObjById("Helper");
       MyHelper.style.display="none";  
       GetFocus(currentlySelectedTextbox);       
    }
}
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function validateInt(iString) {
    return (("" + parseInt(iString)) == iString);
}

function ResolveClick(textBox,tx,ty)
{
   if (!textBox.readOnly)
   {
       var numbersArray=[0,0,0,0,0,0,0,0,0,0];
       var aux;
       for (var i=1;i<=9;i++)
       {
           var name = "ctl00_ContentPlaceHolder1_SudokuControl1_T"+tx.toString()+i.toString();
           aux = returnObjById(name).value;

           if(validateInt(aux))
           {
              numbersArray[aux]=1;
           }
       }
       for (var j=1;j<=9;j++)
       {
           var name = "ctl00_ContentPlaceHolder1_SudokuControl1_T"+j.toString()+ty.toString();
           aux = returnObjById(name).value;
           if(validateInt(aux))
           {
              numbersArray[aux]=1;
           }
       }
       for (var q=1;q<=3;q++)
       {
            for(var w=1;w<=3;w++)
            {
                  var startX = parseInt((tx-1)/3);
                  var startY = parseInt((ty-1)/3);
                  
                  startX = 3*startX+q;
                  
                  startY = 3*startY+w;
                  var name="ctl00_ContentPlaceHolder1_SudokuControl1_T"+startX.toString()+startY.toString();
                  aux = returnObjById(name).value;
                  if(validateInt(aux))
                  {
                    numbersArray[aux]=1;
                  }
            }
       }
       for (var r=1;r<=9;r++)
       {
          if (numbersArray[r]!=0)
          {
            var theBox = returnObjById("Help"+r.toString());
            theBox.className = "NoHelperBox";
          }
          else
          {
            var theBox = returnObjById("Help"+r.toString());
            theBox.className = "HelperBox";
          }
       }
       currentlySelectedTextbox = textBox
       if (returnObjById("ctl00_ContentPlaceHolder1_SudokuControl1_ShowHelp").checked)
       {
           var positions = findPos(textBox);
           var MyHelper = returnObjById("Helper");
           MyHelper.style.display="block";
           var tx = positions[0]-10;
           var ty = positions[1]-10;
           MyHelper.style.top = ty.toString()+"px";
           MyHelper.style.left = tx.toString()+"px";
       }
       else
       {
            GetFocus(textBox);
       }
   }
}
function returnObjById( id ) 
{ 
    if (document.getElementById) 
        {
            var returnVar = document.getElementById(id); 
        }
    else 
        if (document.all) 
        {
            var returnVar = document.all[id]; 
        }
        else 
            if (document.layers) 
            {
                var returnVar = document.layers[id]; 
            }
    return returnVar; 
} 


function setAnotherFocus(e,nb)
{
    if (e == KEY_DOWN)
    {
        if (nb>90)
        {
            nb = nb - 90;    
        }
        var newValue = nb+10;
        var newObject = "ctl00_ContentPlaceHolder1_SudokuControl1_T"+newValue.toString();
        var nextBox = returnObjById(newObject);
        if (nextBox!=null)
        {
            GetFocus(nextBox)
        }
        return true;
    }
    if (e == KEY_UP)
    {
        if ((nb>10)&&(nb<20))
        {
            nb = nb + 90;    
        }
        var newValue = nb-10;
        var newObject = "ctl00_ContentPlaceHolder1_SudokuControl1_T"+newValue.toString();
        var nextBox = returnObjById(newObject);

        if (nextBox!=null)
        {
            GetFocus(nextBox)
        }
        return true;
    }    
    if (e == KEY_LEFT)
    {
        if (nb%10 == 1)
        {
           nb=nb+9;
        }
        var newValue = nb-1;
        var newObject = "ctl00_ContentPlaceHolder1_SudokuControl1_T"+newValue.toString();
        var nextBox = returnObjById(newObject);

        if (nextBox!=null)
        {
            GetFocus(nextBox)
        }
        return true;
    }
    if (e== KEY_RIGHT)
    {
        if (nb%10 == 9)
        {
           nb=nb-9;
        }
        var newValue = nb+1;
        var newObject = "ctl00_ContentPlaceHolder1_SudokuControl1_T"+newValue.toString();
        var nextBox = returnObjById(newObject);

        if (nextBox!=null)
        {
            GetFocus(nextBox)
        }
        return true;
    }    
}


///////////////////////////
///////////////////////////
///////////////////////////
function addfav()
{
    var url="http://www.free-sudoku-games.net";
    var title = "Play free sudoku games";
    
	if (window.sidebar) 
	{ 
	    // Mozilla Firefox Bookmark		
	    window.sidebar.addPanel(title, url,"");	
	} 
	else 
	if( window.external ) 
	{   
	    // IE Favorite		
	    window.external.AddFavorite( url, title); 
	}	
	else 
	if(window.opera && window.print) 
	{ 
	    // Opera Hotlist		
	    var mbm = document.createElement('a');
        mbm.setAttribute('rel','sidebar');
        mbm.setAttribute('href',url);
        mbm.setAttribute('title',title);
        mbm.click();
	}
}


