/*************************************************
* Globale Variablen
*************************************************/
var http_request = createRequestObject();
var queue = new Array();



/*************************************************
* createRequestObject
* ------------------------------------------------
* Request-Objekt erstellen
*************************************************/
function createRequestObject() {
    var reqObj;

    if (window.XMLHttpRequest) {
        reqObj = new XMLHttpRequest();

        if (reqObj.overrideMimeType) {
            reqObj.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            reqObj = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                reqObj = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {

            }
        }
    }

    if (!reqObj) {
        alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
        return false;
    }

    return reqObj;
}




/*************************************************
* sendRequest
* ------------------------------------------------
* Absenden eines Http-Requests
* ------------------------------------------------
* url                 // URL für die Anfrage
* queryString // Daten für Post-Anfrage
*                            // (var=wert;...)
* respFunc        // Funktion zur Verarbeitung der
*                            // Antwort
**************************************************/
function sendRequest(url, queryString, respFunc) {

    /* Request Daten in die Warteschlange setzen, falls der vorherige noch nicht abgeschlossen ist */
    if(http_request.readyState == 1 || http_request.readyState == 2 || http_request.readyState == 3) {
        queueLength = queue.length;
        queue[queueLength] = new Array();
        queue[queueLength][0] = url;
        queue[queueLength][1] = queryString;
        queue[queueLength][2] = respFunc;

        //showHideLoader(true);
    } else {
        if(queryString == "") {
            http_request.open('GET', url, true);
        } else {
            http_request.open('POST', url, true);
            http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            http_request.send(queryString);
        }

        http_request.onreadystatechange = function() {
            if(http_request.readyState == 2) {
                showHideLoader(true);
            }

            if(http_request.readyState == 4) {
                if(http_request.status == 200) {
                    // Funktion handleResponse muss in js-Datei (bsp. ajax_research.js) des jeweiligen Moduls vorhanden sein
                    handleResponse(respFunc);
                }
                else if(http_request.status == 404) {
                    alert('Bei dem Request ist ein Problem aufgetreten: 404');
                    showHideLoader(false);
                }


                /* Warteschlange abarbeiten */
                queueLength = queue.length;
                if(queueLength != 0) {
                    sendRequest(queue[0][0], queue[0][1], queue[0][2]);
                    queue.shift(); //Erstes Element entfernen, den Rest eine Position nach vorne rücken
                }
            }
        };

        if(queryString == "") {
            http_request.send(null);
        }
    }
}



/*************************************************
* showHideLoader
* ------------------------------------------------
* Loader ein-, ausblenden
* ------------------------------------------------
* loaderOn    // true für ein-, false für ausblenden
*************************************************/
function showHideLoader(loaderOn) {
    if(document.getElementById('loader')) {
        if(loaderOn == true) {
            document.getElementById('loader').style.visibility = "visible";
        } else {
            document.getElementById('loader').style.visibility = "hidden";
        }
    }
}

function ShowHideWindowLayer(mode) {
    var wid1    = "windowLayer";
var wid0    = "windowLayerLayer";

    var wid2    = "viewLayer";
    var wid3    = "flippingbook";

    var vis           = (mode == 'none' ? 'visible' : 'hidden');
    var mode_invert   = (mode == 'none' ? 'flippingbook_container' : 'flippingbook_container_zoom');

    // Layer
    if (document.getElementById(wid0)) {
        document.getElementById(wid0).style.display = mode;
    }
    if (document.getElementById(wid1)) {
        document.getElementById(wid1).style.display = mode;
    }
    if (document.getElementById(wid2)) {
        document.getElementById(wid2).style.display = mode;
    }
    if (document.getElementById(wid3)) {
        document.getElementById(wid3).className = mode_invert;
    }

    if (browser=="_ie63") {
        for (var i=0;i<document.xform.elements.length;i++) {
            var e = document.xform.elements[i];
            if ( (e.options) ) {
                e.style.visibility = vis;
            }
        }
    }
}




/*************************************************
* handleResponse
* ------------------------------------------------
* Funktion zum Abarbeiten der Antwort aufrufen
*************************************************/
function handleResponse(respFunc) {
    if(window.ActiveXObject) { // If IE Windows
        var XMLdoc = new ActiveXObject("Microsoft.XMLDOM");
        XMLdoc.loadXML(http_request.responseText);
    } else {
        var XMLdoc = http_request.responseXML;
    }

    if(respFunc == "handleGetZoomData") {
        handleGetZoomData(http_request.responseText);
    }

    //showHideLoader(false);
}


function getZoomData(zoomId) {
    //var paraStr   = "zoomId="+zoomId+"&blank=1";

    //sendRequest("popup.php", paraStr, "handleGetZoomData");
    handleGetZoomData('<img src="'+zoomId+'" alt="" />');
}


function handleGetZoomData(response) {
    var viewImage   = document.getElementById('viewImage');
    viewImage.innerHTML = response;
}


function openZoom(id) {
    ShowHideWindowLayer('inline');
    getZoomData(id);
}


function closeZoom() {
    ShowHideWindowLayer('none');

    // Content-Container leeren
    var viewContent = document.getElementById('viewImage');
    while(viewContent.hasChildNodes()) {
        viewContent.removeChild(viewContent.firstChild);
    }
}

