//<![CDATA[
// ----------------------------------------------------------------------------
// Verbund.js
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// Verbund-OPAC
// ----------------------------------------------------------------------------
var http = createRequestObject();

function removeFromTvTrefferArray(adapterId) {
    /// <summary>.</summary>
    /// <param name="adapterId" domElement="false" optional="false">.</param>
    var i;
    var newArray = new Array();

    for (i = 0; i < tvTrefferAdaptorenArray.length; i++) {
        if (tvTrefferAdaptorenArray[i] != adapterId) {
            newArray.push(tvTrefferAdaptorenArray[i]);
        }
    }

    tvTrefferAdaptorenArray = newArray;
}

function gotoAnker() {
    /// <summary>.</summary>
    if ("" != window.location.hash) {
        window.location.href = window.location;
    }
}

function handleResponse() {
    /// <summary>.</summary>
    var info, adapterId, finished;

    if (null != http) {
        if (4 == http.readyState) {
            try {
                if (200 == http.status) {
                    info = http.responseXML.getElementsByTagName("info");
                    adapterId = info[0].getElementsByTagName("adapterid");
                    finished = info[0].getElementsByTagName("finish");
                    fuellenVor(adapterId[0].firstChild.nodeValue);
                    removeFromTvTrefferArray(adapterId[0].firstChild.nodeValue);

                    if ("False" == finished[0].firstChild.nodeValue) {
                        start();
                    }
                    else {
                        gotoAnker();
                    }
                }
            }
            catch (ex) {
            }
        }
    }
}

function fuelleListe(id) {
    /// <summary>.</summary>
    /// <param name="id" type="String" optional="false">.</param>
    var base, newLI, i;
    var info = http.responseXML.getElementsByTagName("info");
    var ueberschrift = info[0].getElementsByTagName("ueberschrift");

    document.getElementById(id).removeChild(document.getElementById(id).firstChild);
    document.getElementById(id).innerHTML = ueberschrift[0].getAttribute("text");

    for (i = 0; i < http.responseXML.getElementsByTagName("Node").length; i++) {
        base = http.responseXML.getElementsByTagName("Node")[i];
        newLI = document.createElement("span");
        newLI.innerHTML = base.getAttribute("Text");
        document.getElementById(id).appendChild(newLI);
    }
}

function legeWarenkorb(medienNr, dbId) {
    /// <summary>.</summary>
    /// <param name="medienNr" type="" optional="false">.</param>
    /// <param name="dbId" type="" optional="false">.</param>
    var soapDispenser = new SoapCallBackObject();

    soapDispenser.serviceUrl = "../../Webservices/WSWarenkorb.asmx";
    soapDispenser.OnComplete = function(responseText, responseXML) {
        warenkorbSoapHandler(responseText, responseXML);
    };

    soapDispenser.OnError = function(status, statusText, responseText) {
        // Keine Fehlerbehandlung. Fehler passieren sowieso nicht ;-)
    };

    soapDispenser.DoCallBack("http://tempuri.org/AddToWarenkorb",
                             "<AddToWarenkorb xmlns='http://tempuri.org/'>" +
                             "<medienNr>" + medienNr + "</medienNr>" +
                             "<dbAlias>" + dbId + "</dbAlias>" +
                             "</AddToWarenkorb>");
}

function warenkorbSoapHandler(responseText, responseXML) {
    /// <summary>.</summary>
    /// <param name="responseText" type="String" optional="false">.</param>
    /// <param name="responseXML" type="String" optional="false">.</param>
    var response, neueAnzahl, elKorb;

    response = String(responseText);
    response = response.substring(response.indexOf("AddToWarenkorbResult>") + 21, response.indexOf("</AddToWarenkorbResult>"));

    neueAnzahl = parseInt(response); // +1;

    if (neueAnzahl > 0) {
        if (document.getElementById("warenkorb_count")) {
            elKorb = document.getElementById("warenkorb_count");
        }

        if (elKorb) {
            elKorb.innerHTML = neueAnzahl;
        }
    }
}

function abortsearch() {
    /// <summary>.</summary>
    if (http != null) {
        http.abort();
    }
}
// ----------------------------------------------------------------------------
// Ende Verbund-OPAC
// ----------------------------------------------------------------------------

