var SUCCESS = 0;
var ERROR   = -2;

function getRPC() {
    var rpc;

    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        rpc = new XMLHttpRequest();

    } else if (window.ActiveXObject) { // IE
        try {
            rpc = new ActiveXObject("Msxml2.XMLHTTP");
        } catch ( e) {
            try {
                rpc = new ActiveXObject("Microsoft.XMLHTTP");
            } catch ( e) {}
        }
    }

    return rpc;
}


function ajaxCall(parameters, callback, sync) {
    var eventHandlerCalled = false;
    var req = getRPC();

    function internalCallBack() {
        eventHandlerCalled = true;
        if (req.readyState == 4) {
            if (req.status == 200) {
                // only if "OK"
                callback(SUCCESS, req);
            /*
			} else if (req.status == 500) {
                // on Fault cases
                callback(FAULT, req);
            */
            } else {
                callback(ERROR, req);
            }
        }
    }
    req.onreadystatechange = internalCallBack;
    

    req.open("GET", "/"+parameters, sync);
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    //req.setRequestHeader("Content-length", parameters.length);
    req.setRequestHeader("Connection", "close");
    req.send(parameters);
    // check if synchronous call then call the callback function yourself
    if (sync == true && eventHandlerCalled == false) {
        internalCallBack();
    }

}

function changeLink(newUrl) {
    callback = function(status, req) {
        if (status == SUCCESS) {
       	   document.getElementById("content").innerHTML = req.responseText;
        } else {
       	   document.getElementById("content").innerHTML = "The page cannot be displayd";
    	}
     }
	ajaxCall(newUrl, callback, true);
}