            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 GetXml( DataToSend, url, is_return, execute_function ) {
				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("POST", url  + '?rand=' + Math.random(), true);
					xmlreqs[pos].xmlhttp.onreadystatechange = function() {
						if( xmlreqs[pos].xmlhttp.readyState == 4 ) {
	                    		if( is_return ) {
	                    			return( xmlreqs[pos].xmlhttp.responseText );
	                    		} else {
	                    			if( execute_function == null ) {
	                    				return( xmlreqs[pos].xmlhttp.responseXML );
	                    			} else {
	                    				xml_response = xmlreqs[pos].xmlhttp.responseXML;
	                    				xhrObj = xmlreqs[pos].xmlhttp;
	                    				eval(execute_function);
	                    			}
	                    		}
						}
					}
					xmlreqs[pos].xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
					xmlreqs[pos].xmlhttp.send( DataToSend );
					if( is_return == 2 ) {
						return xmlreqs[pos].xmlhttp;
					}
				}
			}
		
			function getXmlHttpRequestObject() {
				if (window.XMLHttpRequest) {
					return new XMLHttpRequest();
				} else if(window.ActiveXObject) {
					return new ActiveXObject("Microsoft.XMLHTTP");
				} else {
					alert('You\'re browser doesn\'t support XML HTTP Object!');
				}
			}
