/*
--------------------------------------------------
shop to date

Autor:    Thomas Müller
          MultiMüller GmbH
Datei:    shop2date.js
Funktion: JavaScript-Funktionen
--------------------------------------------------
*/

// Klassen

function classProduct() {
        this.uid="";
        this.id="";
        this.quantity=0;
        this.caption="";
        this.price=0;
        this.originalprice=-1;
        this.vat=0;
        this.url="";
        this.unit="";
        this.noship="";
        this.weight=0;
        this.actualpriceone=0;
        this.actualpriceall=0;
        this.rebatefrom=new Array;
        this.rebateprice=new Array;
        this.status=0;
        this.minimum=0;
        this.maximum=0;
        this.variationa="";
        this.variationb="";
}

function classVariation() {
        this.id="";
        this.price=0;
        this.originalprice=-1;
        this.weight=0;
        this.rebatefrom=new Array;
        this.rebateprice=new Array;
        this.status=0;
}

function classShippingMethod() {
        this.uid="";
        this.caption="";
        this.info="";
        this.vat=0;
        this.free=0;
        this.price=new Array;
        this.weight=new Array;
        this.actualprice=0;
}

function classPaymentMethod() {
        this.uid="";
        this.caption="";
        this.info="";
        this.pregateway="";
        this.postgateway="";
        this.email="";
        this.price=0;
        this.vat=0;
        this.free=0;
        this.actualprice=0;
        this.noship=0;
        this.parameter=new Array;
        this.version=0;
}


function classVat() {
        this.percent=0;
        this.amount=0;
}

// Funktionen

function sortVat(a,b) {
// Sortier-Funktion für Prozent

        return a.percent-b.percent;
}

function toInt(value) {
// Einen Strin in Null umwandel, NaN umgehen

        if (isNaN(value)) {
                return 0;
        }
        else {
                return parseInt(value);
        }
}

function format(num) {
// Als Währung formatieren

        num = Math.round(num*100);
        cents = num%100;
        num = Math.floor(num/100).toString();
        if(cents<10)
        cents = "0" + cents;
        for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
                num = num.substring(0,num.length-(4*i+3))+"."+num.substring(num.length-(4*i+3));
        return (num + "," + cents);
}

function formatweight(num) {
// Als Gewicht formatieren

        num = Math.round(num*1000);
        cents = num%1000;
        num = Math.floor(num/1000).toString();
        cents="000"+cents.toString();
        cents=cents.substr(cents.length-3,cents.length);
        for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
                num = num.substring(0,num.length-(4*i+3))+"."+num.substring(num.length-(4*i+3));
        return (num + "," + cents);
}

