/*
For example

var oAjax = new AjaxTool();
oAjax.MakeRequest('GET', '/profile/net_tags/', null, 4);
oAjax.ResponseHandler = function() {
	alert(this.oRequest.responseText);
}
*/

function AjaxTool()
{
    this.oRequest = this.CreateRequestObject();
    this.bAsynchronic = true;
    this.latestResponseText = null;
}

AjaxTool.prototype.CreateRequestObject = function()
{
    if (typeof XMLHttpRequest != 'undefined') {
        return new XMLHttpRequest();
    }
    var xhrVersion = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp","Microsoft.XMLHttp" ];
    for (var i = 0; i < xhrVersion.length; i++) {
        try {
            var xhrObj = new ActiveXObject(xhrVersion[i]);
            return xhrObj;
        } catch (e) { }
    }
    return;
}

AjaxTool.prototype.MakeRequest = function(method, path, params, readyState)
{
    this.oRequest.open(method, path, this.bAsynchronic);
    if (method == 'POST') {
        this.oRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    }
    var oThis = this;
    this.oRequest.onreadystatechange = function() {
        if (oThis.oRequest.readyState == readyState) {
            if (oThis.oRequest.status == 200) {
                oThis.ResponseHandler();
            }
        }
    }
    this.oRequest.send(params);
}

function FetchFormValues(form_name)
{
    var oForm = document.getElementById(form_name);
    var aParams = new Array();
    for (var i = 0; i < oForm.length; i++) {
        var name = oForm.elements[i].name;
        var type = oForm.elements[i].type;
        var value = encodeURIComponent(oForm.elements[i].value);
        if (name) {
            if ((type == 'radio' || type == 'checkbox') && !oForm.elements[i].checked) {
                // w przypadku przyciskĂłw radiowych - pomijam wartoĹ�ci elementĂłw niezaznaczonych
                continue;
            }
            aParams.push(name + '=' + value);
        }
    }
    return aParams.join('&');
}


