// ----------------------------------------------------------------------------
// Object Ajax
// ----------------------------------------------------------------------------
function Ajax (callback) {
  this.query = ajaxQuery;
  this.abort = ajaxAbort;
  this._callback = callback;
  this._req = null;
	this._xmlResponse = false;
}

// ----------------------------------------------------------------------------
// ajaxCreateObject (Ajax::createObject)
// ----------------------------------------------------------------------------
function ajaxCreateObject () {
	var ret;
	if (window.XMLHttpRequest) {
    ret = new XMLHttpRequest(); 
		if (ret.overrideMimeType && this.xmlResponse) {
				ret.overrideMimeType('text/xml');
		}
  }
  else if (window.ActiveXObject) { // branch for IE/Windows ActiveX version
    try {
      ret = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try { ret = new ActiveXObject("Microsoft.XMLHTTP"); } 
      catch (e) { alert(e) }
    }
  }
	return ret;
}

// ----------------------------------------------------------------------------
// ajaxQuery (Ajax::query)
// ----------------------------------------------------------------------------
function ajaxQuery (url) {
	this._req = null;
	this._req = ajaxCreateObject();
	try {
		var req = this._req;
		var xmlResponse = this._xmlResponse;
		var callback = this._callback;

		req.onreadystatechange = function() {
			if (req.readyState == 4)
				if (req.status == 200) {
					if (xmlResponse) callback (req.responseXML);
					else callback (req.responseText);
				}
		}
		this._req.open ("GET", url, true);
		this._req.send ("");
	} catch (e) { alert("ajaxQuery error: " + e) }
}

// ----------------------------------------------------------------------------
// ajaxAbort (Ajax::abort)
// ----------------------------------------------------------------------------
function ajaxAbort() {
  if (this._req != null) {
    try { 
      this._req.abort(); 
    }
    catch (e) {}
  }
}




