gridDiv=null;
gridDivSetUp=false;
gridString="";
gridStringSetUp=false;

//default settings to pull off the popular grids
offset=0;
count=30;
easiest=-1;
hardest=-1;
kernel=1;
sortmode=0;
solutions=0;
guesses=0;
today=0;
maxNumberCount=37;

function parseString(str,replaceObj)
{
  var el,myReg;
  for(el in replaceObj)
  {
    if(typeof replaceObj[el]=='function') continue;
    myReg=new RegExp("%"+el+"%","g");
    str=str.replace(myReg,replaceObj[el]);
  }
  return str;
}

function showGridHTML(valueStr)
{
  var a0,styleStr,ix;

  var xName=mlText.xName;
  var yName=mlText.yName;

  a0="<table cellpadding=1 cellspacing=0>";
  var x,y;
  a0+="<tr>";
  a0+="<td></td>";
  for(x=0;x<9;x++)
  {
    a0+="<td>"+xName[x]+"</td>";
  }
  a0+="</tr>";

  ix=0;
  for(y=0;y<9;y++)
  {
    a0+="<tr>";
    a0+="<td>"+yName[y]+"</td>";
    for(x=0;x<9;x++)
    {
      styleStr=" style='border-color:";
      styleStr+=(y%3==0)?"blue ":"white ";
      styleStr+=(x%3==2)?"blue ":"white ";
      styleStr+=(y%3==2)?"blue ":"white ";
      styleStr+=(x%3==0)?"blue":"white";
      styleStr+="'";
      dv=valueStr.charAt(ix);
      if(dv=="_") dv="&nbsp;";
      a0+="<td"+styleStr+">"+dv+"</td>";
      ix++;
    }
    a0+="</tr>";
    ix++; //skip delimeter
  }
  a0+="</table>";
  return a0;
}

function setUpGridDiv()
{
  var i;
  
  gridDiv=document.getElementById("gridDiv");
  gridDivSetUp=true;
  if(gridStringSetUp) displayGrids();
}

function setUpGridString(popFrameEl)
{
  //var popFrameEl=document.getElementById("mostPopularGridFrame");
  var oDoc = (popFrameEl.contentWindow || popFrameEl.contentDocument);
  if (oDoc.document) oDoc = oDoc.document;
  gridString=oDoc.body.innerHTML;
  gridStringSetUp=true;
  if(gridDivSetUp) displayGrids();
}

function displayGrids()
{
  var valueArray,i,a0,gridStringEl;
  var ct=0;
  
  a0="<table cellspacing=20>";
  valueArray=gridString.split(",");
  for(i=0;i<valueArray.length;i++)
  {
    valuePair=valueArray[i].split(":");
    gridPopularity=valuePair[0];
    gridStringEl=valuePair[1];
    gridDifficulty=valuePair[2];
    if(gridDifficulty==-1) gridDifficulty="?";
    gridGuesses=valuePair[3];
    if(gridGuesses==-1) gridGuesses="?";
    gridSolutions=valuePair[4];
    if(gridSolutions==-1) gridUnique="?";
    if(gridSolutions==0) gridUnique=mlText.noNone;
    if(gridSolutions==1) gridUnique=mlText.yes;
    if(gridSolutions>1) gridUnique=mlText.noGreaterThanOne;

    if(gridStringEl && isValidSudokuString(gridStringEl,"x"))
    {
      a0+="<tr><td class='nb'>#"+(i+1)+":</td><td class='nb'>"+
      parseString(mlText.hitCount,{hits:gridPopularity})+"<br>"+
      parseString(mlText.uniqueSolution,{isUnique:gridUnique})+"<br>"+
      parseString(mlText.difficultyScore,{difficultyScore:gridDifficulty})+"<br>"+
      parseString(mlText.numberOfGuesses,{guesses:gridGuesses})+"</td>";
      
      a0+="<td class='nb'>"+showGridHTML(gridStringEl)+"</td>";
      a0+="<td class='nb'><button onclick='chooseGrid(\""+gridStringEl+"\");'>"+mlText.loadThisOne+"</button></td>";
      //a0+="<td>"+gridStringEl+"</td>";
      a0+="</tr>";
      ct++;
    }
  }
  if(ct==0) a0+="<tr><td class='nb'>"+mlText.noGridsToday+"</td></tr>";
  a0+="</table>";
  gridDiv.innerHTML=a0;
}

function chooseGrid(gridStringEl)
{
  submitGridString(gridStringEl);
  gridStringEl=gridStringEl.replace(/x/g,"+");
  setCookie("currentgrid",gridStringEl,0.1);
  goToPage('index.html');
}
