﻿function GetCart() {
    AjaxRequest(ajaxServiceURL, 
        "cart", 
        "mth:get;", 
        RefreshCart);
}

function EditCart() {
    var elements = document.getElementsByName('tQnt');
    var query = "";
    for(var i=0; i<elements.length; i++) 
    {
        if (isNaN(elements[i].value)) {
            elements[i].select();
            elements[i].focus();
            ShowMessage("msgCart", "Falsche Eingabe: Anzahl!");
            return false;
        }
        query += "SCP_" + elements[i].id.substring(4, elements[i].id.length) + ":" + elements[i].value + ";";
    }
    var newElemQnt = document.getElementById('newQnt');
    var newElemPro = document.getElementById('newPro');

    if (newElemQnt && newElemPro) {
        var newQnt = newElemQnt.value;
        var newPro = newElemPro.value.replace(/[^0-9]/g, "");
        if (!isNaN(newQnt) && !isNaN(newPro)) 
        {
            query += "New_" + newPro + ":" + newQnt + ";";
        }
    }
    AjaxRequest(ajaxServiceURL, 
        "cart", 
        "" + query + "mth:edit;", 
        RefreshCart);
}

function RefreshCart() {
    if ((ajaxRequest1.readyState == 4) && (ajaxRequest1.status == 200)) {
        
        var divMsg = document.getElementById("divWLMessages");
        if(divMsg != null)
        {
            divMsg.style.visibility = "hidden";
            divMsg.style.display = "none";
        }
        
        var cart = document.getElementById("tabCart");
        var cartBody = null;
        if(cart.childNodes[0].nodeName.toUpperCase() == "TBODY") {
            cartBody = cart.childNodes[0];
        }
        var cartNew = document.getElementById("trCartNew");
        // remove new product line
        cartNew.parentNode.removeChild(cartNew);
        
        var nodes = ajaxRequest1.responseXML.getElementsByTagName("cart").item(0);
        var bgcolor = "";

        for (var i = 0; i < nodes.childNodes.length; i++) 
        {
            if (nodes.childNodes[i].nodeName != "#text") 
            {
                var scp = new String(nodes.childNodes[i].getAttribute("scp"));
                switch(nodes.childNodes[i].tagName.toUpperCase()) {
                    case "UPD":
                        document.getElementById("tQnt" + scp).value = nodes.childNodes[i].getAttribute("qnt");
                        document.getElementById("tAva" + scp).innerHTML = nodes.childNodes[i].getAttribute("ava");
                        document.getElementById("tPrc" + scp).innerHTML = nodes.childNodes[i].getAttribute("prc");
                        break;
                    case "NEW":
                        var tr = GetCartRow(nodes.childNodes[i], scp);
                        if(cartBody != null) 
                        {
                            cartBody.appendChild(tr);
                        } else {
                            cart.appendChild(tr);
                        }

                        break;
                    case "DEL":
                        var trDel = document.getElementById("trPos" + scp);
                        if (trDel) {
                            trDel.parentNode.removeChild(trDel);
                        }
                        break;
                }
            }
        }
        
        for(var k=1;k<cart.rows.length;k++)
        { 
            if(k % 2 == 1)
                cart.rows[k].className = "light";
            else
                cart.rows[k].className = "white";
        }
        cartNew.className = "white";

        // cart messages
        var nodes = ajaxRequest1.responseXML.getElementsByTagName("cartmsg").item(0);
        var divMsg = document.getElementById("divCartMessages");
        divMsg.innerHTML = "";
        if (nodes != null) {
            for (var i = 0; i < nodes.childNodes.length; i++) 
            {
                if (nodes.childNodes[i].nodeName != "#text") 
                    {
                    var msgType = new String(nodes.childNodes[i].getAttribute("type"));
                    var msg = document.createElement("div");
                    //msg.className = msgType;
                    msg.innerHTML = nodes.childNodes[i].firstChild.nodeValue;
                    divMsg.appendChild(msg);
                }
            }
            //divMsg.className="infoMessage";
            divMsg.style.visibility = "visible";
            divMsg.style.display = "block";
        }
        else
        {
            divMsg.style.visibility = "hidden";
            divMsg.style.display = "none";
        }

        // show/hide services
        var services = new Array(5);
        var cnt = 0;
        var tableChild = null;
        if(cartBody == null) {
            tableChild = cart;
        } else {
            tableChild = cartBody;
        }
        for (var i = tableChild.childNodes.length - 1; i > 0 ; i--) 
        {
            var tmpTR = tableChild.childNodes[i];
            if(tmpTR.getAttribute("service") && tmpTR.getAttribute("service").toUpperCase() == "1") 
            {
                services[cnt] = tmpTR;
                tmpTR.parentNode.removeChild(tmpTR);
                cnt ++;
            }
        }
        for(var i = 0; i < services.length; i++) {
            if (services[i] != null) {
                tableChild.appendChild(services[i]);
            }
        }
        
        if(cartBody != null) {
            cartBody.appendChild(cartNew);
        } else {
            cart.appendChild(cartNew);
        }
        

        // radio buttons dispatchmode
        nodes = ajaxRequest1.responseXML.getElementsByTagName("dis").item(0);
        RefreshDispatchMode(nodes);
        
        // radiobuttons paymentmethod
        var nodes = ajaxRequest1.responseXML.getElementsByTagName("pam").item(0);
        RefreshPaymentMethod(nodes);

        //update totals
        var nodes = ajaxRequest1.responseXML.getElementsByTagName("cartbox").item(0);
        var qnt = nodes.getElementsByTagName("qnt").item(0).firstChild.nodeValue;
        var vat = nodes.getElementsByTagName("vat").item(0).firstChild.nodeValue;
        var totCart = nodes.getElementsByTagName("tot").item(0).firstChild.nodeValue;
        var totCartIncl = nodes.getElementsByTagName("totVat").item(0).firstChild.nodeValue;
        
        document.getElementById("tPosQnt").innerHTML = qnt;
        
        if(document.getElementById("tExclVAT") != null) 
        {
            document.getElementById("tExclVAT").innerHTML = totCart;
            document.getElementById("tVAT").innerHTML = vat;
            document.getElementById("tPosAnt").innerHTML = totCartIncl;
        }
        else
        {
            document.getElementById("tPosAnt").innerHTML = totCart;
        }
        CalcCart(ajaxRequest1.responseXML.getElementsByTagName("cartsummary").item(0));
        document.getElementById("lblCartQuantity").innerHTML = qnt;
        document.getElementById("lblCartValue").innerHTML = totCart;
        
        document.getElementById("newQnt").value="...";
        document.getElementById("newPro").value="...";
    }
    else if (ajaxRequest1.readyState == 4) {
        alert("cart.js RefreshCart: " + ajaxRequest1.status);
    }
}

