var myRequest = getXMLHttpRequest();

function getXMLHttpRequest() { 
	var request = false;
	if(typeof XMLHttpRequest != 'undefined') {
		request = new XMLHttpRequest();
	} else {
    if(window.ActiveXObject) 
        {
        try 
            {
            request = new ActiveXObject("Msxml2.XMLHTTP");
            } 
        catch(err1) 
            {
            try 
                {
                request = new ActiveXObject("Microsoft.XMLHTTP");
                } 
            catch(err2) 
                {
                request = false;
                }
            }
        }
    }
return request;
}

function callAjax(url,method,data,callBack) {
	// Assign default values if not passed
	var method = (method == null) ? "GET" : method; // Default method
	var data = (data == null) ? '' : data;  // Default POST data
	var callBack = (callBack == null) ? handleAjaxResponse : callBack; //Default callBack function
	
	// Cache breaker
	var myRandom= parseInt(Math.random()*99999999);
	if (url.indexOf('?') == -1) {
		var rUrl = url + '?rand=' + myRandom;
	} else {
		var rUrl = url + '&rand=' + myRandom;
	}
	
	myRequest.open(method, rUrl, true);
	// Set the content type in the POST request 
	if (method == 'POST') {
		myRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	}
	myRequest.onreadystatechange  = callBack;
	myRequest.send (data);
}

//  Default callback handler
function handleAjaxResponse() {
	try {
		console.debug('readyState=' + myRequest.readyState);
	} catch (err) {}
	if (myRequest.readyState == 4) {
		if (myRequest.status == 200) {
			alert('Server response: ' + myRequest.responseText);
		} else {
			alert ('An error occurred: ' + myRequest.statusText);
		}
	}
}
