﻿var Ajax = new function() {}

Ajax.DoHref = function(href, replacedivarray, completedhandler) {
    wRequest = new Sys.Net.WebRequest();
    wRequest.set_url(href);
    wRequest.set_userContext(replacedivarray);
    wRequest.add_completed(Ajax.OnSucceededAjax);

    if (completedhandler != null)
        wRequest.add_completed(completedhandler);

    wRequest.invoke();
}



Ajax.DoFormPost = function(formid, replacedivarray, bodyaddon, callbackFunction) {
    var __form = $get(formid);
    if (__form != null) {
        wRequest = new Sys.Net.WebRequest();
        wRequest.set_httpVerb("POST");
        wRequest.set_url(__form.action);
        var __body = GetPostString(__form);

        if (bodyaddon != null)
            __body += "&" + bodyaddon;

        wRequest.set_body(__body);
        wRequest.set_userContext(replacedivarray);
        if (callbackFunction == null)
            wRequest.add_completed(Ajax.OnSucceededAjax);
        else
            wRequest.add_completed(callbackFunction);
        wRequest.invoke();
    }
}

Ajax.ReplaceDivs = function (html, divsToReplace) {
    var body = document.createElement('body');

    var bodytext = GetBodyInnerHTML(html);

    body.innerHTML = bodytext;

    var sourceDivs = body.getElementsByTagName('div');

    for (var replaceDivsIndex = 0; replaceDivsIndex < divsToReplace.length; replaceDivsIndex++) {
        var id = divsToReplace[replaceDivsIndex];

        var oldElement = $get(id);
        var newElement = null;

        // Element in Ajax Response suchen
        for (var divIndex = 0; divIndex < sourceDivs.length; divIndex++) {
            var sourceDiv = sourceDivs[divIndex];
            if (sourceDiv.getAttribute('id') != null && sourceDiv.getAttribute('id') == id) {
                newElement = sourceDiv;
                break;
            }
        }

        // Element ersetzen oder löschen wenn nicht mehr vorhanden
        if (newElement != null && oldElement != null) {
            oldElement.parentNode.replaceChild(newElement, oldElement);
        }
        else if (newElement == null && oldElement != null) {
            oldElement.parentNode.removeChild(oldElement);
        }

    }
}

Ajax.OnSucceededAjax = function(executor, eventArgs) {
    if (executor.get_responseAvailable()) {
        var __html = executor.get_responseData();
        var __usercontext = executor.get_webRequest().get_userContext();

        // ggf. noch die Divs zum ZweispaltenContent hinzufügen
        if (__usercontext != null) {
            for (i = 0; i < __usercontext.length; i++) {
                var __currentDivId = __usercontext[i];
                var __currentDiv = $get(__currentDivId);
                if (__currentDiv == null) {
                    InsertFirstChildIntoZweispaltenContent(__currentDivId);
                }
            }
        }

        Ajax.ReplaceDivs(__html, __usercontext);
    }
}

