/* ---------------------------------------------------------------------------------------------------
   presentation_xmlhttprequest.js $Revision: 1.2 $
   --------------------------------------------------------------------------------------------------- */

function makeHttpRequest(RequestType, RequestURL, RequestBody, ResponseType, CallbackFunction) {
// RequestType:      GET, POST
// RequestURL:       url
// RequestBody:      Content of HTTP Request (POST requests only)
// ResponseType:     false=text / true=xml
// CallbackFunction: name of the callback function
// arguments 6-X:    parameter for the callback function

    // define request variable
    var Request = false;

    // init call back parameter
    var CallbackParameter = "";            // callback parameter string
    var AryCallbackParameter= new Array(); // array with parameter values (only strings and numbers)

    for(var i=5; i < makeHttpRequest.arguments.length; i++) {
        AryCallbackParameter.push(makeHttpRequest.arguments[i]);
        CallbackParameter+=",AryCallbackParameter["+(i-5)+"]";
    }

    // init XMLHttpRequest
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        Request = new XMLHttpRequest();
        if (Request.overrideMimeType) {
            Request.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            Request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(Exception) {
            try {
                Request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(Exception) {
                RequestLog.logError("makeHttpRequest() failed: couldn't create XMLHttpRequest / browser doesn't support XMLHTTP-Requests: Exception:"+Exception);
            }
        }
    }

    if(!Request) {
        RequestLog.logError("makeHttpRequest() failed: can not initialize XMLHTTP request handler");
        return false;
    }

    // init handler
    Request.onreadystatechange = function() {
        if(Request.readyState == 4) {
            if(Request.status == 200) {
                if(ResponseType) {
                    eval(CallbackFunction + '(Request.responseXML'+CallbackParameter+')');
                } else {
                    eval(CallbackFunction + '(Request.responseText'+CallbackParameter+')');
                }
            } else {
                RequestLog.logError("Request.onreadystatechange() failed: There was a problem with the request.(Code: " + Request.status + ")");
            }
        }
    }

    // send request

    try {
        Request.open(RequestType, RequestURL, true);
    } catch (Exception) {
        RequestLog.logError("makeHttpRequest() failed: "+ Exception);
    }

    if(RequestType="POST") {
        Request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        Request.send(RequestBody);
    } else {
        Request.send(null);
    }

}

/* ---- log errors -----------------------------------------------------------------------
   Usage: enter "javascript:RequestLog.showErrors();" in url bar
   --------------------------------------------------------------------------------------- */

function epagesRequestLog() {
    this.Errors= new Array();
    this.logError = function(ErrorMessage) {
        this.Errors.push(ErrorMessage);
    }

    this.showErrors = function() {
        var ErrorString="";
        for(var i=0; i<this.Errors.length; i++) {
            ErrorString+=this.Errors[i]+'\n';
        }
        alert("Errors:"+this.Errors.length+"\n"+ErrorString);
    }
}

var RequestLog = new epagesRequestLog();
/* ---------------------------------------------------------------------------------------------------
   presentation_xmlhttprequest.js $Revision: 1.2 $
   --------------------------------------------------------------------------------------------------- */

function makeHttpRequest(RequestType, RequestURL, RequestBody, ResponseType, CallbackFunction) {
// RequestType:      GET, POST
// RequestURL:       url
// RequestBody:      Content of HTTP Request (POST requests only)
// ResponseType:     false=text / true=xml
// CallbackFunction: name of the callback function
// arguments 6-X:    parameter for the callback function

    // define request variable
    var Request = false;

    // init call back parameter
    var CallbackParameter = "";            // callback parameter string
    var AryCallbackParameter= new Array(); // array with parameter values (only strings and numbers)

    for(var i=5; i < makeHttpRequest.arguments.length; i++) {
        AryCallbackParameter.push(makeHttpRequest.arguments[i]);
        CallbackParameter+=",AryCallbackParameter["+(i-5)+"]";
    }

    // init XMLHttpRequest
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        Request = new XMLHttpRequest();
        if (Request.overrideMimeType) {
            Request.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            Request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(Exception) {
            try {
                Request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(Exception) {
                RequestLog.logError("makeHttpRequest() failed: couldn't create XMLHttpRequest / browser doesn't support XMLHTTP-Requests: Exception:"+Exception);
            }
        }
    }

    if(!Request) {
        RequestLog.logError("makeHttpRequest() failed: can not initialize XMLHTTP request handler");
        return false;
    }

    // init handler
    Request.onreadystatechange = function() {
        if(Request.readyState == 4) {
            if(Request.status == 200) {
                if(ResponseType) {
                    eval(CallbackFunction + '(Request.responseXML'+CallbackParameter+')');
                } else {
                    eval(CallbackFunction + '(Request.responseText'+CallbackParameter+')');
                }
            } else {
                RequestLog.logError("Request.onreadystatechange() failed: There was a problem with the request.(Code: " + Request.status + ")");
            }
        }
    }

    // send request

    try {
        Request.open(RequestType, RequestURL, true);
    } catch (Exception) {
        RequestLog.logError("makeHttpRequest() failed: "+ Exception);
    }

    if(RequestType="POST") {
        Request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        Request.send(RequestBody);
    } else {
        Request.send(null);
    }

}

/* ---- log errors -----------------------------------------------------------------------
   Usage: enter "javascript:RequestLog.showErrors();" in url bar
   --------------------------------------------------------------------------------------- */

function epagesRequestLog() {
    this.Errors= new Array();
    this.logError = function(ErrorMessage) {
        this.Errors.push(ErrorMessage);
    }

    this.showErrors = function() {
        var ErrorString="";
        for(var i=0; i<this.Errors.length; i++) {
            ErrorString+=this.Errors[i]+'\n';
        }
        alert("Errors:"+this.Errors.length+"\n"+ErrorString);
    }
}

var RequestLog = new epagesRequestLog();

