
     var Requests = new Array();

     function Request(req, ans) {
          this.req = req;
          this.answer = ans,
          this.state = 0;
     }

     function createXHR() {
          var req;
          try {
               req = new (window.XMLHttpRequest || ActiveXObject)('Msxml2.XMLHTTP');
          } catch (e) {
               throw 'Не могу создать AJAX';
               req = false;
          }
          return req;
     }


     function callserver(ajax_command, ajax_value, answer, way0) {		  way=way0;
          var req = createXHR();
          var adress = "/modules/agent.php?ajax_command=" + encodeURIComponent(ajax_command) + "&ajax_value=" + encodeURIComponent(ajax_value) + "&" + Math.round(Math.random()*10000000);
          count = Requests.push(new Request(req, answer));
          req.open("GET", adress, true);
          req.onreadystatechange = ansRequest;
          req.send(null);
          Requests[count-1].state = 1;
     }
     function callserver_syn(ajax_command, ajax_value, answer, way0) {
		  way=way0;
          var req = createXHR();
          var adress = "/modules/agent.php?ajax_command=" + encodeURIComponent(ajax_command) + "&ajax_value=" + encodeURIComponent(ajax_value) + "&" + Math.round(Math.random()*10000000);
          count = Requests.push(new Request(req, answer));
          req.open("GET", adress, false);
          req.onreadystatechange = ansRequest;
          req.send(null);
          Requests[count-1].state = 1;
     }

     function callserver_post(ajax_command, ajax_value, answer, way0) {
		  way=way0;
          var req = createXHR();
          var adress = "/modules/agent.php?" + Math.round(Math.random()*10000000);
          count = Requests.push(new Request(req, answer));
          req.open("POST", adress, true);
		  req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		  req.setRequestHeader("Connection", "close");
          req.onreadystatechange = ansRequest;
          req.send('ajax_command=' + encodeURIComponent(ajax_command) + '&' + ajax_value);

          Requests[count-1].state = 1;
     }
	 function callserver_post_syn(ajax_command, ajax_value, answer, way0) {
		  way=way0;
          var req = createXHR();
          var adress = "/modules/agent.php?" + Math.round(Math.random()*10000000);
          count = Requests.push(new Request(req, answer));
          req.open("POST", adress, false);
		  req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		  req.setRequestHeader("Connection", "close");
          req.onreadystatechange = ansRequest;
          req.send('ajax_command=' + encodeURIComponent(ajax_command) + '&' + ajax_value);

          Requests[count-1].state = 1;
     }

     function ansRequest() {
          var count = Requests.length;
          for (var i = 0; i < count; i++) {
               if(Requests[i].state == 0) continue;
               req = Requests[i].req;

               answer = Requests[i].answer;
               if (req.readyState == 4) {
                    if (req.status == 200) {
						ans = req.responseText;
						req.abort();
						Requests[i].state = 0;
						Requests[i].req = undefined;

						ss = way.split(".");
						way1 = ss[0];
						if (!ss[1]) { way2 = "null"; } else { way2 = ss[1]; }
						if (!ss[2]) { way3 = "null"; } else { way3 = ss[2]; }

						if (way3=="null")
						{ if (way2=="null") { document.getElementById(answer)[way1] = ans; }
						else { document.getElementById(answer)[way1][way2] = ans; } }
						else { document.getElementById(answer)[way1][way2][way3] = ans; }
                    }
               }
          }
     }
