function AJAXObject(url, callback) {

	var isWorking = false;
	var http = getHTTPObject();
//	var http = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
	http.onreadystatechange = handleHttpResponse;

	function getHTTPObject() {
                var xmlhttp;

                /*@cc_on

                @if (@_jscript_version >=5)

                try {
                        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try {
                                xmlhttp = new ActiveXobject("Microsoft.XMLHTTP");
                        } catch (E) {
                                xmlhttp = false;
                        }
                }

                @else
                        xmlhttp = false;
                @end @*/

                if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
                        try {
                                xmlhttp = new XMLHttpRequest();
                        } catch (e) {
                                xmlhttp = false;
                        }
                }

                return xmlhttp;
        }



	function handleHttpResponse() {
		if (http.readyState == 4) {
			isWorking = false;

			if (http.responseText.indexOf('invalid') == -1) {
				isWorking = false;

				// We got results
				if (callback) {
					callback(http);
//					callback(http.responseXML.documentElement);
//					callback(http.responseText);
				}
			}
		}
	}



	this.go = function() {
		if (!isWorking) {
			http.open("GET", url, true);
			isWorking = true;
			http.send(null);
		}
	}


	this.post = function(params) {
		if (!isWorking) {
			http.open("POST", url, true);
			isWorking = true;
			http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			http.setRequestHeader("Content-length", params.length);
			http.setRequestHeader("Connection", "close");
			http.send(params);
		}
	}


	this.debug = function() { return http; }

	// End AJAXObject
}


function getXMLNodeSerialization(xmlNode) {
  var text = false;
  try {
    // Gecko-based browsers, Safari, Opera.
    var serializer = new XMLSerializer();
    text = serializer.serializeToString(xmlNode);
  }
  catch (e) {
    try {
      // Internet Explorer.
      text = xmlNode.xml;
    }
    catch (e) {}
  }
  return text;
}


function AJAXCall(url, callback) {
	var ajax = new AJAXObject(url, callback);
	ajax.go();
}

function AJAXPost(url, params, callback) {
	var ajax = new AJAXObject(url, callback);
	ajax.post(params);
}


