// Бука (С)  А.А.Дуванов АЗЫ ИНФОРМАТИКИ RU 2001

// Глобальные переменные программы
// -------------------------------

var maxTextRU = 3;       // Число вариантов текста
var indTextRU = 0;       // Индекс варианта, который на экране
var numLetterRU=-1;      // Число вхождений текущей буквы в текущий текст
var isMarkLetterRU=false; // Посветка букв включена
var badDataRU  = "Не понимаю!";
var cantDoRU   = "Не могу!";
var okRU       = "Правильно!";
var wrongRU    = "Ваш ответ&nbsp;&#151; неверный!";

var textRU = new Array(

"&#151; Ишь ты!&nbsp;&#151; ответил Незнайка.&nbsp;&#151; А я и не знал, "+
"что солнце такое большое. <NOBR>Пойду-ка</NOBR> расскажу нашим&nbsp;&#151; может "+
"быть, они еще не слыхали про это.",

"&#151; Братцы, вы знаете, какое солнце? Оно больше всей нашей Земли. "+
"Вот оно какое! И вот, братцы, от солнца оторвался кусок и летит прямо к нам. "+
"Скоро он упадет и всех нас задавит. Ужас что будет!",

"Все выбежали во двор и стали смотреть на солнце. "+
"Смотрели, смотрели, пока из глаз не потекли слезы. Всем со слепу "+
"стало казаться, будто солнце на самом деле щербатое. А Незнайка кричал:<BR> "+
"&#151; Спасайся кто может! Беда!<BR>Все стали хватать свои вещи.<BR>-------------<BR><SMALL>(Николай Носов)</SMALL>");

// Инициализация исполнителя
// -------------------------
function iniExecuterRU()
{
 iniFormRU();
 drawRU(0);
}
// Инициализация форм
// ------------------
function iniFormRU()
{
  document.forma.menu.options[document.forma.menu.selectedIndex].selected = false;
  document.forma.menu.options[0].selected = true;
  iniUserRU();
  iniExecRU();
}
// Инициализация ответа исполнителя
// --------------------------------
function iniExecRU()
{
  document.all["mess"].innerHTML = "&nbsp;"
}

// Инициализация ответа пользователя
// --------------------------------
function iniUserRU()
{
  document.forma.answer.value="";
}
// Вывод текста
// ------------
function drawRU(n)
{
  document.all["sreda"].innerHTML =
  "<TABLE border=0 cellspacing=0 cellpadding=10 width=100%>"+
  "  <TR valign=top align=left>"+
  "    <TD><SPAN id=text>"+
        textRU[n]+
  "</SPAN></TD>"+
  "  </TR>"+
  "</TABLE>";
  document.all["len"].innerText = document.all["text"].innerText.length;
}

// Другой текст
// ------------
function nextTextRU()
{
  iniUserRU();
  iniExecRU();
  if(++indTextRU >= maxTextRU) indTextRU = 0;
  drawRU(indTextRU);
  showLetterRU(document.all["bukva"].options[document.all["bukva"].selectedIndex].text)
}

// Показать букву в тексте
// ------------
function showLetterRU(letter)
{
 // Сбросить табло исполнителя и пользователя
 iniExecRU();
 iniUserRU()
 numLetterRU=-1;
 if (letter != " ")
 {
   numLetterRU=0;
   // Скопировать текущий текст
   var str = textRU[indTextRU];
   // Искать в нем нужные буквы и маркировать
   var newstr = "";
   var ret    = 0;
   var ret1, ret2;
   var oldret;

   while (1)
   {
     oldret = ret;
     ret1 = str.indexOf(letter.toLowerCase(), ret);
     ret2 = str.indexOf(letter.toUpperCase(), ret);
     if(ret1 == -1 && ret2 == -1 ) break;
     if (ret1 == -1)      ret = ret2;
     else if (ret2 == -1) ret = ret1;
     else                 ret = ret1 < ret2 ? ret1:ret2;
     newstr += str.substring(oldret, ret);
     newstr += "<SPAN class=mark>";
     newstr += str.charAt(ret);
     newstr += "</SPAN>";
     ret++;
     numLetterRU++;
   }

   newstr += str.substring(oldret, str.length);

   // Вывести маркированный текст
    if(isMarkLetterRU) document.all["sreda"].innerHTML = newstr;
 }
}

// Запуск исполнителя
// ------------------
function goRU()
{
  iniExecRU();
  var str = document.forma.answer.value;
  if (!isNumberRU(str)) document.all["mess"].innerHTML=badDataRU;
  else
  {
    if (document.forma.menu.options[0].selected)
      document.all["mess"].innerHTML=cantDoRU;
    else
    {
      if (numLetterRU == parseInt(str)) document.all["mess"].innerHTML=okRU;
      else document.all["mess"].innerHTML=wrongRU;
    }
  }
}
// Является ли строка целым положительным числом
// ------------------
function isNumberRU (str)
{
  var i;

  // Пропуск первых пробелов
  for(i=0; i < str.length; i++) if (str.charAt(i) != " ") break;
  if (i >=str.length) return false;

  // Проверка цифр
  for(;i < str.length; i++)
   if (str.charAt(i) == " ") break;
   else if ("0123456789".indexOf(str.charAt(i)) == -1) return false;

 // Пропуск последних пробелов
  for(;i < str.length; i++)
   if (str.charAt(i) != " ") return false;

  return true;
}

// Обработчики кнопок программной панели
// -------------------------------------

// Настройка программы
// -------------------
function optionRU()
{

  var ret = window.showModalDialog("option.htm", isMarkLetterRU,
       "dialogWidth:300px;dialogHeight:300px;cеnter:yes;help:no;status:no");

  if (ret != null) isMarkLetterRU = ret;
  drawRU(indTextRU);
  showLetterRU(document.all["bukva"].options[document.all["bukva"].selectedIndex].text)

}

// Постановка задачи
// -----------------
function aboutRU()
{
  window.showModalDialog("about.htm", "",
   "dialogWidth:400px;dialogHeight:400px;cеnter:yes;help:no;status:no");
}
// Пользовательские инструкции
// ---------------------------
function helpRU()
{
  window.showModalDialog("help.htm", "",
   "dialogWidth:400px;dialogHeight:340px;cеnter:yes;help:no;status:no");

}