function GetCartRow(node, scp) {
    var tr = document.createElement("tr");
    tr.setAttribute("id", "trPos" + scp);
    var tcqnt = document.createElement("td");
        var iqnt;
            try {
                iqnt = document.createElement("<input name='tQnt' type='input' />");
            } catch (e) {
                iqnt = document.createElement("input");
                iqnt.setAttribute("name", "tQnt");
                iqnt.setAttribute("type", "input");
            }
            iqnt.setAttribute("name", "tQnt");
            iqnt.type = "text";
            iqnt.maxLength=3;
            iqnt.width=30;
            iqnt.size = 3;
            iqnt.setAttribute("id", "tQnt" + scp);
            iqnt.setAttribute("value", node.getAttribute("qnt"));
            iqnt.setAttribute("onclick", "this.select();");
    tcqnt.appendChild(iqnt);
    
    var tcdel = document.createElement("td");
        var img = new Image();
            img.setAttribute("scp", scp.valueOf());
            img.src = "../App_Themes/" + theme + "/gfx/icn_delete.gif";
            img.setAttribute("onclick", "document.getElementById('tQnt" + scp.valueOf() + "').value=0;"); //"SetQuantityToZero('" + scp.valueOf() + ",');");
            img.style.cursor = "pointer";
            img.setAttribute("align", "center");
    tcdel.appendChild(img);
    if (img.addEventListener) {
        img.addEventListener("onclick", SetQuantityToZero, false);
        iqnt.addEventListener("onclick", function () {iqnt.select();}, false);
    } else if (img.attachEvent) { 
        img.attachEvent("onclick", SetQuantityToZero);
        iqnt.attachEvent("onclick", function () {iqnt.select();});
    } else {
        img.onclick = SetQuantityToZero;
        iqnt.onclick = function () {iqnt.select();};
    }

    var tcpro = document.createElement("td");
        var apro = document.createElement("a");
        apro.className="textSmall";
        apro.href = node.getAttribute("lnk");
        apro.appendChild(document.createTextNode(node.getAttribute("pro")));
    tcpro.appendChild(apro);

    var tcname = document.createElement("td");
        var anam = document.createElement("a");
        anam.href = node.getAttribute("lnk");
        anam.appendChild(document.createTextNode(node.getAttribute("dsc")));
    tcname.appendChild(anam);

    var tcava = document.createElement("td");
    tcava.appendChild(document.createTextNode(node.getAttribute("ava")));
    tcava.setAttribute("id", "tAva" + scp.valueOf());

    var tcprice = document.createElement("td");
        tcprice.align="right";
    tcprice.appendChild(document.createTextNode(node.getAttribute("prc")));
    tcprice.setAttribute("id", "tPrc" + scp.valueOf());
    
    tr.appendChild(tcqnt);
    tr.appendChild(tcdel);
    tr.appendChild(tcpro);
    tr.appendChild(tcname);
    tr.appendChild(tcava);
    tr.appendChild(tcprice);
    
    return tr;
}

