//#################################################################################################################
//#                                                                                                               #
//# Datei:            ajax.js                                                                                     #
//#                                                                                                               #
//# Beschreibung:     Alle Funktionen um die AJAX-Funktionalität bereit zu stellen.                               #
//#                                                                                                               #
//# Autor:            Marco Glietsch                                                                              #
//#                                                                                                               #
//# Version:          1.0                                                                                         #
//#                                                                                                               #
//# Erstellt:         11.09.2006                                                                                  #
//#                                                                                                               #
//# Letzte Änderung:  11.09.2006                                                                                  #
//#                                                                                                               #
//#################################################################################################################


//#################################################################################################################
//#                                                                                                               #
//# Funktion:     initajax()                                                                                      #
//#                                                                                                               #
//# Beschreibung: Diese Funktion initialisiert die Routinen die erforderlich sind, wenn man die                   #
//#               AJAX-Funktionalität benutzen will                                                               #
//#                                                                                                               #
//# Rückgabewert: Die Funktion gibt den Javascript-Code zurück, der für die AJAX-Funktionalität nötig ist.        #
//#               Der Code muss im Header der HTML-Datei stehen.                                                  #
//#                                                                                                               #
//#################################################################################################################

// doRequest(url) Erzeugt ein Requestobjekt abhängig vom Browser
// und stellt eine Anfrage an die übergebene URL
function doRequest(url, target){
    var request = new createRequest();
    // Eine Callbackfunction wird angegeben,
    // die auf events des Request Objekts reagieren soll.

    request.open('GET', url, true);
    request.onreadystatechange = function () {
        if (request.readyState == 4) {
            if(request.status == 200){
                if(target){
                    ergebnisdiv = document.getElementById(target);
                    ergebnisdiv.innerHTML=request.responseText;
                }else{
                    return request.responseText;
                }
            }else{
                alert('Die URL konnte nicht geöffnet werden.');
            }
        }
    }
    request.send(null);
}


// Wie doRequest, nur aktualisiert diese Funktion anschließend wichtige Teile des Systems
function doActualRequest(url){
    var request = new createRequest();
    // Eine Callbackfunction wird angegeben,
    // die auf events des Request Objekts reagieren soll.

    request.open('GET', url, true);
    request.onreadystatechange = function () {
        if (request.readyState == 4) {
            if(request.status == 200){
                // Explorer und Navigation aktualisieren
                var path    = document.getElementById('explorer').getAttribute('currentPath');

                // Navigationsleiste initialisieren
                doRequest('includes/kernel/main.php?action=refreshNaviMenu&parentID=0', 'Navi_Menu');

                // Explorer initialisieren
                doRequest('includes/kernel/main.php?action=explorer_refresh&parentID='+path, 'Explorer');

                // Adressleiste initialisieren
                doRequest('includes/kernel/main.php?action=adressbar_refresh&parentID='+path, 'adressbar');
            }else{
                alert('Die URL konnte nicht geöffnet werden.');
            }
        }
    }
    request.send(null);
}


// doRequestDatabase()
// Überprüft, ob ein Objekt bereits vorhanden ist und erstellt es ggf.
// query        - Die Datenbankabfrage
// winID        - die ID des betroffenen Fensters
// newwindow    - ggf. ein Fenster das nach erfolgter Datenbankabfrage geöffnet werden soll. newwindow ist hierbei der Name der Vorlage
// newtitle     - Der Titel des neuen Fensters
// DataID       - Die ID des Datensatzes
function doRequestDatabase(query, winID, newwindow, newtitle){
    var request = new createRequest();
    var url     = 'includes/kernel/main.php?action=MysqlQuery&query='+query;

    request.open('GET', url, true);
    request.onreadystatechange = function () {
	    if (request.readyState == 4) {
            if(request.status == 200){
 alert(request.responseText);
                var DataID  = request.responseText;
                // Explorer und Navigation aktualisieren
                var path    = document.getElementById('explorer').getAttribute('currentPath');

                // Navigationsleiste initialisieren
                doRequest('includes/kernel/main.php?action=refreshNaviMenu&parentID=0', 'Navi_Menu');

                // Explorer initialisieren
                doRequest('includes/kernel/main.php?action=explorer_refresh&parentID='+path, 'Explorer');

                // Adressleiste initialisieren
                doRequest('includes/kernel/main.php?action=adressbar_refresh&parentID='+path, 'adressbar');

                // ggf. altes Fenster schließen
                if(winID){
                    closeWindow(winID, 0);
                }
                // ggf. neues Fenster öffnen
                if(newwindow){
                    var windowID = createContainer('200', '200' , '100', '500', '400');
                    doRequest('includes/kernel/main.php?action=explorer_drawwindow&winID='+windowID+'&tpl='+newwindow+'&title='+newtitle+'&ID='+DataID, windowID);
                }
                //alert(request.responseText);
            }else{
        		alert('Die URL konnte nicht geöffnet werden.');
        	}
        }
    }
    request.send(null);
}


function createRequest(){
    try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){}
    try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(e){}
    try{http_request = new XMLHttpRequest();
        if(http_request.overrideMimeType){
          //Das Ergebnis soll als HTML-Dokument betrachtet werden.
          http_request.overrideMimeType('text/html');
        }
        return http_request;
    }catch(e){}
    return false;
}

