/*  \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 outerHtml \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430.  attribs - \u0430\u0441\u0441\u043E\u0446\u0438\u0430\u0442\u0438\u0432\u043D\u044B\u0439 \u043C\u0430\u0441\u0441\u0438\u0432.  iHtml - \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435, \u043F\u0440\u0438 false \u0441\u043E\u0437\u0434\u0430\u0435\u0442\u0441\u044F \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u0439 \u0442\u044D\u0433.*/ function genElem (tagName, attribs, iHtml) {  var res = '<' + tagName;  if (!attribs) attribs = {};  for (var attribName in attribs) {    var attribValue = attribs[attribName];    if (attribValue) {      if (attribValue.replace) attribValue = attribValue.replace(/"/g, '&quot;');      if (typeof('attribValue') == 'boolean') attribValue = attribName;       res = res + ' ' + attribName + '="' + attribValue + '"';    }  }  if (iHtml) {    if (typeof(iHtml) == 'boolean' && !iHtml) res += '/ >';     else res += '>' + iHtml + '</' + tagName + '>';   } else res += '>' + '</' + tagName + '>';  var tn = {'table': ' ', 'td': '   ', 'tr': '  ', 'div': ' ', 'input': ' '};  if (tn[tagName]) res = '\n' + tn[tagName] + res;  return (res);}/*  \u0437\u0430\u043C\u0435\u043D\u044F\u0435\u0442 \u043C\u0435\u0442\u043A\u0443 \u0432\u0438\u0434\u0430 <!--{labelName}--> \u0432 prevCode \u043D\u0430 newCode \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442  \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442.  \u0420\u0435\u0436\u0438\u043C\u044B: mode = 0/null : \u0437\u0430\u043C\u0435\u043D\u0430,          mode = 1 : \u0432\u0441\u0442\u0430\u0432\u043A\u0430 \u043F\u043E\u0437\u0430\u0434\u0438 \u043C\u0435\u0442\u043A\u0438,          mode = 2 : \u0432\u0441\u0442\u0430\u0432\u043A\u0430 \u043F\u0435\u0440\u0435\u0434 \u043C\u0435\u0442\u043A\u043E\u0439.  \u0415\u0441\u043B\u0438 prevCode = null, \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0430\u043A\u043E\u0439 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442, \u0435\u0441\u043B\u0438 \u0431\u044B   prevCode \u0441\u043E\u0441\u0442\u043E\u044F\u043B \u0442\u043E\u043B\u044C\u043A\u043E \u0438\u0437 \u043C\u0435\u0442\u043A\u0438.*/function putCode (prevCode, labelName, newCode, mode) {  labelCode = "<!--{" + labelName + "}-->"  switch (mode) {    case 1: newCode = labelCode + newCode;    case 2: newCode = newCode + labelCode;   }   if (!prevCode) return newCode;  return (prevCode.replace(new RegExp("\<\\!--\\{" + labelName + "\\}--\\>"), newCode)); }function clearLabels (code) {   return code.replace (/\<!--\{[^}]\}--\>/g, "");}function addStyle (specifier, rule, canHtml) {  if (document.styleSheets && document.styleSheets.length > 0) {   if (document.all)      document.styleSheets[0].addRule (specifier, rule, 0);      else {        //alert (specifier + ' {' + rule + '}' );        document.styleSheets[0].insertRule (specifier + ' {' + rule + '}', 0);      }  } else {    if (canHtml) document.write ('<style type="text/css">' + specifier + ' {' + rule + '}' + '</style>');  }}function aCat () {  var res = {};  for (var i = 0; i < aCat.arguments.length; i++) if (aCat.arguments[i]) {    for (var j in aCat.arguments[i]) res[j] = aCat.arguments[i][j];    }  return (res);}function canBuy (iKey, currency, eForm, eDisp) {            _price = 'error';        if (pte = eForm[iKey + '_term']) {                for (i = 0; i < pte.length; i++)             if (pte[i].checked) if ((_val = pte[i].value) == 0) return (true);                if (_val && (cd = pdata[iKey]['p'][_val]) && (pv = cd[currency]))                  _price = pv;             } else             /* "\u0441\u0440\u043E\u043A \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u043C, \u0438 \u0442\u0430\u043A\u043E\u0439 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438 \u043D\u0435\u0442":                 \u0438\u0449\u0435\u043C \u0441\u043F\u0435\u0446. \u0437\u0430\u043F\u0438\u0441\u044C \u0432 \u043C\u0430\u0441\u0441\u0438\u0432\u0435 \u0446\u0435\u043D\u043E\u0432\u043E\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438 */                          {               if ((cd = pdata[iKey]['p']['*']) && (pv = cd[currency]))                 _price = pv;             }                          if (_price == 'error') return (false); else return (true);}function uprice (currency) {         for (iKey in pdata) {             if (pdata[iKey]['p']) {                for (termKey in termsz) {                    if (pdata[iKey]['p'][termKey]) {                       termpriceval = (_tv = pdata[iKey]['p'][termKey][currency])? _tv : null;                       if (priceholder = document.getElementById ('price_' + iKey + '_' + termKey)) {                          while (priceholder.firstChild) priceholder.removeChild (priceholder.firstChild);                          nodetext = termpriceval? termpriceval + String.fromCharCode(160) + currsuff[currency] : /*'\u043F\u043B\u0430\u0442\u0435\u0436\u0438 \u0432 ' + currencies[currency] + ' \u043D\u0435 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u044E\u0442\u0441\u044F'*/ '- - -';                          priceholder.appendChild (document.createTextNode(nodetext));                       }                     }                 }             }         }             }function dumpobj (_obj, _recursive, _indent) {         if (!_recursive) _recursive = 0;         if (!_indent) _indent = 0;         var _istr = '';         while (_istr.length < _indent) _istr += ' ';                     var _res = new String;         for (_key in _obj) {           _res += '\n' + _istr + _key + ' = ' + _obj[_key];          if (_recursive) _res += dumpobj (_obj[_key], _recursive - 1, _indent+1);         }          return _res;   }function usum (currency, eForm, eDisp) {    /* \u041F\u043E\u0434\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0435\u0442 \u043E\u0431\u0449\u0443\u044E \u0441\u0443\u043C\u043C\u0443 \u0437\u0430\u043A\u0430\u0437\u0430.              \u0418\u0442\u0435\u0440\u0438\u0440\u0443\u044F \u043F\u043E \u043A\u0430\u0436\u0434\u043E\u043C\u0443 \u043D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044E \u0442\u043E\u0432\u0430\u0440\u0430:              1. \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0435\u0441\u0442\u044C \u043B\u0438 \u0432 \u0444\u043E\u0440\u043C\u0435 \u043F\u043E\u043B\u0435 "\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E".                    \u0415\u0441\u043B\u0438 \u0434\u0430, \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u043D\u0430\u0439\u0434\u0435\u043D\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0432 _count.            \u0415\u0441\u043B\u0438 \u043D\u0435\u0442, \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u043A\u043E\u043B-\u0432\u043E \u0437\u0430 1.                   2. \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0435\u0441\u0442\u044C \u043B\u0438 \u0446\u0435\u043D\u043E\u0432\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u0441\u0440\u043E\u043A\u0430\u0445 \u0438 \u043E\u0442\u043C\u0435\u0447\u0435\u043D\u043D\u044B\u0439 \u0441\u0440\u043E\u043A.            \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043E \u0441\u0440\u043E\u043A\u0430\u0445.            \u0415\u0441\u043B\u0438 \u043D\u0435\u0442, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043E \u0441\u0440\u043E\u043A\u0435 \u0441\u043E \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u043C \u043A\u043B\u044E\u0447\u043E\u043C '*'.                            */         var _total = 0;          var _count = 0;          var _val = null;          var _qty = null;          var pte;          var pqty;         var _price;                  for (iKey in pdata) {             _qty = 1;             /* \u041F\u041E\u0418\u0421\u041A \u0418\u041D\u0424\u041E\u0420\u041C\u0410\u0426\u0418\u0418 \u041E \u041A\u041E\u041B\u0418\u0427\u0415\u0421\u0422\u0412\u0415 */                          /* \u0431\u043B\u043E\u043A "\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E" */             if (pqty = eForm[iKey + '_qty'])               {               _qty = pqty.value;               var _nrx = /^([0-9]+)$/;               if (_nrx.exec(_qty))                  _qty = _qty * 1;                 else _qty = 1;              }             /* \u043A\u043E\u043D\u0435\u0446 \u0431\u043B\u043E\u043A\u0430 "\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E" */             /* \u041F\u041E\u0418\u0421\u041A \u0426\u0415\u041D\u041E\u0412\u041E\u0419 \u0418\u041D\u0424\u041E\u0420\u041C\u0410\u0426\u0418\u0418 */                          _price = 0;                           /* "\u043D\u0430\u0439\u0434\u0435\u043D \u0441\u0440\u043E\u043A"? */             if (pte = eForm[iKey + '_term']) {                for (i = 0; i < pte.length; i++) if (pte[i].checked) _val = pte[i].value;                if (_val && (cd = pdata[iKey]['p'][_val]) && (pv = cd[currency]))                  _price = pv;             } else             /* "\u0441\u0440\u043E\u043A \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u043C, \u0438 \u0442\u0430\u043A\u043E\u0439 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438 \u043D\u0435\u0442":                 \u0438\u0449\u0435\u043C \u0441\u043F\u0435\u0446. \u0437\u0430\u043F\u0438\u0441\u044C \u0432 \u043C\u0430\u0441\u0441\u0438\u0432\u0435 \u0446\u0435\u043D\u043E\u0432\u043E\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438 */                          {               if ((cd = pdata[iKey]['p']['*']) && (pv = cd[currency]))                 _price = pv;             }                          _count += _qty;             _total += _qty*_price;                       }                  while (eDisp.firstChild) eDisp.removeChild (eDisp.firstChild);         eDisp.appendChild (document.createTextNode(_total + String.fromCharCode(160) + currsuff[currency]));           if (tcount = document.getElementById('inh_item_count')) tcount.value = _count;                    return true;                          }function checkCount () {         if (document.getElementById ('inh_item_count').value == 0) {            alert (prform_ldata.zero_count_msg);            return false;         }         else return true;}function genSelectHTML (items, controlName, extraAttribs) {         var html = genElem ('select', aCat ({'name': controlName, 'id': controlName}, extraAttribs), '<!--{options}-->');         i = 0;         for (key in items) {             var ihtml = genElem ('option', {'id': controlName + '_' + key, 'value': key}, items[key]);        html = putCode (html, 'options', ihtml, 2);         }         return clearLabels(html);}function listKeys (arrArray) {         var res = new Array();         for (key in arrArray) res[res.length] = key;         return res;  }function getGroups (keylist, datalist, grSubKey) {         var res = new Array();         for (keykey in keylist) {             key = keylist[keykey];                              if (datalist[key]) {                if (!(grp = datalist[key][grSubKey])) grp = null;                if (!(res[grp])) res[grp] = new Array();                 res[grp][res[grp].length] = key;              }          }         return res;}function genGrpCellHTML (grpKey, grpData, classname, extraAttribs) {         if (!(grpData[grpKey])) return '';          else {           resHTML = genElem ('td', aCat ({'class': classname, 'id': 'subshead_' + grpKey}, extraAttribs), grpData[grpKey]);           return resHTML;         }                }function genRadioTextCommentTdHTML (radioname, radioid, radioval, radiochecked, radioclick, text, tdclass, comment, commentclass, commentid){   var rbHTML = '';   var divpHTML = '';   if (radioval != null) {      rbHTML = genElem ('input', {'id': radioid, 'name': radioname, 'value': radioval, 'type': 'radio'         , 'onclick': radioclick, 'checked': radiochecked }, false) + (text? text : '');            divpHTML = genElem ('div', {'class': commentclass, 'id': commentid});   }   return genElem ('td', {'class': tdclass}, rbHTML + divpHTML);}function initCalendar () {      var tdy = new Date();     var caldef2 = {         firstday:1,         dtype:'dd.MM.yyyy',         width:250,         windoww:300,         windowh:200,         border_width:0,         border_color:'#0000d3',         dn_css:'clsDayName',      cd_css:'clsCurrentDay',         wd_css:'clsWorkDay',         we_css:'clsWeekEnd',         wdom_css:'clsWorkDayOtherMonth',         weom_css:'clsWeekEndOtherMonth',         headerstyle: {            type:"comboboxes",            css:'clsWorkDayOtherMonth',            yearrange:[tdy.getFullYear(), tdy.getFullYear() + 10]         },         monthnames : pform_ldata.monthnames,         daynames : pform_ldata.daynames      };      res = new CodeThatCalendar(caldef2);    return res; }var calendar = initCalendar();function selectDate (inputName) {         calendar.popup (inputName);         }function genKIPSnoteHTML () {        return (genElem('span', {'class': 'kipsNote', 'title': pform_ldata.kipsnote}, '*'));}function genTermSelectorHTML (name) {        var ds = formatDate (new Date(), 'dd.MM.yyyy');       var inpHTML = genElem ('input', {'type': 'text', 'name': name, 'id': name, 'class': 'term_input',      'value': ds, 'title': pform_ldata.termsel_title}, false);         var butHTML = genElem ('input', {'type': 'submit', 'value': '...', 'class': 'term_btn',       'onclick': 'selectDate("'+name+'"); return false;'}, false);         var commentHTML = genElem ('span', {'class': 'term_comment'}, pform_ldata.termsel_prompt);       return genElem('div', {'class': 'termsel'}, commentHTML + inpHTML + butHTML);}function genQtySelectorHTML (name, onchange) {        var ts = document.createElement ('div');        var inp; var comment;                 ts.className = 'qtysel';            var commentHTML = genElem ('span', {'class': 'qty_comment'}, pform_ldata.qty_prompt);   var inpHTML = genElem ('input', {'name': name, 'id': name, 'type': 'text', 'class': 'qty_input', 'value': 1,      'onchange': onchange, 'title': pform_ldata.qty_title}, false);       return genElem ('div', {'class': 'qtysel'}, commentHTML + inpHTML);}function genItemTdsHTML (iKey, iData, formname, currsname, dispid, extraAttribs) {         if (!(iData[iKey])) return '';         else {              rbname = iKey + '_term';              params = 'document.forms["'+formname+'"]["'+currsname+'"].value, document.forms["'+formname+'"], document.getElementById("'+dispid+'")';              rbclick = 'if (canBuy("'+iKey+'", '+params+')) usum ('+params+'); else return(false);';                             var resHTML = '';                            // 1. \u0413\u0435\u043D\u0435\u0440\u0438\u0440\u0443\u0435\u043C \u043F\u0435\u0440\u0432\u0443\u044E \u044F\u0447\u0435\u0439\u043A\u0443 \u0441 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435\u043C \u0438 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435\u043C \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u0430         var iheadHTML = genElem ('div', {'class': 'main'}, iData[iKey]['h'] + (iData[iKey]['kips']? genKIPSnoteHTML() : ''));              var idescrHTML = '';              if ((typ = iData[iKey]['t']) && (descr = types[typ]))                  idescrHTML = genElem ('div', {'class': 'descr'}, descr);                       var htdHTML = genElem   ('td', {'class': 'name'},                   iheadHTML + idescrHTML + genTermSelectorHTML('term' + iKey)                      + genQtySelectorHTML(iKey + '_qty', rbclick)               );              resHTML += htdHTML;                            // 2. \u0413\u0435\u043D\u0435\u0440\u0438\u0440\u0443\u0435\u043C \u044F\u0447\u0435\u0439\u043A\u0438 \u0441\u043E \u0441\u0440\u043E\u043A\u0430\u043C\u0438 \u0438 \u0446\u0435\u043D\u0430\u043C\u0438              for (termkey in termsz) {                  var pdk = pdata[iKey]['p'][termkey];                  unarc_sfx = (pdk && pdk['unarc'])? ' unarc' : '';                    _label = (pdk && pdk['_label'])? pdk['_label'] : termsz[termkey];                           resHTML += genRadioTextCommentTdHTML (rbname, 'rb_' + rbname + '_' + termkey,             pdk? termkey : null, false, rbclick, _label,             'termprice ' + termkey + unarc_sfx, '', 'price', 'price_' + iKey + '_' + termkey);              }                               // 3. \u0413\u0435\u043D\u0435\u0440\u0438\u0440\u0443\u0435\u043C \u044F\u0447\u0435\u0439\u043A\u0443 "\u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D"         resHTML += genRadioTextCommentTdHTML (rbname, 'rb_' + rbname + '_none', '0', true, rbclick,       pform_ldata.term_nobuy, 'nobuy', null);         }                  return resHTML; }function genPricesTableHTML (extraAttribs) {        var tblHTML = genElem ('table', extraAttribs, '<!--{tblcnt}-->');        var colMax = 2;        for (termkey in termsz) colMax++;     var _groups = getGroups (listKeys(pdata), pdata, 'g');                 var itemcount = 0;                 for (var grpKey in _groups) {                if (groups[grpKey] != null) {         // \u0441\u0443\u043F\u0435\u0440\u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438         if (grpheads[grpKey]) {            var ogrpCellHtml = genGrpCellHTML (grpKey, grpheads, 'subsbighead', {'colspan': colMax, 'id': 'grpcell_' + grpKey});            var ogrpRowHtml = genElem ('tr', null, ogrpCellHtml);            tblHTML = putCode (tblHTML, 'tblcnt', ogrpRowHtml, 2);         }                     // \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u0433\u0440\u0443\u043F\u043F         var grpCellHTML = genGrpCellHTML (grpKey, groups, 'subshead', {'colspan': colMax});         var grpRowHTML = genElem ('tr', null, grpCellHTML);         tblHTML = putCode (tblHTML, 'tblcnt', grpRowHTML, 2);      }                  // \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u043F\u043E\u0434\u0433\u0440\u0443\u043F\u043F      var _subgroups = getGroups (_groups[grpKey], pdata, 'sg');                for (var _subKey in _subgroups) {         if (subgroups[_subKey] != null) {             var subGrpCellHTML = genGrpCellHTML (_subKey, subgroups, 'subssubhead', {'colspan': colMax});            var subGrpRowHTML = genElem ('tr', null, subGrpCellHTML);            tblHTML = putCode (tblHTML, 'tblcnt', subGrpRowHTML, 2);         }         // \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u043E \u0441\u0442\u0440\u043E\u043A\u0438 \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u043E\u0432         for (var _iKey in _subgroups[_subKey]) {             var itdsHTML = genItemTdsHTML (_subgroups[_subKey][_iKey], pdata , 'subs', 'selCurr', 'total', {'valign' : 'top'} );            var itemRowHTML = genElem ('tr', {'class' : 'item' + ((itemcount++)%2? ' even' : ' odd')}, itdsHTML);                                  tblHTML = putCode (tblHTML, 'tblcnt', itemRowHTML, 2);         }      }        }                  return clearLabels(tblHTML);}function genScurrHTML () {         var sCurr = genSelectHTML (currencies, 'selCurr', {'onchange': 'e = document.forms["subs"]["selCurr"]; uprice(e.value); usum (document.forms["subs"]["selCurr"].value, document.forms["subs"], document.getElementById("total")); return true;'});         return sCurr;                 }function genPricelistHTML () {         return genPricesTableHTML({'class' : 'pricesTable'});}function requireTagName (aNode, tagName, errorprefix) {  if (!errorprefix) errorprefix = '';   _tagName = aNode?       (aNode.tagName ? aNode.tagName.toUpperCase() : null)    : 'null';  if (_tagName != tagName.toUpperCase())     throw (errorprefix + ' \u0434\u043E\u043B\u0436\u0435\u043D \u0441\u0441\u044B\u043B\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 '       + tagName.toUpperCase() + ', \u0430 \u043D\u0435 \u043D\u0430 ' + _tagName + '.' );  return(true);  }/* \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043E\u043A\u0443 (TR), \u0432 \u043A\u043E\u0442\u043E\u0440\u043E\u0439 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u044F\u0447\u0435\u0439\u043A\u0430 (TD) acell \u0438\u043B\u0438 null, \u0435\u0441\u043B\u0438 \u0442\u0430\u043A\u043E\u0439 \u043D\u0435\u0442. */function getParentRow (acell) {    requireTagName (acell, 'td', 'getParentRow :: acell');    var pe = acell;    while ((pe = pe.parentNode) && (pe.tagName.toUpperCase() != 'TR')) {      if (pe.tagName.toUpperCase() == 'TABLE') throw ('getPartentRow :: \u043E\u0448\u0438\u0431\u043A\u0438 \u0432 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435. TD \u043D\u0435 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0432 TR!');     }    return pe;}/* \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E TR, \u0447\u0442\u043E \u0438 TR arow (\u043D\u0430\u0445\u043E\u0434\u044F\u0449\u0443\u044E\u0441\u044F \u0432 \u0442\u043E\u043C \u0436\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435, \u0447\u0442\u043E \u0438 arow). \u0418\u043B\u0438 null, \u0435\u0441\u043B\u0438 \u0442\u0430 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430... */function getNextRow (arow) {    requireTagName (arow, 'tr', 'getNextRow :: arow');    var nrow = arow;    while ((nrow = nrow.nextSibling) && (!nrow.tagName || nrow.tagName.toUpperCase() != 'TR')) {}    return nrow;}function getCellByClassName (arow, className) {    requireTagName (arow, 'tr', 'getCellByClassName :: arow');    var aitem;    for (aitem = arow.firstChild; aitem; aitem = aitem.nextSibling ) {      if (aitem.tagName && aitem.tagName.toUpperCase() == 'TD'        && aitem.className && aitem.className.toUpperCase() == className.toUpperCase())        return aitem;     }    return aitem;}// \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043C\u0430\u0441\u0441\u0438\u0432 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 tr, \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u0432 \u0433\u0440\u0443\u043F\u043F\u0443 \u043F\u043E\u0434\u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 className, \u043D\u0430\u0447\u0438\u043D\u0430\u044F \u0441\u043E \u0441\u0442\u0440\u043E\u043A\u0438 headerCell, \u043D\u043E \u043D\u0435 \u0432\u043A\u043B\u044E\u0447\u0430\u044F \u0435\u0451function searchOutlineTRs (headerCell, className) {  try {    var arow;    var acell = headerCell;    var arow = getParentRow (acell);    var nrow = arow;    var dcell;    var i = new Number(0);    var lines = new Array();    while ((nrow = getNextRow (nrow)) && !getCellByClassName (nrow, className))       lines[lines.length] = nrow;   }   catch (err) { alert (err.description? err.description : err); }  return lines;}/* \u0432\u044B\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0438\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u0445 \u0441\u0442\u0440\u043E\u043A.    \u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B: lines - \u043C\u0430\u0441\u0441\u0438\u0432 tr'\u043E\u043A              onoff:                false - display: none                true - display: ''*/   function switchTRDisplay (lines, onoff) {  var i;  for (i in lines) {    lines[i].style.display = onoff? '' : 'none';  }}  function autoSwitchOutlineTRs (stateVarName, headerCell, className) {  var lines = searchOutlineTRs (headerCell, className);  var f = new Function ("return (" + stateVarName + "= !" + stateVarName + ");");  switchTRDisplay (lines, f());}function getOutlineTRSwitchCode (className, initStateOn, headerCellCode, stateVarName, offImg, onImg) {  var code = new String;  var _svn = '"' + stateVarName + '"';  var _cn = '"' + className + '"';  var _offi = '"' + offImg + '"';  var _oni = '"' + onImg + '"';    code += "<a href='' onclick='javascript: return false;'><img src='" + (initStateOn? onImg : offImg)     + "' onclick='javascript: autoSwitchOutlineTRs (" + _svn + ", " + headerCellCode + ", " + _cn + "); src = " + stateVarName + "? " + _oni + ": " + _offi + ";' /></a>";    return code;  }grpModes = new Array();imbase = '/web/agency.nsf/ag/'; // \u0411\u0430\u0437\u043E\u0432\u044B\u0439 URL \u0434\u043B\u044F \u043F\u0443\u0442\u0438 \u043A \u0434\u0438\u0440\u0435\u043A\u0442\u043E\u0440\u0438\u0438 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439function initPricelistSwitches() {  var i; var f;  var gtd;  var s = '';  for (i in grpheads) {    if (grpswitch[i] != null) {      if (gtd = ge ('grpcell_' + i)) {        if (!ge('otrswitch_' + i)) {            grpModes[i] = true;           gtd.innerHTML = '<span class="otrswitch" id="otrswitch_'+i+'">'+getOutlineTRSwitchCode ('subsbighead', 0, "document.getElementById(\"grpcell_" + i + "\")", 'grpModes.' + i, imbase + 'unfold.gif', imbase + 'fold.gif') + '</span>' + gtd.innerHTML;           autoSwitchOutlineTRs ("grpModes." + i, gtd, "subsbighead");        }      }    }  }   }