function htmlChars(myText) {
// Entfernt böse HTML-Zeichen

        myText=myText.replace(/&/g,"&amp;");
        myText=myText.replace(/"/g,"&quot;");
        myText=myText.replace(/'/g,"&#039;");
        myText=myText.replace(/</g,"&lt;");
        myText=myText.replace(/>/g,"&gt;");
        return myText;
}

function iclearChars(myText) {
// Entfernt böse Zeichen für iClear

        myText=myText.replace(/&/g," ");
        myText=myText.replace(/"/g," ");
        myText=myText.replace(/'/g," ");
        myText=myText.replace(/:/g," ");
        myText=myText.replace(/#/g," ");
        myText=myText.replace(/%/g," ");
        return myText;
}


function setCookie(myvalue) {
// Einen Cookie setzen
        var expires= new Date();
        expires.setFullYear(expires.getFullYear()+1);
        document.cookie="s2dm="+escape(myvalue)+"; expires="+expires.toGMTString()+"; path=/";
}

function getCookie() {
// Einen Cookie lesen
        var pos=document.cookie.indexOf("s2dm=");

        if (pos != -1) {
                var start=pos+5;
                var ende=document.cookie.indexOf(";", start);

                if (ende == -1) ende = document.cookie.length;
                var myvalue=document.cookie.substring(start, ende);

                myvalue=unescape(myvalue)
                return myvalue;
        }
}

function setMemo(mycaption, myurl) {
// Dem Merkzetteln einen Eintrag hinzufügen

        var myvalue=new String();
        var mymemo=getMemo();
        var mymax;

        myvalue=myurl+"|||"+mycaption;

        mymax=mymemo.length;
        if (mymax>9) mymax=9;

        for (i=0;i<mymax;i++) {
                if (mymemo[i][0]!=myurl) {
                        myvalue+="||||"+mymemo[i][0]+"|||";
                        myvalue+=mymemo[i][1];
                }
        }

        setCookie(myvalue);
}

function getMemo() {
// Den Array mit dem Merkzettel liefern

        var mymemo = new Array();
        var myvalue = getCookie();

        if (myvalue != null && myvalue !="") {
                mymemo=myvalue.split("||||");
                for (i=0;i<mymemo.length;i++) {
                        mymemo[i]=mymemo[i].split("|||");
                }
        }
        return mymemo;
}

function clearCookie() {

        if (confirm("Wollen Sie Ihren Merkzettel wirklich löschen?")) {
                setCookie("");
                location.reload()
        }

}

function memoShow() {
// Den Merkzetteln anzeigen

        var mymemo=getMemo();

        if (mymemo.length==0) {
                document.write("<p>Es befinden sich keine Produkte auf Ihrem Merkzettel.</p>");
        } else {
                document.write("<table width='100%' cellpadding='2'>");
                for (i=0;i<mymemo.length;i++) {
                        document.write("<tr><td align='left' class='s2d'>");
                        document.write("<a class='s2d' href='"+mymemo[i][0]+"'>");
                        document.write(mymemo[i][1]);
                        document.write("</td></tr>");
                }
                document.write("<tr>");
                document.write("<td class='s2d' align='right'><br><a href='#' onclick='clearCookie();return false;'><img src='images/pbclmemo.gif' width='140' height='20' alt='' border='0'></a></td>");
                document.write("</table>");
                document.write("<p><br>Auf dem Merkzettel können Sie Artikel unverbindlich vormerken, um sich diese bei einem späteren Besuch des Shops nochmals anzusehen. Klicken Sie auf einen Eintrag, um ihn anzuzeigen. Damit der Merkzettel funktioniert, müssen Sie Cookies aktiviert haben.</p>");
        }
}

function addMemo(myproduct, myurl) {
// Merken

        var mymessage="Das Produkt \"[c]\" wurde auf Ihrem Merkzettel eingetragen.";
        mymessage=mymessage.replace(/\[c\]/g,myproduct);
        alert(mymessage);
        setMemo(myproduct, myurl);
}

function basketPut(myproduct, myquantity) {
// Ins Körbchen legen

        var found;
        var i;
        var message;

        myquantity=toInt(myquantity);

        // Lieferbar?

        if (myproduct.status==0) {
                alert("Die von Ihnen gewählte Variante ist nicht lieferbar. Bitte wählen Sie eine andere Kombination von Eigenschaften.");
        }
        else {
                // Nicht null!
                if (myquantity<=0) {
                        alert("Bitte geben Sie eine gültige Anzahl ein.");
                }
                else {
                        message="Wollen Sie [n] [u] \"[c]\" in den Warenkorb legen?";
                        message=message.replace(/\[n\]/,myquantity);
                        message=message.replace(/\[u\]/,myproduct.unit);
                        message=message.replace(/\[c\]/,myproduct.caption);

                        if (confirm(message)) {
                                found=-1
                                for (var i=0; i<parent.basket.length; i++) {
                                        if ((parent.basket[i].uid==myproduct.uid) && (parent.basket[i].variationa==myproduct.variationa) && (parent.basket[i].variationb==myproduct.variationb)) {
                                                found=i;
                                        }
                                }
                                if (found==-1) {
                                        found=parent.basket.length;
                                        parent.basket[found]=new classProduct;
                                }
                                parent.basket[found].quantity+=parseFloat(myquantity);
                                parent.basket[found].uid=myproduct.uid;
                                parent.basket[found].id=myproduct.id;
                                parent.basket[found].unit=myproduct.unit;
                                parent.basket[found].caption=myproduct.caption;
                                parent.basket[found].price=myproduct.price;
                                parent.basket[found].vat=myproduct.vat;
                                parent.basket[found].weight=myproduct.weight;
                                parent.basket[found].url=myproduct.url;
                                parent.basket[found].noship=myproduct.noship;
                                parent.basket[found].minimum=myproduct.minimum;
                                parent.basket[found].maximum=myproduct.maximum;
                                parent.basket[found].variationa=myproduct.variationa;
                                parent.basket[found].variationb=myproduct.variationb;

                                for (var i=1;i<=5;i++) {
                                        parent.basket[found].rebatefrom[i]=myproduct.rebatefrom[i];
                                        parent.basket[found].rebateprice[i]=myproduct.rebateprice[i];
                                }

                                // Maximum und Minumum checken
                                if ((parent.basket[found].quantity>parent.basket[found].maximum) && (parent.basket[found].maximum!=0)) {
                                        message="Die Höchstbestellmenge des Produktes \"[c]\" beträgt [n] [u] - die Bestellmenge wurde automatisch angepasst.";
                                        message=message.replace(/\[n\]/,parent.basket[found].maximum);
                                        message=message.replace(/\[u\]/,parent.basket[found].unit);
                                        message=message.replace(/\[c\]/,parent.basket[found].caption);
                                        alert(message);
                                        parent.basket[found].quantity=parent.basket[found].maximum;
                                }
                                if ((parent.basket[found].quantity<parent.basket[found].minimum) && (parent.basket[found].minimum!=0)) {
                                        message="Die Mindestbestellmenge des Produktes \"[c]\" beträgt [n] [u] - die Bestellmenge wurde automatisch angepasst.";
                                        message=message.replace(/\[n\]/,parent.basket[found].minimum);
                                        message=message.replace(/\[u\]/,parent.basket[found].unit);
                                        message=message.replace(/\[c\]/,parent.basket[found].caption);
                                        alert(message);
                                        parent.basket[found].quantity=parent.basket[found].minimum;
                                }
                        }
                }
        }
}

function basketShow() {
// Körbchen anzeigen

        var sum,i,j,found,vatsum;
        var vat = new Array;

        sum=0;
        vatsum=0;

        for (i=0;i<parent.basket.length;i++) {
                sum+=parent.basket[i].quantity;
        }

        updateActualPrice();

        if (sum==0)        {
                // leer

                document.write("<p>Der Warenkorb ist leer</p>");
        }
        else {
                // Überschrift zeigen

                sum=0;
                document.write("<form name='basketform' onsubmit='reCalc();location.reload();return false;'>");
                document.write("<table width='100%' cellpadding='2'>");
                document.write("<tr>");
                document.write("<td align='left' colspan='3' class='s2d'><strong>Anzahl</strong></td>");
                document.write("<td width='100%' class='s2d'><strong>Bezeichnung</strong></td>");
                                document.write("<td nowrap align='right' class='s2d'><strong>Einzelpreis</strong></td>");
                document.write("<td nowrap align='right' class='s2d'><strong>Gesamtpreis</strong></td>");
                document.write("</tr>");
                document.write("<tr>");

                // Positionen

                for (i=0;i<parent.basket.length;i++) {
                        if (parent.basket[i].quantity!=0) {
                                document.write("<tr>");
                                document.write("<td><a href='#' onclick='deleteItem("+i+");return false;'><img src='images/ptrsh.gif' width='12' height='16' alt='' border='0'></a></td>");
                                document.write("<td><input type='text' class='s2d' size='3' maxlength='5' value='"+parent.basket[i].quantity+"' name="+i+"></td>");
                                document.write("<td class='s2d'>"+htmlChars(parent.basket[i].unit)+"&nbsp;</td>");
                                document.write("<td width='100%' class='s2d'><a class='s2d' href='"+parent.basket[i].url+"'>"+htmlChars(parent.basket[i].caption)+"</a></td>");
                                                                document.write("<td nowrap align='right' class='s2d'>"+format(parent.basket[i].actualpriceone)+" EUR</td>");
                                document.write("<td nowrap align='right' class='s2d'>"+format(parent.basket[i].actualpriceall)+" EUR</td>");
                                document.write("</tr>");
                                sum+=parent.basket[i].actualpriceall;

                                // Ust rechnen

                                addVat(vat,parent.basket[i].vat,parent.basket[i].actualpriceall);

                        }
                }

                // Abstand
                document.write("<tr>");
                                        document.write("<td colspan='6' align='left' class='s2d'></td>");
                                document.write("</tr>");

                // USt. ausgeben
                vat.sort(sortVat);


                        // Ust

                        for (i=0;i<vat.length;i++) {
                                document.write("<tr>");
                                document.write("<td colspan='5' align='right' class='s2d'>"+vat[i].percent+"% 0:</td>");
                                document.write("<td nowrap align='right' class='s2d'>"+format(vat[i].amount)+" EUR</td>");
                                document.write("</tr>");
                        }

                        // Endbetrag

                        document.write("<tr>");
                        document.write("<td colspan='4' align='left' class='s2d'><input type='image' name='calc' src='images/prcb.gif' border='0' onclick='reCalc();location.reload();return false;'></td>");
                        document.write("<td align='right' class='s2d'><strong>Endsumme:</strong></td>");
                        document.write("<td nowrap align='right' class='s2d'><strong>"+format(sum)+" EUR</strong></td>");
                        document.write("</tr>");

                // Navigation

                document.write("</table>");
                document.write("</form>");

                document.write("<table width='100%' cellpadding='2'>");
                document.write("<tr>");
                document.write("<td align='left'><a href='./index.html'><img src='images/psmb.gif' width='140' height='20' alt='' border='0'></a></td>");
                document.write("<td align='right'><a onclick='reCalc();return true;' href='s2dship.html'><img src='images/pcob.gif' width='140' height='20' alt='' border='0'></a></td>");
                document.write("</tr>");
                document.write("</table>");
        }
}

function addVat(vat,rate,price) {
// USt addieren

        var j,found;

        if ((rate!=0) && (price!=0)) {

                found=-1;
                for (j=0;j<vat.length;j++) {
                        if (vat[j].percent==rate) {
                                found=j;
                        }
                }

                if (found==-1) {
                        found=vat.length;
                        vat[found]=new classVat;
                        vat[found].percent=rate;
                        vat[found].amount=0;
                }
                                        vat[found].amount+=price/(100+rate)*rate;
                        }
}

function updateActualPrice() {
// Tatsächliche Preise im Korb aktualisieren

        for (var i=0;i<parent.basket.length;i++) {
                parent.basket[i].actualpriceone=parent.basket[i].price;

                // Rabattstaffel erreicht?

                for (var j=0;j<=5;j++) {
                        if (parent.basket[i].rebatefrom[j]!=0) {
                                if ((parent.basket[i].quantity)>=(parent.basket[i].rebatefrom[j])) {
                                        parent.basket[i].actualpriceone=parent.basket[i].rebateprice[j];
                                }
                        }
                }

                parent.basket[i].actualpriceall=parent.basket[i].actualpriceone*parent.basket[i].quantity;
        }

}

function reCalc() {
// Korb anhand Formular aktualisieren

        var j,i,message;

        for (i=0;i<document.basketform.elements.length;i++) {
                if (document.basketform.elements[i].type=="text") {
                        j=parseInt(document.basketform.elements[i].name);
                        parent.basket[j].quantity=Math.abs(toInt(document.basketform.elements[i].value));

                        // Minumum und Maximum
                        if ((parent.basket[j].quantity>parent.basket[j].maximum) && (parent.basket[j].maximum!=0) && (parent.basket[j].qunatity!=0)) {
                                message="Die Höchstbestellmenge des Produktes \"[c]\" beträgt [n] [u] - die Bestellmenge wurde automatisch angepasst.";
                                message=message.replace(/\[n\]/,parent.basket[j].maximum);
                                message=message.replace(/\[u\]/,parent.basket[j].unit);
                                message=message.replace(/\[c\]/,parent.basket[j].caption);
                                alert(message);
                                parent.basket[j].quantity=parent.basket[j].maximum;
                        }
                        if ((parent.basket[j].quantity<parent.basket[j].minimum) && (parent.basket[j].minimum!=0) && (parent.basket[j].qunatity!=0)) {
                                message="Die Mindestbestellmenge des Produktes \"[c]\" beträgt [n] [u] - die Bestellmenge wurde automatisch angepasst.";
                                message=message.replace(/\[n\]/,parent.basket[j].minimum);
                                message=message.replace(/\[u\]/,parent.basket[j].unit);
                                message=message.replace(/\[c\]/,parent.basket[j].caption);
                                alert(message);
                                parent.basket[j].quantity=parent.basket[j].minimum;
                        }

                }
        }
}

function deleteItem(id) {
// Element aus Korb entfernen

        var message;

        message="Wollen Sie das Produkt \"[c]\" wirklich aus dem Warenkorb löschen?";
        message=message.replace(/\[c\]/,parent.basket[id].caption);

        if (confirm(message)) {
                parent.basket[id].quantity=0;
                location.reload();
        }
}

function defineShippingMethods() {
// Versand-Methoden definieren

        if (parent.shippingmethod.length==0)
        {
                        parent.shippingmethod[1] = new classShippingMethod;
                parent.shippingmethod[1].caption="DHL";
                parent.shippingmethod[1].info="";
                parent.shippingmethod[1].uid="50118198d70aed403";
                parent.shippingmethod[1].free=0;
                parent.shippingmethod[1].vat=19;
                                        parent.shippingmethod[1].price[1]=0;
                        parent.shippingmethod[1].weight[1]=0;
                                        parent.shippingmethod[1].price[2]=0;
                        parent.shippingmethod[1].weight[2]=0;
                                        parent.shippingmethod[1].price[3]=0;
                        parent.shippingmethod[1].weight[3]=0;
                                        parent.shippingmethod[1].price[4]=0;
                        parent.shippingmethod[1].weight[4]=0;
                                        parent.shippingmethod[1].price[5]=0;
                        parent.shippingmethod[1].weight[5]=0;
                                }
}

function shippingShow() {
// Versand-Methoden anzeigen

        var i,j,sum,totalweight, totalprice;

        defineShippingMethods();
        updateActualPrice();

        sum=0;
        totalweight=0;
        totalprice=0;

        for (i=0;i<parent.basket.length;i++) {
                sum+=parent.basket[i].quantity;
                totalweight+=parent.basket[i].weight*parent.basket[i].quantity;
                totalprice+=parent.basket[i].actualpriceall;
        }

        if (sum==0)        {
                document.write("<p>Der Warenkorb ist leer</p>");
        }
        else {
                document.write("<form name='shippingform'>");
                document.write("<table width='100%' cellpadding='2'>");
                for (i=1;i<parent.shippingmethod.length;i++) {

                        parent.shippingmethod[i].actualprice=-1;

                        if (parent.shippingmethod[i].weight[1]==0) {
                                // Nur ein Preis
                                parent.shippingmethod[i].actualprice=parent.shippingmethod[i].price[1];
                        }
                        else {
                                // Preis nach Gewicht
                                for (j=parent.shippingmethod[i].weight.length;j>0;j--) {
                                        if (parent.shippingmethod[i].weight[j]!=0) {
                                                if (totalweight<=parent.shippingmethod[i].weight[j]) {
                                                        parent.shippingmethod[i].actualprice=parent.shippingmethod[i].price[j];
                                                }
                                        }
                                }
                        }
                        // Versandkostenfrei?
                        if ((totalprice>=parent.shippingmethod[i].free) && (parent.shippingmethod[i].free!=0) && (parent.shippingmethod[i].actualprice!=-1)) {
                                parent.shippingmethod[i].actualprice=0;
                        }

                        // Nicht erlaubte Methode?
                        for (j=0;j<parent.basket.length;j++) {
                                if (parent.basket[j].quantity!=0) {
                                        if (parent.basket[j].noship.indexOf(parent.shippingmethod[i].uid)!=-1)
                                          parent.shippingmethod[i].actualprice=-1;
                                }
                        }
                        // GGf Auswahl löschen
                        if ((parent.shippingmethod[i].actualprice==-1) && (i==parent.selectedshippingmethod)) {
                                parent.selectedshippingmethod=-1;
                        }
                }
                for (i=1;i<parent.shippingmethod.length;i++) {
                        // Anzeigen
                        if (parent.shippingmethod[i].actualprice!=-1) {
                                // Wenn nichts gewählt, erstes wählen
                                if (parent.selectedshippingmethod==-1) {
                                        parent.selectedshippingmethod=i
                                }
                                document.write("<tr>");
                                document.write("<td class='s2d'><input type='radio' ")
                                if (i==parent.selectedshippingmethod) {
                                        document.write("checked ");
                                }
                                document.write("onclick='setShipping();' name='method' value='"+i+"'></td>");
                                document.write("<td class='s2d' width='100%'><strong>"+parent.shippingmethod[i].caption+"</strong><br></td>");
                                document.write("<td align='right' nowrap class='s2d'><strong>")
                                if (parent.shippingmethod[i].actualprice!=0) {
                                        document.write(format(parent.shippingmethod[i].actualprice)+" EUR");
                                } else {
                                        document.write("kostenlos");
                                }
                                document.write("</strong></td>");
                                document.write("</tr>");
                                if (parent.shippingmethod[i].info!="") {
                                        document.write("<tr>");
                                        document.write("<td></td>");
                                        document.write("<td class='s2d' width='100%'>"+parent.shippingmethod[i].info+"<br><br></td>");
                                        document.write("<td></td>");
                                        document.write("</tr>");
                                }
                        }
                }

                // Gewicht zeigen

                if (totalweight>0) {
                        document.write("<tr>");
                        document.write("<td></td>");
                        document.write("<td class='s2d'><br>Gesamtgewicht: "+formatweight(totalweight)+" KG<br><br></td>");
                        document.write("<td></td>");
                        document.write("</tr>");
                }

                // Navigation unten
                document.write("</table>");
                document.write("</form>");

                document.write("<table width='100%' cellpadding='2'>");
                document.write("<tr>");
                document.write("<td align='left'><a href='s2dbskt.html'><img src='images/pbskt.gif' width='140' height='20' alt='' border='0'></a></td>");
                document.write("<td align='right'><a href='s2dpayment.html'><img src='images/pcob.gif' width='140' height='20' alt='' border='0'></a></td>");
                document.write("</tr>");
                document.write("</table>");
        }
}

function setShipping() {
// Versand-Methode einstellen

        var i;
        parent.selectedshippingmethod=-1;
        for (i=0;i<document.shippingform.method.length;i++) {
                if (document.shippingform.method[i].checked) {
                        parent.selectedshippingmethod=document.shippingform.method[i].value;
                }
        }
}

function definePaymentMethods() {
// Bezahl-Methoden definieren

        if (parent.paymentmethod.length==0)
        {
                        parent.paymentmethod[1] = new classPaymentMethod;
                parent.paymentmethod[1].caption="Überweisung";
                parent.paymentmethod[1].info="Überweisen Sie den Rechnungsbetrag auf unser Konto.";
                parent.paymentmethod[1].pregateway="Ihre Bestellung wurde in unser Shopsystem übermittelt. Wir haben zu Ihrer Sicherheit ein verschlüsselt übertragenes Fenster geöffnet, in das Sie Ihre Adressdaten eintragen können. Sobald diese eingegeben und bestätigt wurden, ist die Bestellung abgeschlossen. Vielen Dank für Ihren Besuch in unserem Shop.";
                parent.paymentmethod[1].postgateway="Vielen Dank. Ihre Bestellung wurde entgegengenommen. Sie erhalten in Kürze eine Bestätigungsmail. Bitte überweisen Sie den Rechnungsbetrag auf unser Konto. Unsere Bankverbindung finden Sie auf unserer Homepage.";
                parent.paymentmethod[1].email="Vielen Dank für Ihre Bestellung. Bitte überweisen Sie den Rechnungsbetrag auf unser Konto. Unsere Bankverbindung finden Sie auf unserer Homepage.";
                parent.paymentmethod[1].noship="";
                parent.paymentmethod[1].uid="50118198d70aeb002";
                parent.paymentmethod[1].price=0;
                parent.paymentmethod[1].vat=16;
                parent.paymentmethod[1].free=0;
                parent.paymentmethod[1].parameter[0]="";
                parent.paymentmethod[1].parameter[1]="";
                parent.paymentmethod[1].parameter[2]="";
                parent.paymentmethod[1].parameter[3]="";
                parent.paymentmethod[1].parameter[4]="";
                parent.paymentmethod[1].parameter[5]="";
                parent.paymentmethod[1].version="shop2dateversion10";
                }
}


function paymentShow() {
// Bezahl-Methoden anzeigen

        var i,j, totalprice;

        definePaymentMethods();
        updateActualPrice();

        sum=0;
        totalprice=0;

        for (i=0;i<parent.basket.length;i++) {
                sum+=parent.basket[i].quantity;
                totalprice+=parent.basket[i].actualpriceall;
        }

        if (sum==0)        {
                document.write("<p>Der Warenkorb ist leer</p>");
        }
        else {
                document.write("<form name='paymentform'>");
                document.write("<table width='100%' cellpadding='2'>");
                for (i=1;i<parent.paymentmethod.length;i++) {

                        parent.paymentmethod[i].actualprice=parent.paymentmethod[i].price;

                        // Versandkostenfrei?
                        if ((totalprice>=parent.paymentmethod[i].free) && (parent.paymentmethod[i].free!=0)) {
                                parent.paymentmethod[i].actualprice=0;
                        }

                        // Nicht erlaubte Methode?
                        if (parent.selectedshippingmethod!=-1) {
                                if (parent.paymentmethod[i].noship.indexOf(parent.shippingmethod[parent.selectedshippingmethod].uid)!=-1) {
                                          parent.paymentmethod[i].actualprice=-1;
                                }
                        }

                        // GGf Auswahl löschen
                        if ((parent.paymentmethod[i].actualprice==-1) && (i==parent.selectedpaymentmethod)) {
                                parent.selectedpaymentmethod=-1;
                        }
                }
                for (i=1;i<parent.paymentmethod.length;i++) {
                        // Anzeigen
                        if (parent.paymentmethod[i].actualprice!=-1) {
                                // Wenn nichts gewählt, erstes wählen
                                if (parent.selectedpaymentmethod==-1) {
                                        parent.selectedpaymentmethod=i;
                                }
                                document.write("<tr>");
                                document.write("<td class='s2d'><input type='radio' ")
                                if (i==parent.selectedpaymentmethod) {
                                        document.write("checked ");
                                }
                                document.write("onclick='setPayment();' name='method' value='"+i+"'></td>");
                                document.write("<td class='s2d' width='100%'><strong>"+parent.paymentmethod[i].caption+"</strong><br></td>");
                                document.write("<td align='right' nowrap class='s2d'><strong>");
                                if (parent.paymentmethod[i].actualprice!=0) {
                                        document.write(format(parent.paymentmethod[i].actualprice)+" EUR");
                                } else {
                                        document.write("kostenlos");
                                }
                                document.write("</strong></td>");
                                document.write("</tr>");
                                if (parent.paymentmethod[i].info!="") {
                                        document.write("<tr>");
                                        document.write("<td></td>");
                                        document.write("<td class='s2d' width='100%'>"+parent.paymentmethod[i].info+"<br><br></td>");
                                        document.write("<td></td>");
                                        document.write("</tr>");
                                }
                        }
                }

                // Navigation unten
                document.write("</table>");
                document.write("</form>");

                document.write("<table width='100%' cellpadding='2'>");
                document.write("<tr>");
                document.write("<td align='left'><a href='s2dship.html'><img src='images/pbskt.gif' width='140' height='20' alt='' border='0'></a></td>");
                document.write("<td align='right'><a href='s2dsummary.html'><img src='images/pcob.gif' width='140' height='20' alt='' border='0'></a></td>");
                document.write("</tr>");
                document.write("</table>");
        }
}

function setPayment() {
// Bezahl-Methode einstellen

        var i;
        parent.selectedpaymentmethod=-1;
        for (i=0;i<document.paymentform.method.length;i++) {
                if (document.paymentform.method[i].checked) {
                        parent.selectedpaymentmethod=document.paymentform.method[i].value;
                }
        }
}

function summaryShow() {
// Zusammenfassung zeigen
        summaryShowEx(false);
}

function summaryShowEx(newwindow) {
// Zusammenfassung oder Bestellformular zeigen

        var sum, i, j, found, vatsum, shippingcost, totalweight;
        var vat = new Array;

        var shippingcaption="";
        var paymentcaption="";

        var shopaddress="";

        sum=0;
        vatsum=0;
        shippingcost=0;
        totalweight=0;

        if (newwindow) {
                // Neues Fenster zum Ausdrucken

                mywindow=open("","printwindow","left=10,top=10,width=600,height=550,status=yes,scrollbars=yes,menubar=yes,toolbar=yes,resizable=yes");
                mydoc=mywindow.document;

                mydoc.write("<html><head><title>Bestellformular</title></head></html>");
                mydoc.write("<body>");

                mydoc.write("<style>");
                mydoc.write("td.s2d {font-size:10pt; font-family : Arial, Helvetica, sans-serif;} ");
                mydoc.write("h1.s2d {font-family: Arial, Helvetica, sans-serif; font-size: 20pt; font-weight : bold; margin-top : 0pt; margin-bottom : 0pt;} ");
                mydoc.write("</style>");

                mydoc.write("<table width='100%' cellpadding='5' cellspacing='3' border='0'>");
                mydoc.write("<tr><td class='s2d'><h1 class='s2d'>Bestellformular</h1></td></tr>");
                mydoc.write("<tr><td class='s2d'>"+parent.paymentmethod[parent.selectedpaymentmethod].email+"<br></td></tr>");

                mydoc.write("<tr><td class='s2d'><br></td></tr>");
                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Name:</strong><br></td></tr>");
                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Adresse:</strong><br></td></tr>");
                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>PLZ und Ort:</strong><br></td></tr>");
                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Telefonnummer:</strong><br></td></tr>");

                mydoc.write("<tr><td class='s2d'><br></td></tr>");

                switch (parent.paymentmethod[parent.selectedpaymentmethod].parameter[0]) {
                        case "printdebit":
                                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Kontonummer:</strong><br></td></tr>");
                                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Bankleitzahl:</strong><br></td></tr>");
                                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Kreditinstitut:</strong><br></td></tr>");
                                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Kontoinhaber:</strong><br></td></tr>");
                                mydoc.write("<tr><td class='s2d'><br></td></tr>");
                                break;
                        case "printcreditcard":
                                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Kartentyp (bitte ankreuzen): "+parent.paymentmethod[parent.selectedpaymentmethod].parameter[1]+"</strong><br></td></tr>");
                                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Kartennummer:</strong><br></td></tr>");
                                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Karteninhaber:</strong><br></td></tr>");
                                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Gültig bis:</strong><br></td></tr>");
                                mydoc.write("<tr><td class='s2d'><br></td></tr>");
                                break;
                }

                mydoc.write("<tr><td class='s2d' style='border-bottom: 1px solid #000000;' solid;'><strong>Datum, Ort, Unterschrift:</strong><br></td></tr>");
                mydoc.write("<tr><td class='s2d'><br></td></tr>");

                mydoc.write("</table>");
        }
        else {
                mydoc=document;
        }

        // Überschrift

        mydoc.write("<table width='100%' cellpadding='2'>");
        mydoc.write("<tr>");
        mydoc.write("<td align='left' colspan='2' class='s2d'><strong>Anzahl</strong></td>");
        mydoc.write("<td width='100%' class='s2d'><strong>Bezeichnung</strong></td>");
                mydoc.write("<td nowrap align='right' class='s2d'><strong>Einzelpreis</strong></td>");
        mydoc.write("<td nowrap align='right' class='s2d'><strong>Gesamtpreis</strong></td>");
        mydoc.write("</tr>");
        mydoc.write("<tr>");

        // Positionen

        for (i=0;i<parent.basket.length;i++) {
                if (parent.basket[i].quantity!=0) {
                        mydoc.write("<tr>");
                        mydoc.write("<td class='s2d'>"+parent.basket[i].quantity+"</td>");
                        mydoc.write("<td class='s2d'>"+htmlChars(parent.basket[i].unit)+"&nbsp;</td>");
                        mydoc.write("<td width='100%' class='s2d'>"+htmlChars(parent.basket[i].caption)+"</td>");
                                                mydoc.write("<td nowrap align='right' class='s2d'>"+format(parent.basket[i].actualpriceone)+" EUR</td>");
                        mydoc.write("<td nowrap align='right' class='s2d'>"+format(parent.basket[i].actualpriceall)+" EUR</td>");
                        mydoc.write("</tr>");

                        sum+=parent.basket[i].actualpriceall;
                        totalweight+=parent.basket[i].weight*parent.basket[i].quantity;

                        // Ust rechnen
                        addVat(vat,parent.basket[i].vat,parent.basket[i].actualpriceall);
                }
        }

        // Abstand

        mydoc.write("<tr>");
                        mydoc.write("<td colspan='5' align='left' class='s2d'></td>");
                mydoc.write("</tr>");

        // Versandkosten

        i=parent.selectedshippingmethod;
        if (i!=-1) {
                shippingcaption=parent.shippingmethod[i].caption;
                if (parent.shippingmethod[i].actualprice!=0) {
                        shippingcost=parent.shippingmethod[i].actualprice;
                        addVat(vat, parent.shippingmethod[i].vat, parent.shippingmethod[i].actualprice);
                }
        }

        i=parent.selectedpaymentmethod;
        if (i!=-1) {
                paymentcaption=parent.paymentmethod[i].caption;
                if (parent.paymentmethod[i].price!=0) {
                        shippingcost+=parent.paymentmethod[i].actualprice;
                        addVat(vat, parent.paymentmethod[i].vat, parent.paymentmethod[i].actualprice);
                }
        }

        sum+=shippingcost;

        mydoc.write("<tr>");
                        mydoc.write("<td colspan='4' align='right' class='s2d'>Versandkosten:</td>");
                mydoc.write("<td nowrap align='right' class='s2d'>"+format(shippingcost)+" EUR</td>");
        mydoc.write("</tr>");

        // Abstand

        mydoc.write("<tr>");
                        mydoc.write("<td colspan='5' align='left'></td>");
                mydoc.write("</tr>");


        // Ust zeigen
        vat.sort(sortVat);

                        for (i=0;i<vat.length;i++) {
                        mydoc.write("<tr>");
                        mydoc.write("<td colspan='4' align='right' class='s2d'>"+vat[i].percent+"% 0:</td>");
                        mydoc.write("<td nowrap align='right' class='s2d'>"+format(vat[i].amount)+" EUR</td>");
                        mydoc.write("</tr>");
                }

                mydoc.write("<tr>");
                mydoc.write("<td colspan='6' align='left'></td>");
                mydoc.write("</tr>");

                mydoc.write("<tr>");
                mydoc.write("<td colspan='4' align='right' class='s2d'><strong>Endsumme:</strong></td>");
                mydoc.write("<td nowrap align='right' class='s2d'><strong>"+format(sum)+" EUR</strong></td>");
                mydoc.write("</tr>");

        mydoc.write("</table>");
        mydoc.write("</form>");

        mydoc.write("<table cellpadding='2'>");

        mydoc.write("<tr>");
        mydoc.write("<td nowrap class='s2d'>Gewünschte Versandart: </td>");
        mydoc.write("<td nowrap class='s2d'>"+shippingcaption+"</td>");
        mydoc.write("</tr>");

        if (totalweight>0) {
                mydoc.write("<tr>");
                mydoc.write("<td nowrap class='s2d'>Gesamtgewicht: </td>");
                mydoc.write("<td nowrap class='s2d'>"+formatweight(totalweight)+" KG</td>");
                mydoc.write("</tr>");
        }

        mydoc.write("<tr>");
        mydoc.write("<td nowrap class='s2d'>Gewünschte Zahlungsweise: </td>");
        mydoc.write("<td nowrap class='s2d'>"+paymentcaption+"</td>");
        mydoc.write("</tr>");

        mydoc.write("<tr>");
        mydoc.write("<td nowrap class='s2d' colspan='2'><br></td>");
        mydoc.write("</tr>");

        mydoc.write("</table>");

        if (newwindow) {
                mydoc.write("<table cellpadding='2' width='100%'><tr><td class='s2d' align='center'><br>"+shopaddress+"</td></tr></table>");
                mydoc.write("</body>");
                mydoc.write("</html>");
                mydoc.close();
        }
        else {
                mydoc.write("<table cellpadding='2' width='100%'>");
                mydoc.write("<tr><td class='s2d'><p>Bitte überprüfen Sie Ihre Eingaben. Sie können diese durch Klicken auf \"Zurück\" korrigieren. Wenn alle Eingaben richtig sind, klicken Sie auf \"Weiter\".</p>");
                                                mydoc.write("</td></tr>");
                mydoc.write("<form name='formagb'><tr><td class='s2d'><input type='checkbox' name='checkagb' value='1'><strong>Ich habe die AGB zur Kenntnis genommen.</strong><br><br></td></tr></form>");
                mydoc.write("</table>");

                // Jetzt das versteckte Transfer-Formular

                switch (parent.paymentmethod[parent.selectedpaymentmethod].parameter[0]) {
                        case "iclear":
                                // iClear-Modus

                                mydoc.write("<form name='orderform' action='https://www.iclear.de/servlets/GenBuyTool' method='post' target='orderwindow'>");
                                mydoc.write("<input type='hidden' name='ShopID' value='"+parent.paymentmethod[parent.selectedpaymentmethod].parameter[1]+"'>");
                                mydoc.write("<input type='hidden' name='BasketID' value='shop to date order'>");
                                mydoc.write("<input type='hidden' name='Currency' value='EUR'>");
                                j=0;

                                var products="";

                                // Produkt-Schleife

                                for (i=0;i<parent.basket.length;i++) {
                                        if (parent.basket[i].quantity!=0) {
                                                j++;
                                                products+=iclearChars(parent.basket[i].caption)+"::";
                                                products+=iclearChars(parent.basket[i].id)+"::";
                                                products+=parent.basket[i].quantity+"::";
                                                                                                        products+=parent.basket[i].actualpriceone/(parent.basket[i].vat/100+1)+"::";
                                                         products+=parent.basket[i].actualpriceone+"::";
                                                                                                products+=parent.basket[i].vat+":::";
                                        }
                                }

                                // Versandart als Produkt

                                j++;
                                products+=iclearChars("Gewünschte Versandart "+shippingcaption)+"::";
                                products+="::";
                                products+="1::";
                                                                        products+=shippingcost/(parent.shippingmethod[parent.selectedshippingmethod].vat/100+1)+"::";
                                        products+=shippingcost+"::";
                                                                products+=parent.shippingmethod[parent.selectedshippingmethod].vat+":::";

                                mydoc.write("<input type='hidden' name='Products' value='"+products+"'>");
                                mydoc.write("<input type='hidden' name='ProductIndex' value='"+j+"'>");
                                mydoc.write("</form>");
                                break;

                        default:
                                // Normal-Modus

                                mydoc.write("<form name='orderform' action='http://www.chinamania.de/gateway.php' method='post' target='orderwindow'>");
                                j=0;
                                for (i=0;i<parent.basket.length;i++) {
                                        if (parent.basket[i].quantity!=0) {
                                                j++;
                                                mydoc.write("<input type='hidden' name='PUID"+j+"' value='"+parent.basket[i].uid+"'>");
                                                mydoc.write("<input type='hidden' name='PPID"+j+"' value='"+htmlChars(parent.basket[i].id)+"'>");
                                                mydoc.write("<input type='hidden' name='PQNT"+j+"' value='"+parent.basket[i].quantity+"'>");
                                                mydoc.write("<input type='hidden' name='PUNT"+j+"' value='"+htmlChars(parent.basket[i].unit)+"'>");
                                                mydoc.write("<input type='hidden' name='PCAP"+j+"' value='"+htmlChars(parent.basket[i].caption)+"'>");
                                                mydoc.write("<input type='hidden' name='PPRI"+j+"' value='"+parent.basket[i].actualpriceone+"'>");
                                                mydoc.write("<input type='hidden' name='PVAT"+j+"' value='"+parent.basket[i].vat+"'>");
                                                mydoc.write("<input type='hidden' name='PRVA"+j+"' value='"+parent.basket[i].variationa+"'>");
                                                mydoc.write("<input type='hidden' name='PRVB"+j+"' value='"+parent.basket[i].variationb+"'>");
                                        }
                                }
                                mydoc.write("<input type='hidden' name='OPAY' value='"+htmlChars(paymentcaption)+"'>");
                                mydoc.write("<input type='hidden' name='OSHP' value='"+htmlChars(shippingcaption)+"'>");
                                mydoc.write("<input type='hidden' name='OCUR' value='EUR'>");
                                mydoc.write("<input type='hidden' name='OB2B' value=''>");
                                mydoc.write("<input type='hidden' name='OSPR' value='"+shippingcost+"'>");
                                mydoc.write("<input type='hidden' name='OSPV' value='"+parent.shippingmethod[parent.selectedshippingmethod].vat+"'>");
                                mydoc.write("<input type='hidden' name='OWGT' value='"+totalweight+"'>");
                                mydoc.write("<input type='hidden' name='OTOT' value='"+sum+"'>");
                                mydoc.write("<input type='hidden' name='GVER' value='"+parent.paymentmethod[parent.selectedpaymentmethod].version+"'>");
                                mydoc.write("<input type='hidden' name='GPR0' value='"+parent.paymentmethod[parent.selectedpaymentmethod].parameter[0]+"'>");
                                mydoc.write("<input type='hidden' name='GPR1' value='"+parent.paymentmethod[parent.selectedpaymentmethod].parameter[1]+"'>");
                                mydoc.write("<input type='hidden' name='GPR2' value='"+parent.paymentmethod[parent.selectedpaymentmethod].parameter[2]+"'>");
                                mydoc.write("<input type='hidden' name='GPR3' value='"+parent.paymentmethod[parent.selectedpaymentmethod].parameter[3]+"'>");
                                mydoc.write("<input type='hidden' name='GPR4' value='"+parent.paymentmethod[parent.selectedpaymentmethod].parameter[4]+"'>");
                                mydoc.write("<input type='hidden' name='GPR5' value='"+parent.paymentmethod[parent.selectedpaymentmethod].parameter[5]+"'>");
                                mydoc.write("<input type='hidden' name='GMSP' value='"+htmlChars(parent.paymentmethod[parent.selectedpaymentmethod].postgateway)+"'>");
                                mydoc.write("<input type='hidden' name='GMSE' value='"+htmlChars(parent.paymentmethod[parent.selectedpaymentmethod].email)+"'>");
                                mydoc.write("<input type='hidden' name='GSAD' value='"+htmlChars(shopaddress)+"'>");
                                mydoc.write("<input type='hidden' name='GNEW' value=''>");
                                mydoc.write("<input type='hidden' name='GTSI' value=''>");
                                mydoc.write("</form>");
                }
                mydoc.write("<table width='100%' cellpadding='2'>");
                mydoc.write("<tr>");
                mydoc.write("<td align='left'><a href='s2dpayment.html'><img src='images/pbskt.gif' width='140' height='20' alt='' border='0'></a></td>");
                mydoc.write("<td align='right'><a href='' onclick='submitOrder();return false;'><img src='images/pcob.gif' width='140' height='20' alt='' border='0'></a></td>");
                mydoc.write("</tr>");
                mydoc.write("</table>");

        }
}

function completeShow() {

        // Abschlußscreen zeigen

        document.write("<p>"+parent.paymentmethod[parent.selectedpaymentmethod].pregateway+"<br><br><br></p>");
        document.write("<table width='100%' border='0' cellpadding='0' cellspacing='0'>");
        document.write("<tr>");
        document.write("<td align='left'><a href='s2dsummary.html'><img src='images/pbskt.gif' width='140' height='20' alt='' border='0'></a></td>");
        document.write("<td align='right'><a onclick='parent.basket.length=0;return true;' href='./index.html'><img src='images/psmb.gif' width='140' height='20' alt='' border='0'></a></td>");
        document.write("<tr>");
        document.write("</table>");
}

function submitOrder() {

        // Bestellung absenden

        if (!document.formagb.checkagb.checked) {
                alert("Bitte lesen Sie unsere AGB und markieren Sie das Feld \"Ich habe die AGB zur Kenntnis genommen\", bevor Sie fortfahren.")
        }
        else {

                switch (parent.paymentmethod[parent.selectedpaymentmethod].parameter[0]) {
                case "printdebit":
                case "printcod":
                case "printcheque":
                case "printremittance":
                case "printcreditcard":
                case "printinvoice":
                        summaryShowEx(true);
                        self.location="s2dcomplete.html";
                        break;
                default:
                        var mywindow=window.open("","orderwindow","left=10,top=10,width=600,height=550,status=yes,scrollbars=yes");
                        mywindow.focus();
                        document.orderform.submit();
                        self.location="s2dcomplete.html";
                }
        }
}

