/**
* @desc Anfrage senden
*
* Sendet eine GET Anfrage an das serverseitige Script [url]. [url]
* muss eine gültige URL mit allen vom Script benötigten Variablen sein.
* Der Response wird per XML zurückgegeben
*
* @param string Elementname
* @param string Url
* @param string Funktionname
* @return void
*/
function AbfPerformXMLRequest(AbfElement, AbfUrl, AbfFunktion) {
    if(window.XMLHttpRequest){
        // IE7, Mozilla, Safari, etc.
        var xmlhttp = new XMLHttpRequest();
    }
    else{
        // ActiveX Control für IE5.x und IE6
        var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    xmlhttp.open("GET", AbfUrl, true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            var AbfFunktion = new Function("AbfElement, AbfResponse", "document.getElementById(AbfElement).innerHTML = decodeURI(AbfResponse);");
            try {
                AbfFunktion(AbfElement, encodeURI(xmlhttp.responseXML));
            }
            catch(e){
                alert('Fehler beim abfüllen der XML-Daten (Element: ' + AbfElement + ')');
            }
            
        }
    };
    xmlhttp.send(null);
}

/**
* @desc Anfrage senden
*
* Sendet eine GET Anfrage an das serverseitige Script [AbfUrl]. [AbfUrl]
* muss eine gültige URL mit allen vom Script benötigten Variablen sein.
* Der Response wird als HTML Code zurückgegeben
*
* @param string Elementname
* @param string Url
* @param string Funktionname
* @return void
*/
function AbfPerformHtmlRequest(AbfElement, AbfUrl, AbfFunktion) {
    if(window.XMLHttpRequest){
        // IE7, Mozilla, Safari, etc.
        var xmlhttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject){
    	// ActiveX Control für IE5.x und IE6
    	try { // Versuch zum erzeugen des neueren Objekts
            var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) { //Wenn die erzeugung fehlgeschlagen ist. Älteres Objekt versuchen.
            try {
                var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    // Daten der angegebenen Seite selektieren
    xmlhttp.open("GET", AbfUrl, true);

    // Nach dem selektieren angegebene Funktion ausführen
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            var AbfFunktion = new Function("AbfElement, AbfResponse", "document.getElementById(AbfElement).innerHTML = decodeURI(AbfResponse);");
            try {
                AbfFunktion(AbfElement, encodeURI(xmlhttp.responseText));
                //window.status = 'Element ' + AbfElement + ' erfolgreich geladen';
            }
            catch(e){
                alert('Fehler beim abfüllen des HTML Codes (Element: ' + AbfElement + ')');
            }
        }
    };
    xmlhttp.send(null);
}

/**
* @desc Anfrage senden
*
* Sendet eine GET Anfrage an das serverseitige Script [AbfUrl]. [AbfUrl]
* muss eine gültige URL mit allen vom Script benötigten Variablen sein.
* Der Response wird als Text zurückgegeben
*
* @param string Elementname
* @param string Url
* @param string Funktionname
* @return void
*/
function AbfPerformTextRequest(AbfElement, AbfUrl, AbfFunktion) {
    if(window.XMLHttpRequest){
        // IE7, Mozilla, Safari, etc.
        var xmlhttp = new XMLHttpRequest();
    }
    else{
        // ActiveX Control für IE5.x und IE6
        var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    // Daten der angegebenen Seite selektieren
    xmlhttp.open("GET", AbfUrl, true);

    // Nach dem selektieren angegebene Funktion ausführen
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            var AbfFunktion = new Function("AbfElement, AbfResponse", "document.getElementById(AbfElement).innerText = decodeURI(AbfResponse);");
            try {
                AbfFunktion(AbfElement, encodeURI(xmlhttp.responseText));
            }
            catch(e){
                alert('Fehler beim abfüllen des Textes (Element: ' + AbfElement + ')');
            }
        }
    };
    xmlhttp.send(null);
}

/**
* @desc Anfrage senden
*
* Sendet eine GET Anfrage an das serverseitige Script [AbfUrl]. [AbfUrl]
* muss eine gültige URL mit allen vom Script benötigten Variablen sein.
* Der Response wird als Text zurückgegeben
*
* @param string Elementname
* @param string Url
* @param string Funktionname
* @return void
*/
function AbfPerformValueRequest(AbfElement, AbfUrl, AbfFunktion) {
    if(window.XMLHttpRequest){
        // IE7, Mozilla, Safari, etc.
        var xmlhttp = new XMLHttpRequest();
    }
    else{
        // ActiveX Control für IE5.x und IE6
        var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    // Daten der angegebenen Seite selektieren
    xmlhttp.open("GET", AbfUrl, true);

    // Nach dem selektieren angegebene Funktion ausführen
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            var AbfFunktion = new Function("AbfElement, AbfResponse", "document.getElementById(AbfElement).value = decodeURI(AbfResponse);");
            try {
                AbfFunktion(AbfElement, encodeURI(xmlhttp.responseText));
            }
            catch(e){
                alert('Fehler beim abfüllen des Textes (Element: ' + AbfElement + ')');
            }
        }
    };
    xmlhttp.send(null);
}

function isXMLHTTPCompatible(){
    return Sarissa.IS_ENABLED_XMLHTTP;
}
