// Объект: Экран
// line -- число строк в экранной матрице
// col  -- число столбцов в экранной матрице
// -----------------------------------------
function screenRU(line,col)
{
  this.line = line;
  this.col  = col;

  this.screen = new Array();

  for(var i=0; i<this.line; i++) // инициализация матрицы нулями
  {
    this.screen[i] = new Array();
    for(var j=0; j<this.col; j++)
      this.screen[i][j] = 0;

  }

  // методы объекта

  this.on     = _onRU;    // зажечь точку на экране
  this.off    = _offRU;   // погасить точку на экране
  this.offall = _offallRU; // покасить все точки на экране

}

// Зажечь точку на экране
// ----------------------
function _onRU(i, j)
{
  this.screen[i][j] = 1;

}

// Погасить точку на экране
// ----------------------
function _offRU(i, j)
{
  this.screen[i][j] = 0;

}

// Погасить все точки на экране
// ----------------------------
function _offallRU()
{
  for(var i=0; i<this.line; i++)
    for(var j=0; j<this.col; j++)
      this.screen[i][j] = 0;
}

//==========================================================

// Проверка совпадения двух матриц
// -------------------------------
function checkMatrix(m1, m2, line,col)
{
  for(var i=0; i<line; i++)
    for(var j=0; j<col; j++)
       if (m1[i][j] != m2[i][j]) return false;
  return true;
}

//var dxRU = 23; // смещение первого пиксела
//var dyRU = 31;

// Построение пикселов на экране
// -----------------------------
// N задания, строк, столбцов, размер клетки, смещение
function pixelIniRU(n,line,col,d,dx,dy)
{
  var beg = "<IMG class=pixel src=./pic/0202z.gif width=47 height=47 border=0 hspace=0 vspace=0 alt=''";
  var str = "";
  var i,j;
  for(i=0; i<line; i++)
    for(j=0; j<col; j++)
      str += beg+"id=i"+n+i+j+">";
  document.write(str);

  for(i=0; i<line; i++)
    for(j=0; j<col; j++)
    {
       eval("document.all['i"+n+i+j+"'].style.posLeft = "+eval(dx+d*j));
       eval("document.all['i"+n+i+j+"'].style.posTop = "+eval(dy+d*i));
    }
}


var vis = new Array ("hidden", "visible");

// Щелчок по экрану
// ----------------
// n       - номер экрана  (задания)
// line    - число строк
// col     - число столбцов
// dleft   - смещение слева к началу экрана
// dtop    - смещение справа к началу экрана
// width   - ширина пиксела
// height  - высота пиксела
// -----------------------------------------
function clickRU(n,line,col,dleft,dtop,width,height)
{
  var i,j;
  var obj = event.srcElement.id;

  // Определяем индексы пиксела
  if (obj.charAt(0) == "i")
  {
     i = obj.charAt(2); j = obj.charAt(3);
  }
  else
  {
     j = Math.floor((event.offsetX-dleft)/width);
     i = Math.floor((event.offsetY-dtop)/height);
  }

  var f = eval("1-m"+n+".screen[i][j]");
  eval("m"+n+".screen[i][j] = f");
  eval("document.all['i"+n+i+j+"'].style.visibility=vis[f]");
}

// Сброс экрана
// ------------
function iniMRU(n)
{
  var m = eval("m"+n);
  for(var i=0; i<m.line; i++)
    for(var j=0; j<m.col; j++)
    {
      m.off(i,j); // сброс матрицы
      eval("document.all['i"+n+i+j+"'].style.visibility='hidden'");
    }
}

// Ответы
// ------------
function iniTMRU(n, t)  // t - матрица с ответами
{
  var m = eval("m"+n);
  for(var i=0; i<m.line; i++)
    for(var j=0; j<m.col; j++)
      if (t[i][j])
      {
        m.on(i,j);
        eval("document.all['i"+n+i+j+"'].style.visibility='visible'");
      }
      else
      {
        m.off(i,j);
        eval("document.all['i"+n+i+j+"'].style.visibility='hidden'");
      }
}
