function Ajax()
{
this.sendXml = function(url,
data,
cb,
cbData,
state)
{
if (data == undefined)
{
data = null;
} // if
if (cb == undefined)
{
cb = null;
} // if
if (cbData == undefined)
{
cbData = null;
} // if
if ((state == null) || (state == undefined))
{
state = 4;
} // if
var http = this._createHttp();
if (!http)
{
return (false);
} // if
if (data)
{
var mode = 'POST';
var req = this._createReq(data);
} // if
else
{
var mode = 'GET';
var req = null;
} // else
if (cb)
{
http.onreadystatechange = function() { Ajax._callback(http, cb, cbData, state, 'object'); }
} // if
http.open(mode,
url,
true);
http.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded; charset=UTF-8');
http.send(req);
return (true);
} // sendXml
this._createHttp = function()
{
var http;
if ((!http) &&
(typeof XMLHttpRequest != undefined))
{
try
{
http = new XMLHttpRequest();
} // try
catch (e)
{
http = null;
} // catch
} // if
return (http);
} // _createHttp
this._createReq = function(data)
{
var req = '';
if (data)
{
for (var param in data)
{
if ((isNaN(data[param])) &&
(!data[param]))
{
data[param] = '';
} // if
if (typeof(data[param]) == 'object')
{
if (!data[param].length)
{
req += '&' + param + '=';
}
else
{
for (var i = 0; i < data[param].length; i++)
{
req += '&' + param + '[]=' + encodeURIComponent(data[param][i]);
} // for
} // else
} // if
else
{
req += '&' + param + '=' + encodeURIComponent(data[param]);
} // else
} // for
} // if
return (req);
} // _createReq
} // Ajax
Ajax._callback = function(http,
cb,
cbData,
state,
cbType)
{
if ((http) &&
(http.readyState == state))
{
if (cb)
{
if (cbData == undefined)
{
cbData = null;
} // if
switch (cbType)
{
case null:
case undefined:
case 'object':
if (http.status == 200)
{
var obj = Utils.xmlToObject(http.responseXML);
} // if
else
{
var obj = null;
} // else
cb(obj,
cbData,
http.status,
http.statusText,
http.responseXML,
http.responseText);
break;
} // switch
} // if
} // if
} // Ajax._callback

