// Browser-specific request object creation
function createRequestObject() {
    var ro;
    if (window.XMLHttpRequest) {
        ro = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return ro;
}

// Default callback function (if we do not need to perform a specific action once AJAX call returns)
function defaultCallback(req) {
}

// Container function
function ajaxEngine() {
}

// AJAX Call Defintion
ajaxEngine.call = function(url,callbackFunction) {
    var req = createRequestObject();
    req.onreadystatechange = function() {
        ajaxEngine.handleRequest(req,callbackFunction);
    }
    req.open("GET", url, true);
    req.send(null);
}

// AJAX Handler Defintion
ajaxEngine.handleRequest = function(req,callbackFunction) {
    if (req.readyState == 4) {
        if (req.status == 200) {
            // send data to callback function
            eval(callbackFunction + '(req)');
        } else {
            // handle error condition
        }
    }
}
