// Электронная таблица

function eTableRU(name)
{
  // имя экземпляра
  this.name      = name;
  // заголовки столбцов
  this.title  = new Array("", "Цена", "Штук", "Стоимость");
  // товары
  this.wares = new Array(
                         new Array("Монитор", 200, 1),
                         new Array("Принтер", 300, 1),
                         new Array("Сканер", 80, 1),
                         new Array("Дискеты", 3, 10)
                       );
  // Курс доллара
  this.kurs    = 30;

  // Дублирование входных данных
  this.dwares = new Array();
  for (var i=0; i<this.wares.length; i++)
    this.dwares[i] = this.wares[i][2];

  // Курс доллара
  this.dkurs   = this.kurs;

  // название поля Итого
  this.iname = "Итого";
  // имя поля с курсом доллара
  this.cname=this.name+"d";
  // имя радиокнопок
  this.rname=this.name+"r";
  // Валюта есть доллар
  this.carrencyIsdollar = true;

  // Функции
  this.ShowTableRU    = _ShowTableRU;          // Показать исполнителя
  this.iniTableRU     = _iniTableRU;           // Инициализация
  this.changeCarrencyRU   = _changeCarrencyRU; // Изменение валюты
  this.calcRU         = _calcRU;               // Пересчет таблицы
  this.changeNumberRU = _changeNumberRU;       // Изменение штук
  this.changeKursRU   = _changeKursRU;         // Изменение валюты

  this.ShowTableRU();
}

// Инициализация
// -------------
function _iniTableRU()
{
  this.carrencyIsdollar = true;
  this.kurs = this.dkurs;
  for (var i=0; i<this.wares.length; i++)
    this.wares[i][2] = this.dwares[i];
  this.calcRU();
}

// Изменение Валюты
// --------------------
function _changeCarrencyRU()
{
  this.carrencyIsdollar = !this.carrencyIsdollar;
  this.calcRU();
}

// Изменение курса
// --------------------
function _changeKursRU(val)
{
  if (isNaN(val))
  {
   alert("Не понимаю");
   eval("document.all['"+this.cname+"'].value=this.kurs");
  }
  else
  {
    this.kurs = val;
    this.calcRU();
  }

}

// Изменение штук в i-ой строке
// ----------------------------
function _changeNumberRU(i, val)
{
  if (isNaN(val))
  {
   alert("Не понимаю");
   eval("document.all['"+this.name+i+2+"'].value=this.wares["+i+"][2]");
  }
  else
  {
    this.wares[i][2] = val;
    this.calcRU();
  }
}

//Пересчет таблицы
// ---------------
function _calcRU()
{
  var s,i;
  var sum = 0;

  // Цена и стоимость
  for (i=0; i < this.wares.length; i++)
  {
    s = this.wares[i][1]*this.wares[i][2];
    s = this.wares[i][1];
    if (!this.carrencyIsdollar) s *= this.kurs;
    eval("document.all['"+this.name+i+1+"'].innerText='"+s+"'");
    s = s*this.wares[i][2];
    sum += s;
    eval("document.all['"+this.name+i+"3"+"'].innerText='"+s+"'");
  }
  eval("document.all['"+this.name+i+"3"+"'].innerText='"+sum+"'");
}


// Показать исполнителя
// --------------------
function _ShowTableRU()
{
  var s,i,j;
  var sum = 0;
  var csum = 0;
  var str = '<FORM name=forma onreset="'+this.name+'.iniTableRU()">';
  str += '<DIV style="background-color:#EEE5DB;width:480;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 colspan=3><IMG src=./pic/table.gif width=300 height=25 border=0 hspace=0 vspace=0 alt=""></TD>';
  str +=  '<TD align=right><INPUT type=reset value=Сброс></TD>';
  str += '</TR>';

  // заголовки столбцов
  str += '<TR valign=top>';
  str += '<TD><IMG src=./pic/telega.gif width=50 height=30 border=0 hspace=0 vspace=0 alt=""></TD>';

  for (i=1; i < this.title.length; i++)
    str += '<TD class=tablm>'+ this.title[i] + '</TD>';
  str += '</TR>';

  // строки таблицы с товаром
  for (i=0; i < this.wares.length; i++)
  {
    str += '<TR valign=top><TD class=tablm>'+ this.wares[i][0] + '</TD>';
    s = this.wares[i][1]*this.wares[i][2];
    csum+=s;
    str += '<TD class=tabl id='+this.name+i+1+'>'+this.wares[i][1]+'</TD>';
    str += '<TD class=tabl><INPUT  maxlength=2 onkeypress="if(event.keyCode==13) '+this.name+'.changeNumberRU('+i+',this.value)" onchange="'
            +this.name+'.changeNumberRU('+i+',this.value)" type=text name='+this.name+i+2+' size=5 value='+this.wares[i][2]+'></TD>';
    str += '<TD class=tabl id='+this.name+i+3+'>'+s+'</TD></TR>';
  }

  str += '<TR valign=top><TD class=tablm>'+ this.iname + '</TD>';
  for (j=1; j < this.title.length; j++)
   str += '<TD class=tabl id='+this.name+i+j+'>'+(j==3? csum: "&nbsp;")+'</TD>';
  str += '</TR>';
  str += '<TR valign=top>';
  str +=  '<TD align=right>Курс: $1=</TD>';
  str +=  '<TD align=left><INPUT maxlength=4 onkeypress="if(event.keyCode==13) '+this.name+'.changeKursRU(this.value)" onchange="'+this.name+'.changeKursRU(this.value)" type=text name='+this.cname+' size=5 value='+this.kurs+'>руб</TD>';
  str +=  '<TD align=right>Валюта:</TD>';
  str +=  '<TD align=left>';
  str +=  '<INPUT onclick="'+this.name+'.changeCarrencyRU()" type=radio name='+this.rname+(this.carrencyIsdollar? " checked": " ")+
          '> доллары<BR><INPUT onclick="'+this.name+'.changeCarrencyRU()" type=radio name='+this.rname+(!this.carrencyIsdollar? " checked": " ")+'> рубли';
  str += '</TR>';

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

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

