// stores the reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject(); 
var gPid, razd;

// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject() 
{	
  // will store the reference to the XMLHttpRequest object
  var xmlHttp;
  // if running Internet Explorer
  if(window.ActiveXObject)
  {
    try
    {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e) 
    {
      xmlHttp = false;
    }
  }
  // if running Mozilla or other browsers
  else
  {
    try 
    {
      xmlHttp = new XMLHttpRequest();
    }
    catch (e) 
    {
      xmlHttp = false;
    }
  }
  // return the created object or display an error message
  if (!xmlHttp)
 
    alert("Error creating the XMLHttpRequest object.");
  else 
    return xmlHttp;
}

// make asynchronous HTTP request using the XMLHttpRequest object 
function process(raz, Raz)
{
	razd=Raz;
	if(document.getElementById("frn"+raz).innerHTML==""){
	  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)  {
		    xmlHttp.open("GET", "_ajax.php?ID="+raz, true);  
			gPid=raz;
			document.getElementById("frn"+gPid).style.display ="block";
			document.getElementById("frn"+gPid).innerHTML ="загружается...";
		    xmlHttp.onreadystatechange = handleServerResponse;
		    xmlHttp.send(null);
	 }
	}
	else{
		document.getElementById("frn"+raz).style.display="none";
		document.getElementById("frn"+raz).innerHTML="";
		if(document.getElementById("im"+gPid).src.indexOf('dhtmlgoodies_plus.gif')>=0){document.getElementById("im"+raz).src ='images/dhtmlgoodies_plus.gif';}
		else{document.getElementById("im"+raz).src ='images/dhtmlgoodies_sheet.gif';}
	}
}

// executed automatically when a message is received from the server
function handleServerResponse() 
{
  // move forward only if the transaction has completed
  if (xmlHttp.readyState == 4) 
  {
    // status of 200 indicates the transaction completed successfully
    if (xmlHttp.status == 200) 
    {
      // extract the XML retrieved from the server
      xmlResponse = xmlHttp.responseXML;
      // obtain the document element (the root element) of the XML structure
     // xmlDocumentElement = xmlResponse.documentElement;
      // get the text message, which is in the first child of
      // the the document element
	  if(!xmlResponse || !xmlResponse.documentElement){
	  	document.getElementById("frn"+gPid).style.display ="none";
	  	//alert("Неверная структура xml "+xmlHttp.responseText);
	  }
	
	   xmlRoot = xmlResponse.documentElement;
	  var idsArray=xmlRoot.getElementsByTagName("ids");
	  var nameArray=xmlRoot.getElementsByTagName("name");
	  var lnkArray=xmlRoot.getElementsByTagName("lnk");
	  var lvArray=xmlRoot.getElementsByTagName("lv");
	  var chArray=xmlRoot.getElementsByTagName("ch");
	  var Html="";
	  for (var i=0; i<idsArray.length; i++){
	  
	  		idc=idsArray.item(i).firstChild.data;
	  		nm=nameArray.item(i).firstChild.data;
			nm=decodeURI(nm);
	  		ch=chArray.item(i).firstChild.data;
	  		lnk=lnkArray.item(i).firstChild.data;
	  		lv=lvArray.item(i).firstChild.data;
			var c=""; if(razd==idc){c="style='color: #990000;'";}
			var sp="", spc="2", del="<a href='"+lnk+"' "+c+">"+nm+"</a> ";
			if(ch==1){
				del="<a href='javascript: void(0);' onclick='process("+idc+")'><img id=im"+idc+" src='images/dhtmlgoodies_plus.gif' border='0' align='absmiddle'></a> ";
				del+="<a href='javascript: void(0);' onclick='process("+idc+")'>"+nm+"</a>";
				sp="<div id=frn"+idc+" style='display: none;'></div>";
				spc="";
			}
			//for (var k=0; k<lv; k++){sp+=20;}
			//Html+=sp;
	  		Html+="<div class=frn";
			if(i==idsArray.length-1){Html+="_last";}
			Html+=">"+del;
	  		Html+=sp+"</div>";
	  }
      // update the client display using the data received from the server
      document.getElementById("frn"+gPid).innerHTML =Html;
	  if(idsArray.length==0){document.getElementById("frn"+gPid).innerHTML ="";}
	  else{
	  	 if(document.getElementById("im"+gPid).src.indexOf('dhtmlgoodies_plus.gif')>=0){document.getElementById("im"+gPid).src ='images/dhtmlgoodies_plus.gif';}
	  	 else{document.getElementById("im"+gPid).src ='images/dhtmlgoodies_sheet.gif';}
	  }
	  state=0;
      // restart sequence
    } 
    // a HTTP status different than 200 signals an error
    else 
    {
		document.getElementById("frn"+gPid).style.display ="none";
      alert("Ошибка загрузки: " + xmlHttp.statusText);
    }
  }
}

