
var contextPath = null;
var req = null;

function ajaxInit(path) {
    contextPath = path;
}

function ajaxLogin(formName) {
    var url = contextPath + '/ajax-login.do?' + getFormParameters(formName);
    req = createAJAXRequest();
    if (req) {
        req.onreadystatechange = processLogin;
        executeAJAXRequest(req, url);
    }
}

function processLogin() {
    if (req.readyState == 4) { // Complete
        if (req.status == 200) { // OK response
            var menuAccountCont = document.getElementById('ajax-menu-account');

            if (menuAccountCont) {
                menuAccountCont.innerHTML = req.responseText;
            }
            ajaxGetCart(contextPath + '/ajax-get-cart.do');
        }
        else {
            showErrorMsg('Die Anmeldung konnte nicht ausgeführt werden: ' + req.statusText);
        }
    }
}

function ajaxGetCart(url) {
    req = createAJAXRequest();
    if (req) {
        req.onreadystatechange = processShowCart;
        executeAJAXRequest(req, url);
    }
}

function processShowCart() {
    if (req.readyState == 4) { // Complete
        if (req.status == 200) { // OK response
            var menuCartCont = document.getElementById('ajax-menu-cart');

            if (menuCartCont) {
                menuCartCont.innerHTML = req.responseText;
            }
        }
    }
}

function ajaxAddToCart(formName) {
    var url = contextPath + '/ajax-add-to-cart.do?' + getFormParameters(formName);

    req = createAJAXRequest();
    if (req) {
        req.onreadystatechange = processAddToCart;
        executeAJAXRequest(req, url);
    }
}

function processAddToCart() {
    if (req.readyState == 4) { // Complete
        if (req.status == 200) { // OK response
            var menuCartCont = document.getElementById('ajax-menu-cart');

            if (menuCartCont) {
                menuCartCont.innerHTML = req.responseText;
                showInfoMsg('Der Artikel wurde in Ihren Warenkorb gelegt.');
            }
        }
        else {
            showErrorMsg('Der Artikel konnte nicht in den Warenkorb gelegt werden: ' + req.statusText);
        }
    }
}

function ajaxSetOrderState(formName) {
    var url = contextPath + '/admin/ajax-set-order-state.do?' + getFormParameters(formName);

    req = createAJAXRequest();
    if (req) {
        req.onreadystatechange = processSetOrderState;
        executeAJAXRequest(req, url);
    }
}

function processSetOrderState() {
    if (req.readyState == 4) { // Complete
        if (req.status == 200) { // OK response
            showInfoMsg('Der Status wurde erfolgreich ge&auml;ndert.');
        }
        else {
            showErrorMsg('Der Status konnte nicht ge&auml;ndert werden: ' + req.statusText);
        }
    }
}

var videoContId;

function ajaxShowVideo(divId, videoURL) {
    videoContId = divId;
    req = createAJAXRequest();
    if (req) {
        req.onreadystatechange = processShowVideo;
        executeAJAXRequest(req, videoURL);
    }
}

function processShowVideo() {
    if (req.readyState == 4) { // Complete
        if (videoContId && (req.status == 200)) { // OK response
            var videoCont = document.getElementById(videoContId);

            if (videoCont) {
                videoCont.innerHTML = req.responseText;
            }
        }
        else {
            showErrorMsg('Das Video kann nicht abgespielt werden: ' + req.statusText);
        }
    }
}

function createAJAXRequest() {
      if (window.XMLHttpRequest) { // Non-IE browsers
        return new XMLHttpRequest();
    }
    else if (window.ActiveXObject) { // IE
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    else {
        return null;
    }
}

function executeAJAXRequest(req, url) {
      if (window.XMLHttpRequest) { // Non-IE browsers
        try {
            req.open("GET", url, true);
        }
        catch (e) {
        }
        req.send(null);
    }
    else if (window.ActiveXObject) { // IE
        req.open("GET", url, true);
        req.send();
    }
}

function getFormParameters(formName) {
    var returnString = "";
    var formElements = document.forms[formName].elements;

    for(var i = 0; i < formElements.length; i++) {
        returnString += escape(formElements[i].name) + "=" + escape(formElements[i].value) + "&";
     }

     return returnString;
}
