function $(name)
{ return document.getElementById(name);
}
var running_req=null;
var autoField_value=null;
var autoField_timer=null;
var autoField_active=false;
var autoField_nitems=0;
var autoField_item=1;
function hidePopup(name)
{ 
  $(name+'_popup').style.visibility='hidden';
  $(name+'_popup').innerHTML='';
}
function showHidden(item,name)
{ 
  item.style.visibility='hidden';
  $(name).style.visibility='visible';
  $(name).style.height='auto';
}
function setAuto(name,val)
{ $(name).value=val.replace(new RegExp("``","g"),"\"");
  autoField_active=false;
  hidePopup(name);
  autoField_value=null;
}
function htmlSpecial(t)
{
  t=t.replace(new RegExp("&","g"),"&amp;");
  t=t.replace(new RegExp("<","g"),"&lt;");
  t=t.replace(new RegExp(">","g"),"&gt;");
  t=t.replace(new RegExp("\"","g"),"&quot;");
  return t;
}
function requestReceived(req)
{
  running_req=null;
  $('wait').style.visibility='hidden';
  if (req.readyState == 4) 
  {
    if (req.responseJS) 
    {
       if(req.responseJS.action.substr(0,3)=='GO ')
         window.location.href=req.responseJS.action.substr(3);
       else if(req.responseJS.action=='REFRESH')
         window.location.reload();
       else if(req.responseJS.action.substr(0,6)=='POPUP ')
       {
         var itemname=req.responseJS.action.substr(6);
         if(req.responseText=='')
         {
           $(itemname+'_popup').style.visibility='hidden';
           autoField_active=false;
         }
         else
         {
           $(itemname+'_popup').style.visibility='visible';
           autoField_active=true;
         }
         autoField_nitems=0;
         $(itemname+'_popup').innerHTML=req.responseText;
       }
       else if(req.responseJS.action.substr(0,4)=='FOR ')
       {
         var itemname=req.responseJS.action.substr(4);
         var items=req.responseText.split("\n");
         var html='';
         var j;
         autoField_nitems=0;
         for(j=0;j<items.length;++j)
         { if(items[j]!='')
           { var s=items[j].replace(new RegExp("\"","g"),"``");
             var t=items[j];
             t=htmlSpecial(t);
             ++autoField_nitems;
             html+="<tr><td id=\""+itemname+"_popup"+autoField_nitems.toString()+"\" onclick=\"setAuto('"+itemname+"','"+s+"')\" onmouseover=\"itemHover('"+itemname+"',"+autoField_nitems.toString()+");\">"+t+"</td></tr>\n";
           }
         }
         if(html=='')
         {
           $(itemname+'_popup').style.visibility='hidden';
           autoField_active=false;
         }
         else
         {
           $(itemname+'_popup').style.visibility='visible';
           autoField_active=true;
           html="<table class=\"popup\">"+html+"</table>";
         }
         $(itemname+'_popup').innerHTML=html;
         autoField_item=1;
         if(autoField_nitems>0)
           setMark(itemname);
       }
       else if(req.responseJS.action!='')
       { var cdiv=$(req.responseJS.action);
         if(req.responseText=='')
           cdiv.className="E"+cdiv.className.substr(1,1);
         else if(req.responseText.substr(0,2)=='<h')
           cdiv.className="H"+cdiv.className.substr(1,1);
         else
           cdiv.className="L"+cdiv.className.substr(1,1);
 	 cdiv.innerHTML = req.responseText;
       }
       else
         window.alert(req.responseText);
    }
    else
      window.alert(req.responseText);
  }
}
function doAjax(op,item,fields)
{
  if(running_req) running_req.abort(); 
  var req = new Subsys_JsHttpRequest_Js();
  running_req=req;
  var data = new Array();
  req.onreadystatechange = function() {
    requestReceived(req); 
  }
  var flds=fields.split(';');
  var i;
  for(i=0;i<flds.length;++i)
  { if(flds[i]!='')
    { var p=flds[i].indexOf('=');
      if(p==-1)
      { var fldid=flds[i]+item.toString();
        var fld=$(fldid);
        if(fld.type=='radio')
        { 
          if(fld.checked)
            data[flds[i]]=fld.value;
          else
          { 
            var inputs=document.getElementsByName(flds[i]);
            var j;
            for(j=0;j<inputs.length;++j)
            { if(inputs[j].id==fldid && inputs[j].checked)
              {
                data[flds[i]]=inputs[j].value;
                break;
              }
            }
          }
        }
        else if(fld.type=='checkbox')
        { 
          if(fld.checked)
            data[flds[i]]='on';
        }
        else
          data[flds[i]]=fld.value;
      }
      else
        data[flds[i].substr(0,p)]=flds[i].substr(p+1);
    }  
  }
  data['op']=op;
  data['item']=item;
  data['id']=pageId;
  data['kkod']=kkod;
  req.caching = false;
  req.open('POST','item.php', true);
  req.send(data);
  $('wait').style.visibility='visible';
  return false;
}
function goPage(ref)
{
  window.location.href=ref;
}
function doForm(item)
{
  var frm=$('form'+item.toString());
  var prg=frm.getAttribute('onsubmit');
  var rez=true;
  if(prg)
  { prg=""+prg;
    if(prg.substr(0,8)=="function")
      rez=eval("("+prg+")()");
    else
      rez=eval("(function() {"+prg+"})()");
  }
  if(rez)
    frm.submit();
}
function resetMark(name)
{ var it=$(name+'_popup'+autoField_item.toString());
  it.className='';
}
function setMark(name)
{ var it=$(name+'_popup'+autoField_item.toString());
  it.className="selected";
}
function itemHover(name,item)
{ if(autoField_item!=item)
  { 
    resetMark(name);
    autoField_item=item;
    setMark(name);
  }
}
function stopEvent(event)
{
  if (event.preventDefault) {
    event.preventDefault();
    event.stopPropagation();
  } else {
    event.returnValue = false;
    event.cancelBubble = true;
  }
}
function keyAuto(event,name,item,fields)
{ 
  var itemname=name+item.toString();
  var prg;
  var key;
  key = event.keyCode;
  if(autoField_active && autoField_nitems>0)
  {
    switch(key)
    {
      case 9: // TAB
        autoField_active=false;
        hidePopup(itemname);
        return true;
      case 13: // RETURN
        prg=$(itemname+'_popup'+autoField_item.toString()).getAttribute('onclick');
        eval("(function() {"+prg+"})()");
        stopEvent(event);
        return false;
      case 27: // ESC
        autoField_active=false;
        hidePopup(itemname);
        stopEvent(event);
        return false;
      case 37: // LEFT
      case 39: // RIGHT
        return true;
      case 38: // UP
        resetMark(itemname);
        if(autoField_item==1) autoField_item=autoField_nitems;
        else --autoField_item;
        setMark(itemname);
        stopEvent(event);
        return false;
      case 40: // DOWN
        resetMark(itemname);
        if(autoField_item==autoField_nitems) autoField_item=1;
        else ++autoField_item;
        setMark(itemname);
        stopEvent(event);
        return false;
    }
  }
  if(autoField_timer) clearTimeout(autoField_timer);
  autoField_timer=setTimeout(function() {
      var v=$(itemname).value;
      if(v!=autoField_value)
      { autoField_value=v;
        doAjax(name,item,fields);
      }
    },1000);
  return true;
}
function blurAuto(name)
{ 
  if(autoField_timer) clearTimeout(autoField_timer);
  autoField_timer=null;
  if(running_req) running_req.abort();
  running_req=null;
  if(autoField_active)
    setTimeout(function() {
      hidePopup(name);
    },250);
  autoField_active=false;
}
function focusAuto(name,item,fields)
{ autoField_active=true;
  autoField_value=null;
  if(autoField_timer) clearTimeout(autoField_timer);
  autoField_timer=setTimeout(function() {
      var v=$(name+item.toString()).value;
      if(v!=autoField_value)
      { autoField_value=v;
        doAjax(name,item,fields);
      }
    },1000);
}
function doReply(item)
{ doAjax('reply',pageId,'replyto='+item.toString());
}
function doEdit(item)
{ doAjax('edit',item,'');
}
function doDelete(item)
{ if(window.confirm('Удалить?')) 
    doAjax('delete',item,'');
}
function doUndelete(item)
{
  doAjax('undelete',item,'');
}
function doTrash(item)
{ if(window.confirm('Уничтожить?')) 
    doAjax('trash',item,'');
}
function doCancel(item)
{ doAjax('cancel',item,'');
}
function doHelp(item,flds)
{ doAjax('help',item,flds);
}
function closeHelp(item)
{ hidePopup('help'+item.toString());
}
function doAdd(item)
{ doAjax('add',item,'');
}
function doPick(item)
{ doAjax('pick',item,'');
}
function doPrint(item)
{ if(pageHTML==null)
  {
    pageHTML=document.body.innerHTML;
    document.body.innerHTML=$('item'+item.toString()).innerHTML;
  }
  else
  {
    document.body.innerHTML=pageHTML;
    pageHTML=null;
  }
}
function menuOut(id)
{
  id.className=''; 
}
function menuOver(id)
{
  id.className="selected"; 
}
function menuClick(id)
{
  var url=id.innerHTML;
  var p=url.indexOf('href=');
  url=url.substr(p+6);
  var p=url.indexOf('"');
  url=url.substr(0,p);
  goPage(url);
}
