  IE4 = (document.all) ? 1 : 0;
  NS4 = (document.layers) ? 1 : 0;

  Ready = false;
  Rows = 0;
  Columns = 0;
  numRow = 0;
  numColumn = 1;
  Direction = 0;
  Pointer = 0;
  numArrows = 15;
  numHelps = 0;
  strActive = "";

  strImages = "";
  Info = "";
  InfoCells = "";
  Matrix = "";
  strLetter = "";

  function InitBrowser () {
    IE4 = (document.all) ? 1 : 0;
    NS4 = (document.layers) ? 1 : 0;

    Ready = false;
    Rows = 0;
    Columns = 0;
    numRow = 0;
    numColumn = 1;
    Direction = 0;
    Pointer = 0;
    numHelps = 0;
    strActive = "";

    Matrix = new Array(15);
    Matrix[0]  = "0100101000100";
    Matrix[1]  = "0111111101111";
    Matrix[2]  = "1111010101111";
    Matrix[3]  = "0111111010011";
    Matrix[4]  = "1011101111111";
    Matrix[5]  = "1011111001101";
    Matrix[6]  = "1111101110111";
    Matrix[7]  = "1010111110101";
    Matrix[8]  = "1000110111111";
    Matrix[9]  = "1111111101110";
    Matrix[10] = "0011110111011";
    Matrix[11] = "1111010100111";
    Matrix[12] = "1001101111101";
    Matrix[13] = "1010111101111";
    Matrix[14] = "1111111011111";

    Info = "XSize:13;YSize:15;ActiveCells:52;";
    InfoCells = new Array(52);
    InfoCells[0]  = "X1:0;Y1:0;X2:1;Y2:0;Dir:down;Length:4;Word:20110003;"
    InfoCells[1]  = "X1:2;Y1:0;X2:2;Y2:1;Dir:down;Length:7;Word:05021600070831;"
    InfoCells[2]  = "SubCells:2;X1:3;Y1:0;X2:4;Y2:0;Dir:down;Length:2;Word:1508;X2:3;Y2:1;Dir:down;Length:6;Word:230031130805;"
    InfoCells[3]  = "X1:5;Y1:0;X2:5;Y2:1;Dir:down;Length:3;Word:110831;"
    InfoCells[4]  = "SubCells:2;X1:7;Y1:0;X2:6;Y2:0;Dir:down;Length:2;Word:0017;X2:7;Y2:1;Dir:down;Length:2;Word:3104;"
    InfoCells[5]  = "X1:8;Y1:0;X2:9;Y2:1;Dir:down;Length:2;Word:1100;"
    InfoCells[6]  = "X1:9;Y1:0;X2:10;Y2:0;Dir:down;Length:3;Word:241918;"
    InfoCells[7]  = "X1:11;Y1:0;X2:11;Y2:1;Dir:down;Length:4;Word:13001814;"
    InfoCells[8]  = "X1:12;Y1:0;X2:12;Y2:1;Dir:down;Length:8;Word:0017181614131412;"
    InfoCells[9]  = "X1:0;Y1:1;X2:0;Y2:2;Dir:right;Length:4;Word:15000200;"
    InfoCells[10] = "X1:8;Y1:1;X2:9;Y2:1;Dir:right;Length:4;Word:11191300;"
    InfoCells[11] = "X1:4;Y1:2;X2:4;Y2:3;Dir:down;Length:8;Word:0700040214161008;"
    InfoCells[12] = "X1:6;Y1:2;X2:6;Y2:3;Dir:down;Length:5;Word:2100130600;"
    InfoCells[13] = "X1:8;Y1:2;X2:9;Y2:2;Dir:right;Length:4;Word:00180017;"
    InfoCells[14] = "X1:0;Y1:3;X2:0;Y2:4;Dir:down;Length:6;Word:171415113110;"
    InfoCells[15] = "X1:7;Y1:3;X2:8;Y2:3;Dir:down;Length:2;Word:2508;"
    InfoCells[16] = "X1:9;Y1:3;X2:9;Y2:4;Dir:down;Length:2;Word:0004;"
    InfoCells[17] = "X1:10;Y1:3;X2:11;Y2:3;Dir:right;Length:2;Word:1818;"
    InfoCells[18] = "X1:1;Y1:4;X2:2;Y2:4;Dir:right;Length:3;Word:001300;"
    InfoCells[19] = "X1:5;Y1:4;X2:6;Y2:4;Dir:right;Length:7;Word:00020800181416;"
    InfoCells[20] = "X1:1;Y1:5;X2:2;Y2:5;Dir:right;Length:5;Word:0708040013;"
    InfoCells[21] = "X1:7;Y1:5;X2:7;Y2:6;Dir:down;Length:8;Word:0016100013070017;"
    InfoCells[22] = "SubCells:2;X1:8;Y1:5;X2:9;Y2:5;Dir:right;Length:2;Word:0405;X2:8;Y2:6;Dir:down;Length:3;Word:100013;"
    InfoCells[23] = "X1:11;Y1:5;X2:10;Y2:4;Dir:down;Length:6;Word:180516050700;"
    InfoCells[24] = "X1:5;Y1:6;X2:6;Y2:6;Dir:right;Length:3;Word:060010;"
    InfoCells[25] = "X1:9;Y1:6;X2:10;Y2:6;Dir:right;Length:3;Word:160513;"
    InfoCells[26] = "X1:1;Y1:7;X2:0;Y2:6;Dir:right;Length:5;Word:1511080502;"
    InfoCells[27] = "X1:3;Y1:7;X2:4;Y2:7;Dir:right;Length:5;Word:1415001600;"
    InfoCells[28] = "X1:9;Y1:7;X2:9;Y2:8;Dir:down;Length:3;Word:311611;"
    InfoCells[29] = "X1:11;Y1:7;X2:11;Y2:8;Dir:down;Length:4;Word:05060810;"
    InfoCells[30] = "X1:1;Y1:8;X2:0;Y2:9;Dir:right;Length:8;Word:1000180010001300;"
    InfoCells[31] = "X1:2;Y1:8;X2:2;Y2:9;Dir:down;Length:3;Word:182910;"
    InfoCells[32] = "SubCells:2;X1:3;Y1:8;X2:4;Y2:8;Dir:right;Length:2;Word:1619;X2:3;Y2:9;Dir:down;Length:4;Word:00121417;"
    InfoCells[33] = "X1:6;Y1:8;X2:5;Y2:7;Dir:down;Length:5;Word:1519001614;"
    InfoCells[34] = "X1:8;Y1:9;X2:9;Y2:9;Dir:right;Length:3;Word:160006;"
    InfoCells[35] = "X1:12;Y1:9;X2:12;Y2:10;Dir:down;Length:5;Word:3116081114;"
    InfoCells[36] = "X1:0;Y1:10;X2:0;Y2:11;Dir:down;Length:4;Word:12001617;"
    InfoCells[37] = "X1:1;Y1:10;X2:2;Y2:10;Dir:right;Length:4;Word:29120816;"
    InfoCells[38] = "X1:6;Y1:10;X2:7;Y2:10;Dir:right;Length:3;Word:130811;"
    InfoCells[39] = "SubCells:2;X1:10;Y1:10;X2:11;Y2:10;Dir:right;Length:2;Word:0831;X2:10;Y2:11;Dir:down;Length:4;Word:00181417;"
    InfoCells[40] = "X1:4;Y1:11;X2:4;Y2:12;Dir:down;Length:3;Word:170010;"
    InfoCells[41] = "X1:6;Y1:11;X2:6;Y2:12;Dir:down;Length:3;Word:161916;"
    InfoCells[42] = "X1:8;Y1:11;X2:9;Y2:12;Dir:down;Length:3;Word:050400;"
    InfoCells[43] = "X1:9;Y1:11;X2:10;Y2:11;Dir:right;Length:3;Word:001016;"
    InfoCells[44] = "X1:1;Y1:12;X2:0;Y2:11;Dir:right;Length:4;Word:12001014;"
    InfoCells[45] = "SubCells:2;X1:2;Y1:12;X2:3;Y2:12;Dir:right;Length:2;Word:1717;X2:2;Y2:13;Dir:down;Length:2;Word:2000;"
    InfoCells[46] = "SubCells:2;X1:5;Y1:12;X2:6;Y2:12;Dir:right;Length:5;Word:1600130518;X2:5;Y2:13;Dir:down;Length:2;Word:1605;"
    InfoCells[47] = "X1:11;Y1:12;X2:11;Y2:13;Dir:down;Length:2;Word:1917;"
    InfoCells[48] = "X1:1;Y1:13;X2:0;Y2:14;Dir:right;Length:7;Word:17180011100516;"
    InfoCells[49] = "X1:3;Y1:13;X2:4;Y2:13;Dir:right;Length:4;Word:00161917;"
    InfoCells[50] = "X1:8;Y1:13;X2:9;Y2:13;Dir:right;Length:4;Word:04141911;"
    InfoCells[51] = "X1:7;Y1:14;X2:8;Y2:14;Dir:right;Length:5;Word:1100171714;"

    numArrows = 15;
    strArrows = new Array(15);
    strArrows[0]  = "Cells:3;0001;0010;0308;";
    strArrows[1]  = "Cells:1;0004;";
    strArrows[2]  = "Cells:1;0006;";
    strArrows[3]  = "Cells:21;0102;0103;0105;0107;0111;0112;0304;0306;0400;0409;0607;0608;0809;0811;0902;0903;1012;1204;1302;1305;1311;";
    strArrows[4]  = "Cells:1;0109;";
    strArrows[5]  = "Cells:1;0200;";
    strArrows[6]  = "Cells:14;0209;0311;0402;0406;0502;0606;0610;0704;0909;1002;1007;1304;1309;1408;";
    strArrows[7]  = "Cells:2;0410;0705;";
    strArrows[8]  = "Cells:4;0509;0804;1011;1203;";
    strArrows[9]  = "Cells:1;0600;";
    strArrows[10] = "Cells:2;0900;1400;";
    strArrows[11] = "Cells:1;1100;";
    strArrows[12] = "Cells:1;1110;";
    strArrows[13] = "Cells:1;1206;";
    strArrows[14] = "Cells:1;1209;";

    strLetter = new Array(33);
    strLetter[0]  = "az";
    strLetter[1]  = "buki";
    strLetter[2]  = "vedi";
    strLetter[3]  = "glagol";
    strLetter[4]  = "dobro";
    strLetter[5]  = "est";
    strLetter[6]  = "jivete";
    strLetter[7]  = "zemlia";
    strLetter[8]  = "ije";
    strLetter[9]  = "iy";
    strLetter[10] = "kako";
    strLetter[11] = "liudi";
    strLetter[12] = "myslete";
    strLetter[13] = "nash";
    strLetter[14] = "on";
    strLetter[15] = "pokoy";
    strLetter[16] = "rtsy";
    strLetter[17] = "slovo";
    strLetter[18] = "tverdo";
    strLetter[19] = "uk";
    strLetter[20] = "fert";
    strLetter[21] = "kh";
    strLetter[22] = "tsy";
    strLetter[23] = "cherv";
    strLetter[24] = "sha";
    strLetter[25] = "scha";
    strLetter[26] = "tz";
    strLetter[27] = "ery";
    strLetter[28] = "mz";
    strLetter[29] = "e";
    strLetter[30] = "yu";
    strLetter[31] = "ya";
    strLetter[32] = "empty";

    document.onkeydown = keyDown;
    window["Content"].document.onkeydown = keyDown;
    window["Controlls"].document.onkeydown = keyDown;
    if (NS4) {
      document.captureEvents (Event.KEYDOWN);
      window["Content"].document.captureEvents (Event.KEYDOWN);
      window["Controlls"].document.captureEvents (Event.KEYDOWN);
    }

    Ready = true;
    GetSize ();
    PositionClick ("0001");
  }

  function ReleaseBrowser() {
    if (NS4) {
      document.releaseEvents (Event.KEYDOWN);
      window["Content"].document.releaseEvents (Event.KEYDOWN);
      window["Controlls"].document.releaseEvents (Event.KEYDOWN);
    }
  }

  function GetSize () {
    var Pointer2;
    Pointer = Info.indexOf("XSize");
    Pointer += 6;
    Pointer2 = Info.indexOf(";", Pointer);
    Columns = parseInt (Info.substring (Pointer, Pointer2));

    Pointer = Info.indexOf("YSize");
    Pointer += 6;
    Pointer2 = Info.indexOf(";", Pointer);
    Rows = parseInt (Info.substring (Pointer, Pointer2));

    Pointer = 0;
  }

  function PositionClick (strID) {
    if (!Ready) { return; }
    SetBackground (0);
    numRow = eval (strID.substring (0,2));
    numColumn = eval (strID.substring (2,4));
    SetBackground (1);
  }

  function FindBackground () {
    if (!Ready) { return; }
    var strArrow = "arrow";
    var strID = GetID ();
    var i, j, numFields, Pointer2, strNewID;
    for (i = 0; i < numArrows; i++) {
      Pointer = strArrows[i].indexOf(":") + 1;
      Pointer2 = strArrows[i].indexOf(";", Pointer);
      numFields = parseInt (strArrows[i].substring (Pointer, Pointer2));
      for (j = 0; j < numFields; j++) {
        Pointer = Pointer2 + 1;
        Pointer2 = strArrows[i].indexOf(";", Pointer);
        strNewID = strArrows[i].substring (Pointer, Pointer2);
        if (strID == strNewID) {
          strArrow += i;
          i = numArrows;
          break;
        }
      }
    }
    return strArrow;
  }

  function FindLetter () {
    if (!Ready) { return; }
    var strActive = "";
    var strID = GetID ();
    var Pointer2, Pointer3;
    strActive = window["Content"].document.images["im" + GetID ()].src;
    Pointer3 = strActive.indexOf("_");
    if (Pointer3 == -1) {
      Pointer3 = strActive.lastIndexOf(".");
    } else {
      Pointer2 = Pointer3;
      Pointer3 = strActive.lastIndexOf("_");
      if (Pointer3 == Pointer2) {
        Pointer3 += 1;
      } else if (Pointer3 - Pointer2 == 1 || Pointer3 - Pointer2 == 2) {
        Pointer3 -= 1;
      }
    }
    Pointer2 = strActive.lastIndexOf("/") + 1;
    strActive = strActive.substring (Pointer2, Pointer3);
    return strActive;
  }

  function SetBackground (active) {
    if (!Ready) { return; }
    if (IE4) {
      switch (active) {
        case 0: window["Content"].document.all["cl" + GetID ()].style.background = "#ffffff url('images/" + FindBackground() + ".gif')";  break;
        case 1: window["Content"].document.all["cl" + GetID ()].style.background = "#c0ffc0 url('images/" + FindBackground() + ".gif')";  break;
      }
    } else if (NS4) {
      switch (active) {
        case 0: window["Content"].document.images["im" + GetID ()].src = "../rus/" + FindLetter() + ".gif";  break;
        case 1: window["Content"].document.images["im" + GetID ()].src = "../rus/" + FindLetter() + "__.gif";  break;
      }
    }
  }

  function LetterClick (num) {
    if (!Ready) { return; }
    var idCur = "im" + GetID ();
    if (IE4) {
      window["Content"].document.all[idCur].src = "../rus/" + strLetter[num] + ".gif";
    } else if (NS4) {
      window["Content"].document.images[idCur].src = "../rus/" + strLetter[num] + ".gif";
    }
    SetBackground (0);
    NextID ();
    if (Matrix[numRow].charAt(numColumn) == "0") {
      PreviousID ();
    }
    SetBackground (1);
  }

  function keyDown (e) {
    if (!Ready) { return; }
    var key = 0;
    var ctrlPressed = 0;
    if (IE4) {
      if (event) {
        key = event.keyCode
        ctrlPressed = event.ctrlKey;
      }  else if (window["Content"].event) {
        key = window["Content"].event.keyCode;
        ctrlPressed = window["Content"].event.ctrlKey;
      }
      else {
        key = window["Controlls"].event.keyCode;
        ctrlPressed = window["Controlls"].event.ctrlKey;
      }
    } else if (NS4) {
      key = ConvertKeyCode (e.which);
    }
    switch (key) {
      case 70:  LetterClick (0); break;
      case 188: LetterClick (1); break;
      case 68:  LetterClick (2); break;
      case 85:  LetterClick (3); break;
      case 76:  LetterClick (4); break;
      case 84:  LetterClick (5); break;
      case 186: LetterClick (6); break;
      case 80:  LetterClick (7); break;
      case 66:  LetterClick (8); break;
      case 81:  LetterClick (9); break;
      case 82:  LetterClick (10); break;
      case 75:  LetterClick (11); break;
      case 86:  LetterClick (12); break;
      case 89:  LetterClick (13); break;
      case 74:  LetterClick (14); break;
      case 71:  LetterClick (15); break;
      case 72:  LetterClick (16); break;
      case 67:  LetterClick (17); break;
      case 78:  LetterClick (18); break;
      case 69:  LetterClick (19); break;
      case 65:  LetterClick (20); break;
      case 219: LetterClick (21); break;
      case 87:  LetterClick (22); break;
      case 88:  LetterClick (23); break;
      case 73:  LetterClick (24); break;
      case 79:  LetterClick (25); break;
      case 221: LetterClick (26); break;
      case 83:  LetterClick (27); break;
      case 77:  LetterClick (28); break;
      case 222: LetterClick (29); break;
      case 190: LetterClick (30); break;
      case 90:  LetterClick (31); break;
      case 32:  LetterClick (32); break;
      case 37:
        if (!ctrlPressed) {
          if (numColumn > 0) {
            SetBackground (0);
            numColumn--;
            if (Matrix[numRow].charAt(numColumn) == "0") {
              numColumn++;
            }
            SetBackground (1);
          }
        } else {
          DirectionClick (2);
        }
        break;
      case 38:
        if (!ctrlPressed) {
          if (numRow > 0) {
            SetBackground (0);
            numRow--;
            if (Matrix[numRow].charAt(numColumn) == "0") {
              numRow++;
            }
            SetBackground (1);
          }
        } else {
          DirectionClick (3);
        }
        break;
      case 39:
        if (!ctrlPressed) {
          if (numColumn < Columns - 1) {
            SetBackground (0);
            numColumn++;
            if (Matrix[numRow].charAt(numColumn) == "0") {
              numColumn--;
            }
            SetBackground (1);
          }
        } else {
          DirectionClick (0);
        }
        break;
      case 40:
        if (!ctrlPressed) {
          if (numRow < Rows - 1) {
            SetBackground (0);
            numRow++;
            if (Matrix[numRow].charAt(numColumn) == "0") {
              numRow--;
            }
            SetBackground (1);
          }
        } else {
          DirectionClick (1);
        }
        break;
    }
    if (key == 37 || key == 38 || key == 39 || key == 40) {
      return false;
    } else {
      return true;
    }
  }

  function ConvertKeyCode (Code) {
    var newCode = 0;
    switch (Code) {
      case 70:
      case 102: newCode = 70; break;
      case 44:
      case 60:  newCode = 188; break;
      case 68:
      case 100: newCode = 68; break;
      case 85:
      case 117: newCode = 85; break;
      case 76:
      case 108: newCode = 76; break;
      case 84:
      case 116: newCode = 84; break;
      case 58:
      case 59:  newCode = 186; break;
      case 80:
      case 112:  newCode = 80; break;
      case 66:
      case 98:   newCode = 66; break;
      case 81:
      case 113:  newCode = 81; break;
      case 82:
      case 114:  newCode = 82; break;
      case 75:
      case 107:  newCode = 75; break;
      case 86:
      case 118:  newCode = 86; break;
      case 89:
      case 121:  newCode = 89; break;
      case 74:
      case 106:  newCode = 74; break;
      case 71:
      case 103:  newCode = 71; break;
      case 72:
      case 104:  newCode = 72; break;
      case 67:
      case 99:   newCode = 67; break;
      case 78:
      case 110:  newCode = 78; break;
      case 69:
      case 101:  newCode = 69; break;
      case 65:
      case 97:   newCode = 65; break;
      case 91:
      case 123:  newCode = 219; break;
      case 87:
      case 119:  newCode = 87; break;
      case 88:
      case 120:  newCode = 88; break;
      case 73:
      case 105:  newCode = 73; break;
      case 79:
      case 111:  newCode = 79; break;
      case 93:
      case 125:  newCode = 221; break;
      case 83:
      case 115:  newCode = 83; break;
      case 77:
      case 109:  newCode = 77; break;
      case 34:
      case 39:   newCode = 222; break;
      case 46:
      case 62:   newCode = 190; break;
      case 90:
      case 122:  newCode = 90; break;
      case 32:   newCode = 32; break;
    }
    return newCode;
  }

  function GetID () {
    if (!Ready) { return; }
    var idCur = "";
    if (numRow < 10) {
      idCur += "0";
    }
    idCur += numRow;
    if (numColumn < 10) {
      idCur += "0";
    }
    idCur += numColumn;
    return idCur;
  }

  function NextID () {
    if (!Ready) { return; }
    switch (Direction) {
      case 0:
        if (numColumn < (Columns - 1))
          numColumn++;
        break;
      case 1:
        if (numRow < (Rows - 1))
          numRow++;
        break;
      case 2:
        if (numColumn > 0)
          numColumn--;
        break;
      case 3:
        if (numRow > 0)
          numRow--;
        break;
    }
  }

  function PreviousID () {
    if (!Ready) { return; }
    switch (Direction) {
      case 0:
        if (numColumn > 0)
          numColumn--;
        break;
      case 1:
        if (numRow > 0)
          numRow--;
        break;
      case 2:
        if (numColumn < (Columns - 1))
          numColumn++;
        break;
      case 3:
        if (numRow < (Rows - 1))
          numRow++;
        break;
    }
  }

  function DirectionClick (dir) {
    if (!Ready) { return; }
    Direction = dir;
    switch (dir) {
      case 0:
        if (IE4) {
          window["Controlls"].document.all["im_key"].src = "../rus/ruskeys_right.png";
        } else if (NS4) {
          window["Controlls"].document.images["im_key"].src = "../rus/ruskeys_right.png";
        }
        break;
      case 1:
        if (IE4) {
          window["Controlls"].document.all["im_key"].src = "../rus/ruskeys_down.png";
        } else if (NS4) {
          window["Controlls"].document.images["im_key"].src = "../rus/ruskeys_down.png";
        }
        break;
      case 2:
        if (IE4) {
          window["Controlls"].document.all["im_key"].src = "../rus/ruskeys_left.png";
        } else if (NS4) {
          window["Controlls"].document.images["im_key"].src = "../rus/ruskeys_left.png";
        }
        break;
      case 3:
        if (IE4) {
          window["Controlls"].document.all["im_key"].src = "../rus/ruskeys_up.png";
        } else if (NS4) {
          window["Controlls"].document.images["im_key"].src = "../rus/ruskeys_up.png";
        }
        break;
    }
  }

  function Show (strImage, strURL) {
    if (!Ready) { return; }
    var str = (strURL == "") ? ("../arm/qm.gif") : ("images/" + strURL + ".png");
    if (IE4) {
      window["Controlls"].document.all[strImage].src = str;
    } else if (NS4) {
      window["Controlls"].document.images[strImage].src = str;
    }
  }

  function CheckWords () {
    if (!Ready) { return; }
    SetBackground (0);

    var Pointer2, Pointer3, numCells, numSubCells, i, j, X, Y, k, numLetters, str, DirectionTmp, curLetter, idCur, isDone=true;
    Pointer = 0;
    Pointer = Info.indexOf("ActiveCells");
    Pointer += 12;
    Pointer2 = Info.indexOf(";", Pointer);
    numCells = parseInt (Info.substring (Pointer, Pointer2));

    for (i = 0; i < numCells; i++) {
      Pointer = 0;
      Pointer = InfoCells[i].indexOf("SubCells");
      if (Pointer == -1) {
        Pointer = 0;
        numSubCells = 1;
      } else {
        Pointer += 9;
        Pointer2 = InfoCells[i].indexOf(";", Pointer);
        numSubCells = parseInt (InfoCells[i].substring (Pointer, Pointer2));
      }

      for (j = 0; j < numSubCells; j++) {
        Pointer2 = Pointer;
        Pointer = InfoCells[i].indexOf("X2", Pointer2);
        Pointer += 3;
        Pointer2 = InfoCells[i].indexOf(";", Pointer);
        X = parseInt (InfoCells[i].substring (Pointer, Pointer2));
        Pointer = InfoCells[i].indexOf("Y2", Pointer2);
        Pointer += 3;
        Pointer2 = InfoCells[i].indexOf(";", Pointer);
        Y = parseInt (InfoCells[i].substring (Pointer, Pointer2));

        DirectionTmp = Direction;

        Pointer = InfoCells[i].indexOf("Dir", Pointer2);
        Pointer += 4;
        Pointer2 = InfoCells[i].indexOf(";", Pointer);
        str = InfoCells[i].substring (Pointer, Pointer2);
        switch (str) {
          case "right": Direction = 0; break;
          case "down": Direction = 1; break;
          case "left": Direction = 2; break;
          case "up": Direction = 3; break;
        }
        Pointer = InfoCells[i].indexOf("Length", Pointer2);
        Pointer += 7;
        Pointer2 = InfoCells[i].indexOf(";", Pointer);
        numLetters = parseInt (InfoCells[i].substring (Pointer, Pointer2));

        Pointer = InfoCells[i].indexOf("Word", Pointer2);
        Pointer += 5;

        var LetterName = new String;
        var numColumnTmp = numColumn;
        var numRowTmp = numRow;
        numColumn = X;
        numRow = Y;

        for (k = 0; k < numLetters; k++) {
          if (InfoCells[i].charAt(Pointer) != "0") {
            curLetter = parseInt (InfoCells[i].substring (Pointer, Pointer + 2));
          } else {
            curLetter = parseInt (InfoCells[i].substring (Pointer + 1, Pointer + 2));
          }
          idCur = "im" + GetID ();
          if (IE4) {
            LetterName = window["Content"].document.all[idCur].src;
          } else if (NS4) {
            LetterName = window["Content"].document.images[idCur].src;
          }
          Pointer3 = LetterName.indexOf("_");
          if (Pointer3 == -1) {
            Pointer3 = LetterName.lastIndexOf(".");
          }
          Pointer2 = LetterName.lastIndexOf("/") + 1;
          LetterName = LetterName.substring (Pointer2, Pointer3);
          if (LetterName != "empty" && LetterName != strLetter[curLetter] && LetterName.lastIndexOf("_") == -1) {
            isDone = false;
            if (IE4) {
              window["Content"].document.all[idCur].src = "../rus/" + LetterName + "_.gif";
            } else if (NS4) {
              window["Content"].document.images[idCur].src = "../rus/" + LetterName + "_.gif"
            }
          } else if (LetterName == "empty") {
            isDone = false;
          }
          Pointer += 2;
          NextID();
        }

        numColumn = numColumnTmp;
        numRow = numRowTmp;

        Direction = DirectionTmp;
      }
    }
    if (isDone) {
      alert ("Congratulations,\n You have done it!");
    } else {
      alert ("Sorry, there are errors,\nand/or some fields are not filled.");
    }

    SetBackground (1);
  }

  function FillWords () {
    if (!Ready) { return; }
    if (numHelps == 3) {
      alert ("Sorry, you have used all your three attempts.");
      return;
    }

    SetBackground (0);

    var Pointer2, numCells, numSubCells, i, j, k, X, Y, numLetters, str, Dir, curLetter;
    var numColumnTmp, numRowTmp, DirectionTmp, isDone = false;
    Pointer = 0;
    Pointer = Info.indexOf("ActiveCells");
    Pointer += 12;
    Pointer2 = Info.indexOf(";", Pointer);
    numCells = parseInt (Info.substring (Pointer, Pointer2));

    for (i = 0; i < numCells && !isDone; i++) {
      Pointer = 0;
      Pointer = InfoCells[i].indexOf("SubCells");
      if (Pointer == -1) {
        Pointer = 0;
        numSubCells = 1;
      } else {
        Pointer += 9;
        Pointer2 = InfoCells[i].indexOf(";", Pointer);
        numSubCells = parseInt (InfoCells[i].substring (Pointer, Pointer2));
      }

      for (j = 0; j < numSubCells && !isDone; j++) {
        Pointer2 = Pointer;
        Pointer = InfoCells[i].indexOf("X2", Pointer2);
        Pointer += 3;
        Pointer2 = InfoCells[i].indexOf(";", Pointer);
        X = parseInt (InfoCells[i].substring (Pointer, Pointer2));
        Pointer = InfoCells[i].indexOf("Y2", Pointer2);
        Pointer += 3;
        Pointer2 = InfoCells[i].indexOf(";", Pointer);
        Y = parseInt (InfoCells[i].substring (Pointer, Pointer2));

        DirectionTmp = Direction;

        Pointer = InfoCells[i].indexOf("Dir", Pointer2);
        Pointer += 4;
        Pointer2 = InfoCells[i].indexOf(";", Pointer);
        str = InfoCells[i].substring (Pointer, Pointer2);
        switch (str) {
          case "right": Dir = 0; break;
          case "down":  Dir = 1; break;
          case "left":  Dir = 2; break;
          case "up":   Dir = 3; break;
        }
        Pointer = InfoCells[i].indexOf("Length", Pointer2);
        Pointer += 7;
        Pointer2 = InfoCells[i].indexOf(";", Pointer);
        numLetters = parseInt (InfoCells[i].substring (Pointer, Pointer2));

        Pointer = InfoCells[i].indexOf("Word", Pointer2);
        Pointer += 5;

        if (X == numColumn && Y == numRow && Dir == Direction) {
          if (!confirm("Are you sure you want the scanword\nto be filled automatically?")) {
            return;
          }
          numColumnTmp = numColumn;
          numRowTmp = numRow;
          DirectionTmp = Direction;
          numColumn = X;
          numRow = Y;
          for (k = 0; k < numLetters; k++) {
            if (InfoCells[i].charAt(Pointer) != "0") {
              curLetter = parseInt (InfoCells[i].substring (Pointer, Pointer + 2));
            } else {
              curLetter = parseInt (InfoCells[i].substring (Pointer + 1, Pointer + 2));
            }
            idCur = "im" + GetID ();
            if (IE4) {
              window["Content"].document.all[idCur].src = "../rus/" + strLetter[curLetter] + ".gif";
            } else if (NS4) {
              window["Content"].document.images[idCur].src = "../rus/" + strLetter[curLetter] + ".gif";
            }
            Pointer += 2;
            NextID();
          }
          numColumn = numColumnTmp;
          numRow = numRowTmp;
          Direction = DirectionTmp;
          isDone = true;
          numHelps++;
        }
      }
    }
    if (!isDone) {
      alert ("Please, select proper cell and direction.");
    }

    SetBackground (1);
  }