function OnOptionsChange(sender) {
    var optid = sender.id.substring(1, 4).toLowerCase();
    AjaxRequest(ajaxServiceURL, 
        "cart", 
        optid + ":" + sender.value + ";mth:opt;", 
        RefreshCartOptions);
}

function RefreshCartOptions() {
    if ((ajaxRequest1.readyState == 4) && (ajaxRequest1.status == 200)) {
        var nodes = ajaxRequest1.responseXML.getElementsByTagName("pam").item(0);
        RefreshPaymentMethod(nodes);
        nodes = ajaxRequest1.responseXML.getElementsByTagName("dis").item(0);
        RefreshDispatchMode(nodes);
        CalcCart(ajaxRequest1.responseXML.getElementsByTagName("cartsummary").item(0));
    }
}

function RefreshPaymentMethod(nodes) {
    for(var i = 0; i < nodes.childNodes.length; i++) 
    {
        if (nodes.childNodes[i].nodeName != "#text") 
        {
            var node = nodes.childNodes[i];
            var elem = document.getElementById("rPay" + node.getAttribute("id"));
            var elemPrice = document.getElementById("nPay" + node.getAttribute("id"));
            elemPrice.innerHTML = node.firstChild.nodeValue;
            if (node.getAttribute("Checked") == "true") {
                elem.checked = true;
                elem.style.fontWeight = "bold";
                elemPrice.style.fontWeight = "bold";
                elem.parentNode.nextSibling.style.fontWeight="bold";
            }
            else
            {
                elem.checked = false;
                elem.style.fontWeight = "normal";
                elemPrice.style.fontWeight = "normal";
                elem.parentNode.nextSibling.style.fontWeight="bold";
            }
            if(node.getAttribute("Disabled") == "true") 
            {
                elem.disabled = true;
                elem.style.fontWeight = "normal";
                elemPrice.style.fontWeight = "normal";
                elem.parentNode.nextSibling.style.fontWeight="normal";
            }
            else
            {
                elem.disabled = false;
            }
        }
    }
}

function RefreshDispatchMode(nodes)
{
    var elements = document.getElementsByName("rDis");
    var cclass=false;
    for(var i = 0; i < nodes.childNodes.length; i++) 
    {

        if (nodes.childNodes[i].nodeName != "#text") 
        {

            var node = nodes.childNodes[i];
            var elem = document.getElementById("rDis" + node.getAttribute("id"));
            var elemPrice = document.getElementById("nDis" + node.getAttribute("id"));
            if(elem) {
                if (node.getAttribute("Checked") == "true") {
                    elem.checked = true;
                    elemPrice.style.fontWeight = "bold";
                }
                else
                {
                    elem.checked = false;
                    elemPrice.style.fontWeight = "normal";
                }


            }
            if (elem) {
                if(node.getAttribute("Disabled") == "true") 
                {
                    elem.disabled=true;
                    elem.selected=false;
                    elemPrice.style.fontWeight = "normal";
                }
                else if(node.getAttribute("Visible") == "false")
                {
                    elem.parentNode.parentNode.style.visibility="hidden";
                    elem.parentNode.parentNode.style.display="none";
                }
                else
                {
                    elem.disabled=false;
                    elem.parentNode.parentNode.style.visibility="visible";
                    elem.parentNode.parentNode.style.display="";
                    if(cclass)
                    {
                        elem.parentNode.parentNode.className="white";
                        cclass=false;
                    }
                    else
                    {
                        elem.parentNode.parentNode.className="light";
                        cclass=true;
                    }
                }
            }
        }
    }
}

function CalcCart(nodes) {
    var amountPos = parseFloat(document.getElementById('tPosAnt').innerHTML);
    var dis = document.getElementsByName('rDis');
    var pay = document.getElementsByName('rPay');
    var rndDiff = nodes.getElementsByTagName("sumRDiff").item(0).firstChild.nodeValue;
    document.getElementById('tSumCrt').innerHTML = nodes.getElementsByTagName("sumCrt").item(0).firstChild.nodeValue;
    document.getElementById('tSumDis').innerHTML = nodes.getElementsByTagName("sumDis").item(0).firstChild.nodeValue;
    document.getElementById('tSumPay').innerHTML = nodes.getElementsByTagName("sumPay").item(0).firstChild.nodeValue;
    if (document.getElementById('tSumVat') != null) {
        document.getElementById('tSumVat').innerHTML = nodes.getElementsByTagName("sumVat").item(0).firstChild.nodeValue;
    }
    document.getElementById('tSum').innerHTML = nodes.getElementsByTagName("sum").item(0).firstChild.nodeValue;
    document.getElementById('tSumRDiff').innerHTML = rndDiff;
    var elemRoundDiff = document.getElementById('trRDiff');

    if (elemRoundDiff != null) {
        if (rndDiff != "0.00" && rndDiff !="0,00") 
        {
            elemRoundDiff.style.visibility = "visible";
            elemRoundDiff.style.display = "";
        }
        else
        {
            elemRoundDiff.style.visibility = "hidden";
            elemRoundDiff.style.display = "none";
        }
    }
}