// ----------------------------------------------------------------------------
// Vauswahl Funktionen für den Tree
// ----------------------------------------------------------------------------
function checkNode(node, checked) {
    /// <summary>.</summary>
    /// <param name="node" domElement="true" optional="false">.</param>
    /// <param name="checked" type="Boolean" optional="false">.</param>
    var i, children;

    node.SetProperty("Checked", checked);

    node.SetProperty("CssClass", "vsearch_treeview_adapter_" + node.GetProperty("Checked") ? "enabled" : "disabled");
    node.SetProperty("HoverCssClass", "vsearch_treeview_adapter_" + node.GetProperty("Checked") ? "enabled" : "disabled");

    children = node.Nodes();
    node.SaveState();

    for (i = 0; i < children.length; i++) {
        checkNode(children[i], node.GetProperty("Checked"));
    }
}

function checkParent(node) {
    /// <summary>.</summary>
    /// <param name="node" domElement="true" optional="false">.</param>
    var children = node.Nodes();
    var cssClass = "vsearch_treeview_adapter_enabled";
    var childsChecked = 0;
    var i;

    for (i = 0; i < children.length; i++) {
        if ("vsearch_treeview_adapter_disabled" == children[i].GetProperty("CssClass")) {
            cssClass = "vsearch_treeview_adapter_disabled";
        }

        if (children[i].GetProperty("Checked")) {
            childsChecked++;
        }
    }

    node.SetProperty("Checked", childsChecked > 0);
    node.SetProperty("CssClass", cssClass);
    node.SetProperty("HoverCssClass", cssClass);
    node.SaveState();

    if (node.GetParentNode()) {
        checkParent(node.GetParentNode());
    }
}

function countAllCheckedAdaptors(treeview) {
    /// <summary>.</summary>
    /// <param name="treeview" domElement="true" optional="false">.</param>
    /// <returns domElement="false" mayBeNull="false">.</returns>
    var rootNodes = treeview.Nodes();
    var counter = 0;
    var i;

    for (i = 0; i < rootNodes.length; i++) {
        counter += countCheckedAdaptors(rootNodes[i]);
    }

    return counter;
}

function countCheckedAdaptors(node) {
    /// <summary>.</summary>
    /// <param name="node" domElement="true" optional="false">.</param>
    /// <returns domElement="false" mayBeNull="false">.</returns>
    var children = node.Nodes();
    var counter = 0;
    var i;

    if (0 == children.length) {
        return node.GetProperty("Checked") ? 1 : 0;
    }

    for (i = 0; i < children.length; i++) {
        counter += countCheckedAdaptors(children[i]);
    }

    return counter;
}

function countAdaptors(node) {
    /// <summary>.</summary>
    /// <param name="node" domElement="true" optional="false">.</param>
    /// <returns domElement="false" mayBeNull="false">.</returns>
    var children = node.Nodes();
    var counter = 0;
    var i;

    if (0 == children.length) {
        return 1;
    }

    for (i = 0; i < children.length; i++) {
        counter += countAdaptors(children[i]);
    }

    return counter;
}

function controlMaxCheckedAdaptors(node) {
    /// <summary>.</summary>
    /// <param name="node" domElement="true" optional="false">.</param>
    /// <returns type="Boolean" mayBeNull="false">.</returns>
    if (!node.GetProperty("Checked")) {
        return true;
    }

    var numAdaptorsCheckedTotal = countAllCheckedAdaptors(node.ParentTreeView);
    var numAdaptorsSubtree = countAdaptors(node)
    var numNew;

    if (0 == node.Nodes().length) {
        numAdaptorsSubtree--;
    }

    numNew = numAdaptorsCheckedTotal + numAdaptorsSubtree;

    if (numNew > MAX_CHECKED_ADAPTORS) {
        window.alert(ERROR_TEXT);
    }

    return !(numNew > MAX_CHECKED_ADAPTORS);
}

function nodeCheckChanged(node) {
    /// <summary>.</summary>
    /// <param name="node" domElement="true" optional="false">.</param>
    if (controlMaxCheckedAdaptors(node)) {
        checkNode(node, node.GetProperty("Checked"));

        if (node.GetParentNode()) {
            checkParent(node.GetParentNode());
        }
    }
    else {
        node.SetProperty("Checked", false);
    }

    node.SaveState();
    node.ParentTreeView.Render();
}

