function PAjaxLib() {
    this._requestCallback = null;
}


PAjaxLib._getRequestObject = function()
{
	var requestObject = null;
	
	if(window.XMLHttpRequest) {
        requestObject = new XMLHttpRequest();
    }
    else if(window.ActiveXObject) { // IE
        try {
            requestObject = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch(e) {
            try {
                requestObject = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch(e1) {
                requestObject = null;
            }
        }
    }
    
    if(!requestObject)
		throw new Error("Your browser does not support XmlHttp objects");
    
    return requestObject;
}


PAjaxLib._stateChangeCallback = function(requestObject)
{
	try {
		if(requestObject.readyState == 4) {
			if(requestObject.status == 200) {
				PAjaxLib._requestCallback(requestObject.responseText, 1);
			} 
			else {
				PAjaxLib._requestCallback(requestObject.responseText, 2);
			}
		}
	}
	catch(e) {
		alert('Caught Exception: ' + e.description);
	}
}


PAjaxLib.prototype.invoke = function(url, callback) 
{
	if(!url)
		return null;

	var requestObject = PAjaxLib._getRequestObject();
	
	PAjaxLib._requestCallback = callback;
	
	if(typeof(PAjaxLib._requestCallback) != 'function') {
		alert('Cannot execute callback');
		return;
	}

	requestObject.onreadystatechange = function() {
			PAjaxLib._stateChangeCallback(requestObject);
		};
		
    requestObject.open('GET', url, true);
    requestObject.send('');
}	


PAjaxLib.prototype.invokePost = function(url, parameters, callback) 
{
	if(!url)
		return null;

	var requestObject = PAjaxLib._getRequestObject();
	
	PAjaxLib._requestCallback = callback;
	
	if(typeof(PAjaxLib._requestCallback) != 'function') {
		alert('Cannot execute callback');
		return;
	}

	requestObject.onreadystatechange = function() {
			PAjaxLib._stateChangeCallback(requestObject);
		};
		
	requestObject.open('POST', url, true);
	requestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	requestObject.setRequestHeader("Content-length", parameters.length);
	requestObject.setRequestHeader("Connection", "close");
	requestObject.send(parameters);
}	

