/***[AJAX]***/
var _HTTPFactories = [
		      function () { return new XMLHttpRequest(); },
		      function () { return new ActiveXObject("Msxml.XMLHTTP"); },
		      function () { return new ActiveXObject("Microsoft.XMLHTTP"); }
		      ];

var _HTTPFactory = null;

function HTTPRequest() {
    if(_HTTPFactory) return _HTTPFactory();
    for(var i=0; i < _HTTPFactories.length; i++) {
	try {
	    var factory = _HTTPFactories[i];
	    var request = factory();
	    if(request != null) {
		_HTTPFactory = factory;
		return request;
	    }
	}
	catch(e) { continue; }
    }
    alert("NoHttpRequest");
}

function ajax(path, cmd, cbk, method)
{
    var req = HTTPRequest();
    cbk = cbk || function(status, text) { alert("Unhandled response(" + status + "): " + text); };
    
    req.onreadystatechange = function() {
        if(req.readyState == 4) { return cbk(req.status, req.responseText); }
    };
    if (method == 'GET')
        {
            req.open(method, path + "?" + cmd.join("&"));
            req.send(null);
        }
    else if (method == 'POST')
        {
            req.open(method, path);
            req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            req.send(cmd.join('&'));
        }
    return false;
}