// ----------------------------------------------------------------------------
// Das Suchbox klapping and sliding
// ----------------------------------------------------------------------------
function slideSuchbox() {
    /// <summary>.</summary>
    if (einklappen) {
        sucheheight = sucheheight - 10;

        document.getElementById("opac_left_column").style.overflow = "";

        if (sucheheight < 60) {
            einklappen = false;
            setCookie("suchbox_open", "0", true);
            changeHeadline();
            return;
        }
    }
    else {
        sucheheight = sucheheight + 10;

        if (sucheheight > 165) {
            einklappen = true;
            setCookie("suchbox_open", "1", true);
            changeHeadline();
            return;
        }
    }

    document.getElementById("opac_left_column").style.height = "" + sucheheight + "px";

    if (navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.indexOf("MSIE 7") == -1) {
        document.getElementById("opac_main_div").style.paddingTop = "" + (sucheheight + 40) + "px";
        document.getElementById("opac_middle_column").style.paddingTop = "" + (sucheheight - 60) + "px";
    }
    else {
        // gecko, opera, .., khtml?
        document.getElementById("opac_main_div").style.top = "" + (sucheheight + 40) + "px";
    }

    window.setTimeout("slideSuchbox()", 10);
}

function suchbox_restoreState() {
    /// <summary>.</summary>
    if (getCookie("suchbox_open") == "1") {
        einklappen = true;
        sucheheight = 160;

        document.getElementById("opac_left_column").style.height = "" + sucheheight + "px";

        if (navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.indexOf("MSIE 7") == -1) {
            document.getElementById("opac_main_div").style.paddingTop = "" + (sucheheight + 40) + "px";
            document.getElementById("opac_middle_column").style.paddingTop = "" + (sucheheight - 60) + "px";
        }
        else {
            // gecko, opera, .., khtml?
            document.getElementById("opac_main_div").style.top = "" + (sucheheight + 40) + "px";
        }
    }
    changeHeadline();
}

function vopac_onLoad() {
    /// <summary>.</summary>
    if ("undefined" != typeof (docklet_auswahl_adaptoren_auswahl_adaptoren_treeview)) {
        docklet_auswahl_adaptoren_auswahl_adaptoren_treeview.ExpandAll();
    }

    if ("undefined" != typeof (pg_docklet_auswahl_adaptoren_auswahl_adaptoren_treeview)) {
        pg_docklet_auswahl_adaptoren_auswahl_adaptoren_treeview.ExpandAll();
    }

    if ("undefined" != typeof (pg_cpContent_docklet_auswahl_adaptoren_auswahl_adaptoren_treeview)) {
        pg_cpContent_docklet_auswahl_adaptoren_auswahl_adaptoren_treeview.ExpandAll();
    }

    if ("undefined" != typeof (pg_cpContent_adaptoren_auswahl_adaptoren_treeview)) {
        pg_cpContent_adaptoren_auswahl_adaptoren_treeview.ExpandAll();
    }
}

var tmp;

function searchtab_select(event, elid, val, Ea) {
    /// <summary>.</summary>
    /// <param name="event" domElement="true" optional="false">.</param>
    /// <param name="elid" domElement="true" optional="false">.</param>
    /// <param name="val" domElement="true" optional="false">.</param>
    /// <param name="Ea" domElement="true" optional="false">.</param>
    /// <returns domElement="true" mayBeNull="true">.</returns>
    var Eul, Eali, Ehid, Eppage, Eq, i;

    Eul = document.getElementById("vsearchtabs");
    Eali = Eul.getElementsByTagName("li");

    for (i = 0; i < Eali.length; i++) {
        Eali[i].className = Eali[i] == Ea.parentNode ? "selected" : "";

        if (0 == i) {
            Eali[i].className += " first";
        }
    }

    tmp = event;

    Ehid = document.getElementById(elid + "_stabv");
    Ehid.value = val;
    Eppage = document.getElementById("opac3_ppage");

    if (Eppage == null) {
        Eq = document.getElementById(elid + "_p");

        if (Eq.value.length > 0) {
            document.getElementById("defaultsubmit").click();
        }
    }
}
// ----------------------------------------------------------------------------
// Ende Verbund.js
// ----------------------------------------------------------------------------
//]]>

