// Исполнитель Обработчик
// ----------------------

// Конструктор Обработчика
// -----------------------
function workerRU(name,fun)
{
  this.fun       = fun;         // ссылка на функцию обработки
  this.name      = name;        // имя экземпляра
  this.names     = name+"s";    // имя картинки
  this.nameform  = name+"f";    // имя формы
  this.namein    = "win"         // имя поля ввода
  this.nameout   = "wout"        // имя поля вывода
  this.namew     = name+"w";    // имя картинки с изображением Обработчика
  this.namep     = name+"p";    // имя протокола
  this.namef     = "./pic/worker.gif" // файл с картинкой Обработчика
  this.history   = new Array(); // протокол
  this.lhistory  = 0;           // длина протокола

  // Функции
  this.showWorkerRU  = _showWorkerRU;  // Показать исполнителя
  this.showPWorkerRU = _showPWorkerRU; // Вывод протокола
  this.helpWorkerRU  = _helpWorkerRU;  // Справка исполнителя
  this.clearWorkerRU = _clearWorkerRU; // Сброс исполнителя
  this.enterWorkerRU = _enterWorkerRU; // Ввод пользователя

  this.showWorkerRU();
}

// Справка исполнителя
// -------------------
function _helpWorkerRU()
{
  window.showModalDialog("workh.htm", "",
   "dialogWidth:400px;dialogHeight:400px;cеnter:yes;help:no;status:no");
}

// Сброс исполнителя
// -----------------
function _clearWorkerRU()
{
  eval("document."+this.nameform+"."+this.namein+".value=''");
  eval("document."+this.nameform+"."+this.nameout+".value=''");
  this.lhistory  = 0;
  this.showPWorkerRU();
}

// Вывод протокола
function _showPWorkerRU()
{
  if(!this.lhistory) eval("document.all['"+this.namep+"'].innerHTML='&nbsp;'");
  else
  {
    var str = "<TABLE style='font-size:12pt' border=0 cellspacing=0 cellpadding=0>"
//     for(var i=0; i<this.lhistory; i++)
//     {
//       str += "<TR><TD align=right>";
//       str += this.history[i][0];
//       str += "</TD><TD><IMG src=./pic/arr.gif width=17 height=10 alt=''></TD><TD>";
//       str += this.history[i][1];
//       str += "</TD></TR>";
//     }
    for(var i=this.lhistory-1; i >=0; i--)
    {
      str += "<TR><TD align=right>";
      str += this.history[i][0];
      str += "</TD><TD><IMG src=./pic/arr.gif width=17 height=10 alt=''></TD><TD>";
      str += this.history[i][1];
      str += "</TD></TR>";
    }
    str += "</TABLE>";
    eval("document.all['"+this.namep+"'].innerHTML=str");
  }
}

// Ввод пользователя
// -----------------
function _enterWorkerRU()
{
   var strin = eval("document."+this.nameform+"."+this.namein+".value");
   if (strin == "") return;

   var strout = this.fun(strin);

   str = eval("document."+this.nameform+"."+this.nameout+".value=strout");

   this.history[this.lhistory] = new Array(strin,strout);
   this.lhistory++;
   eval("document.images['"+this.names+"'].src='./pic/worker1.gif'");
   this.showPWorkerRU();
}

// Показать исполнителя
// --------------------
function _showWorkerRU()
{

  var str = "<FORM name="+this.nameform+">";
  str += '<DIV style="background-color:#EEE5DB;width:480px;border-style:solid;border-width:2px;border-left-color:silver;border-top-color:silver;border-right-color:gray;border-bottom-color:gray;padding:10px;">';
  str += '<TABLE border=0 cellspacing=0 cellpadding=5 width=100%>';

  str += '<TR valign=top>';
  str +=  '<TD><IMG src=./pic/work.gif width=399 height=60 border=0 alt=""></TD>';
  str +=  '<TD align=right valign=top>';
  str +=    '<NOBR>';
  str +=      '<IMG src=./pic/key3.gif width=30 height=30 border=0 hspace=0 vspace=0 alt="Постановка задачи" ';
  str +=           'onmouseover="this.src=\'./pic/key3_.gif\'" onmouseout="this.src=\'./pic/key3.gif\'" ';
  str +=           'onclick="_helpWorkerRU()">';
  str +=      '<IMG src=./pic/key8.gif width=30 height=30 border=0 hspace=0 vspace=0 alt="Сброс" ';
  str +=           'onmouseover="this.src=\'./pic/key8_.gif\'" onmouseout="this.src=\'./pic/key8.gif\'" ';
  str +=           'onclick="'+this.name+'.clearWorkerRU()">';
  str +=    '</NOBR></TD>';
  str += '</TR>';

  str += '<TR valign=top><TD colspan=2><NOBR>';
  str +=   '<INPUT maxlength=20 type=text size=16 value="" name='+this.namein;
  str +=   '   onkeypress="if(event.keyCode==13)'+this.name+'.enterWorkerRU()"> ';
  str +=   '<IMG src=./pic/key5.gif width=30 height=30 border=0 alt=Ввод onmouseover="this.src=\'./pic/key5_.gif\'" onmouseout="this.src=\'./pic/key5.gif\'" onclick="'+this.name+'.enterWorkerRU()">';
  str +=   ' <INPUT type=text size=1 style="visibility:hidden">';
  str +=   '<IMG id='+this.names+' src=./pic/worker.gif width=100 height=60 hspace=0 border=0 alt="">';
  str +=   '<INPUT type=text size=1 style="visibility:hidden">';
  str +=   '<INPUT type=text readonly size=16 value="" name='+this.nameout+'></NOBR></TD>';
  str += '</TR>';
  str +=  '<TR valign=top><TD colspan=2><DIV align=center ';
  str +=    'id='+this.namep;
  str +=    ' style= "overflow:scroll;background-color:#EEE5DB;width:470px;height:90px;border-style:solid;border-width:2px;border-left-color: silver;border-top-color:silver; border-right-color:gray;border-bottom-color:gray;">&nbsp;</DIV></TD>';
  str += '</TR>';

  str += '</TABLE></DIV></FORM>';

  //alert(str);
  document.write(str);
}