function PrepareCart() {
    var elements = document.getElementsByName('tQnt');
    var hQnt = document.getElementById('hQnt');
    for(var i=0; i<elements.length; i++) 
    {
        hQnt.value += elements[i].id.substring(4, elements[i].id.length) + ":" + elements[i].value + ";";
    }
}

function SetQuantityToZero(sender) {
    var ids;
    if (typeof sender == "object") {
        ids = sender.srcElement.getAttribute("scp").split(",");
    }
    else
    {
        ids = sender.split(",");
    }
    for(var i=0; i<ids.length; i++) {
        var elem = document.getElementById('tQnt' + ids[i]);
        if (elem) {
            elem.value=0;
        }
    }
}

function SetAllToZero() { $("[name='tQnt']").attr('value',0); }

function SwitchRadioButtonEnable(radiobutton)
{
    var radio=document.getElementById(radiobutton);
    radio.disabled = !(radio.disabled);
}

function SaveWL(force)
{
    var input = document.getElementById('wlTxtName');
    input.value = input.value.replace(/;/g,'');
    if(input.value == '')
    {
        alert('Bitte geben Sie einen Namen für die Merkliste ein.');
        return false;
    }
    var query = "SWL;;" + input.value + ";";
    if(force)
        query += "1"
    query += ";" + theme;
    
    AjaxRequest(ajaxServiceURL,"Watchlist",query,DoneWL);
}

function DoneWL()
{
    if ((ajaxRequest1.readyState == 4) && (ajaxRequest1.status == 200))
    {
        var divMsg = document.getElementById("divWLMessages");
        divMsg.style.visibility = "hidden";
        divMsg.style.display = "none";
        var tblWL = document.getElementById('wlTblMain');
        var wlElems = ajaxRequest1.responseXML.getElementsByTagName('WatchList');
        for(var i = 0; i < wlElems.length; i++)
        {
            var methodType = wlElems[i].getAttribute("method");
            var scaID = wlElems[i].getAttribute("SCaID");
            var content = "";
            switch (methodType)
            {
                case "confirm":
                    if(confirm('Eine Merkliste mit diesem Namen existiert bereits. Soll sie überschrieben werden?'))
                    {
                        SaveWL(true);
                    }
                    break;
         
                case "new":
                    for(var j=0;j<wlElems[i].childNodes.length;j++)
                        if(wlElems[i].childNodes[j].tagName == 'chunk')
                            content = content + wlElems[i].childNodes[j].childNodes[0].nodeValue;                
                    tblWL.parentNode.removeChild(tblWL);
                    document.getElementById('ctl00_cntMain_upnlSaveWatchList').innerHTML = document.getElementById('ctl00_cntMain_upnlSaveWatchList').innerHTML + content;
                    break;
         
                case "info":
                    var divMsg = document.getElementById("divWLMessages");
                    var msg = document.createElement("div");
                    msg.innerHTML = wlElems[i].childNodes[0].nodeValue;
                    if(divMsg.style.visibility == "hidden")
                    {
                        divMsg.innerHTML = "";
                        divMsg.style.visibility = "visible";
                        divMsg.style.display = "block";
                    }
                    divMsg.appendChild(msg);
                    break;
         
                case "remove": 
                    var row = document.getElementById('tr_' + scaID);
                    row.parentNode.removeChild(row);
                    break;
                
                case "exec": 
                    RefreshCart();
                    break;
            }
        }
        tblWL = document.getElementById('wlTblMain');
        if(tblWL.rows.length <= 1)
        {        
            tblWL.style.visibility = "hidden";
            tblWL.style.display = "none";
        }
        else
        {
            tblWL.style.visibility = "visible";
            tblWL.style.display = "";
        }
    }
}

function DelWL(SCaID)
{   
    if(confirm('Sind Sie sicher, dass Sie diese Merkliste löschen wollen?'))
        AjaxRequest(ajaxServiceURL,"Watchlist","DWL;" + SCaID +";;;"+theme,DoneWL);
}

function AddWLtoCart(SCaID)
{    
    AjaxRequest(ajaxServiceURL,"Watchlist","AWL;" + SCaID +";;;",DoneWL);
}