var xmlreqs = new Array();

function CXMLReq(freed)
{
  this.freed=freed;
  this.xmlhttp=false;
  if(window.XMLHttpRequest)
    this.xmlhttp=new XMLHttpRequest();
  else
    if(window.ActiveXObject)
      this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

function xmlreqPOST(url,data,sender)
{
  var pos=-1;
  for(var i=0;i<xmlreqs.length;i++)
  {
    if(xmlreqs[i].freed==1)
    {
      pos=i;
      break;
    }
  }
  if(pos==-1)
  {
    pos=xmlreqs.length;
    xmlreqs[pos]=new CXMLReq(1);
  }
  if(xmlreqs[pos].xmlhttp)
  {
    xmlreqs[pos].freed=0;
    xmlreqs[pos].xmlhttp.open("GET",url+"?"+data,true);
    xmlreqs[pos].xmlhttp.onreadystatechange = function(){ if(typeof(xmlhttpChange)!='undefined'){xmlhttpChange(pos,sender);} }
    xmlreqs[pos].xmlhttp.send(data);
    return false;
  }
  return true;
}

function xmlhttpChange(pos,sender)
{
  if((typeof(xmlreqs[pos])!='undefined')&&
     (xmlreqs[pos].freed==0)&&
     (xmlreqs[pos].xmlhttp.readyState==4))
  {
    if((xmlreqs[pos].xmlhttp.status==200)||
       (xmlreqs[pos].xmlhttp.status == 304))
    {
      handle_response(xmlreqs[pos].xmlhttp.responseText,sender);
    } else handle_error(xmlreqs[pos].xmlhttp.status,xmlreqs[pos].xmlhttp.statusText,sender);
    xmlreqs[pos].freed=1;
  }
}

function handle_response(response, sender)
{
  sender.style.cursor=((sender.tagName=="A")?"Pointer":"Default");
  
  var sp=sender.parentNode.getElementsByTagName("span")[0];
  if(sp)
    sp.className="klik minus";
  sender.parentNode.innerHTML=sender.parentNode.innerHTML+response;
}

function handle_error(st,txt,sender)
{
  sender.style.cursor=((sender.tagName=="a")?"Pointer":"Default");
  alert("Chyba při zpracování požadavku!\n"+st+": "+txt);
}

function changeMenu(sender,node)
{
  var sp=sender.parentNode.getElementsByTagName("span")[0];
  if(sender.parentNode.getElementsByTagName("ul").length==0)
  {
    sender.style.cursor="wait";
    return xmlreqPOST("menudata.php","node="+node,sender);
  } else
  {
    var a=sender.parentNode.getElementsByTagName("ul")[0];
    if((a.style.display=='block') || (a.style.display==''))
    {
      a.style.display="none";
      if(sp)
        sp.className="klik plus";
    }
    else
    {
      a.style.display="block";
      if(sp)
        sp.className="klik minus";
    }
    return false;
  }
}