//--- Variablen im Warenkorb ---
// Titel:						"soziothek-warenkorb"
// Version						01vers
// Datum der letzen Eingabe:	02dat
// Inhalt des Warenkorbes:		03wk
// Anrede:						04anr
// Name:						05name
// Vorname:						06vname
// Organisation:				07org
// Strasse 1					08str1
// Strasse 2					09str2
// PLZ							10plz
// Ort							11ort
// Land							11land
// Telefon						12tel
// Email						13email
// Mitteilung					14mtlg
// Andere Werte (von anderen Seiten)	15values
// Verfall des cookie			expires

//--- getCookieVal ---
// Gibt den Wert des cookies zurück

function getCookieVal(offset)
{
   var endstr=document.cookie.indexOf (";", offset);
   if (endstr==-1) endstr=document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
}

//--- readCookie ---
// Gibt den Inhalt des cookie zurück
function readCookie(name)
{
   var arg=name+"=";
   var alen=arg.length;
   var clen=document.cookie.length;
   var i=0;
   while (i<clen)
   {
      var j=i+alen;
      if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
      i=document.cookie.indexOf(" ",i)+1;
      if (i==0) break;
   }
   return null;
}


//--- writeCookie ---
// Schreibt Cookie mit den richtigen Parametern:
// name

function writeCookie(name, value)
{
   var argv=writeCookie.arguments;
   var argc=writeCookie.arguments.length;
   var expires=(argc > 2) ? argv[2] : null;
   var path=(argc > 3) ? argv[3] : null;
   var domain=(argc > 4) ? argv[4] : null;
   var secure=(argc > 5) ? argv[5] : false;
   document.cookie=name+"="+escape(value)+
      ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
      ((path==null) ? "" : ("; path="+path))+
      ((domain==null) ? "" : ("; domain="+domain))+
      ((secure==true) ? "; secure" : "");
}

//--- eraseCookie ---
// Löscht das Cookie
function eraseCookie(name)
{
   date=new Date;
   date.setFullYear(date.getFullYear()-1);
   writeCookie(name,null,date);
}

//--- wkGetCookie ---
// Rückgabewert: Aktueller Inhalt des Cookies
function wkGetCookie() {
	return readCookie("warenkorb");
}

//--- wkExists ---
// Falls wk nicht existiert, erstellen
// Rückgabewert
//   - true: wk existiert oder konnte erstellt werden
//   - false: wk existiert nicht und konnte nicht erstellt werden

function wkExists(variable) {
	var wk = wkGetCookie();
	var expireDate = new Date;
    expireDate.setDate(expireDate.getDate()+180);
	// Cookie existiert nicht
	if (wk==null) {
		writeCookie("warenkorb",wkDefault(),expireDate);
		wk = wkGetCookie();
	}
	if (wk==null) {
		alert("Es konnte kein Cookie gespeichert werden.\nMöglicherweise wurde dies aufgrund Ihrer Sicherheitseinstellungen für Cookies verhindert.\n\nPassen Sie gegebenenfalls die Einstellungen bei Ihrem Internetbrowser an\nund versuchen Sie es noch einmal oder verwenden Sie die Möglichkeiten\nder Bestellung per Email (vgl. 'Siehe unter Bestellen').");
		return;
	}
	// Falsche Version
	if (wkGet("01vers") != "2.0") {
		eraseCookie("warenkorb");
		alert("Eine ältere Version des Cookies wurde ersetzt.");
		//document.location.reload();
		writeCookie("warenkorb",wkDefault(),expireDate);
		wk = wkGetCookie();
	}
	// Cookie konnte nicht gespeichert werden / neuer Versuch
	if (wk == "") {
		res=confirm("Es konnte kein Cookie gespeichert werden. "+
		"Damit können die Bestellungen nicht zwischengespeichert werden. "+
		"Soll erneut versucht werden, ein Cookie einzurichten?");
		if (res) {
			writeCookie("warenkorb",wkDefault(),expireDate);
			wk = wkGetCookie();
			if (wk = "") {
				alert("Das Cookie konnte nicht gespeichert werden! "+
				"Verwenden Sie die anderen Möglichkeiten zum Bestellen "+
				"(-> Bestellen).");
				return false;
			}
		}
	}
	// Warenkorb nicht testen, wenn cookie nicht als Warenkorb benutzt wird (15values)
	if (wkGet("02dat")<nowDate() && wkGet("03wk")!="" && variable=="03wk") {
		alert("Sie haben noch ältere Waren in Ihrem Korb!")
	}
	return true;
}

//--- wkDefault ---
// Gibt das Default-wk-cookie zurück
function wkDefault() {
	var wk = "warenkorb¢::01vers:2.0¢::02dat:" + nowDate() + "¢::";
	wk = wk + "03wk:¢::04anr:¢::05name:¢::06vname:¢::07org:¢::08str1:¢::09str2:¢::";
	wk = wk + "10plz:¢::11ort:¢::12tel:¢::13email:¢::";
	return wk;
}
		
//--- wkGet ---
// Liest Wert der Variablen 'variable' aus wk
function wkGet(variable) {
	var wk = wkGetCookie();
	if (wk==null) {return ""}
//var wk = "afsfasdf¢::date=030201¢::name=abcd";
	var sString = "¢::" + variable + ":";
	if (wk.indexOf(sString) > -1) {
		var value = wk.substring(wk.indexOf(sString)+sString.length);
		if (value.indexOf("¢::") > -1) {
			value = value.substring(0,value.indexOf("¢::"));
		}
		return value;
	} else {
		return "";
	}
}

//--- wkPut ---
// Schreibt einen Wert 'value' in eine Variable 'variable'
function wkPut(variable, value) {
	if (!wkExists(variable)) {return;}
	var wk = wkGetCookie();
//var wk = "afsfasdf¢::date=030201¢::name=abcd¢::;expires=hkjhkljh";
	var wk2 = wk;
	var wkPutted = false;
	while (wk2.indexOf("¢::")>-1) {
		wk2 = wk2.substr(wk2.indexOf("¢::")+3);
		var varTest = wk2.substring(0,wk2.indexOf(":"));
		if (varTest == variable) {
			var sString = "¢::" + variable + ":";
			var wkt1 = wk.substring(0,wk.indexOf(sString)+sString.length);
			var wkt2 = wk.substring(wk.indexOf(sString)+sString.length);
			if (wkt2.indexOf("¢::") > -1) {
				wkt2 = wkt2.substring(wkt2.indexOf("¢::"));
			} else {
				wkt2 = "¢::";
			}
			wk = wkt1 + value + wkt2;
			wkPutted = true;
			break;
		} else if (varTest > variable) {
			var sString = "¢::" + varTest + "=";
			var wkt1 = wk.substring(0,wk.indexOf(sString));
			var wkt2 = wk.substring(wk.indexOf(sString));
			wk = wkt1 + "¢::" + variable + ":" + value + wkt2;
			wkPutted = true;
			break;
		}
	}
	if (!wkPutted) {
		var wkt1;
		if (wk.indexOf(";expires=")>-1) {
			wkt1 = wk.substring(0,wk.indexOf(";expires="));
		} else {
			wkt1 = wk;
		}
		if (wkt1.substring(wkt1.length-3)!="¢::") {
			wkt1 = wkt1 + "¢::";
		}
		wk = wkt1 + variable + ":" + value + "¢::";
	}
    expireDate = new Date;
	expireDate.setDate(expireDate.getDate()+7);
	writeCookie("warenkorb",wk,expireDate);
}

//--- nowDate ---
// liefert als Rückgabewert das aktuelle Datum als String von der Form 'yymmdd'
function nowDate() {
	nD = new Date();
	var temp = nD.getUTCFullYear();
	temp = "*" + temp;
	var datum = temp.substring(3);
	temp = nD.getUTCMonth()+1;
	temp = temp + "*";
	if (temp.length<3) {
		datum = datum + "0";
	}
	datum = datum + eval(nD.getUTCMonth()+1);
	temp = nD.getUTCDate();
	temp = temp + "*";
	if (temp.length<3) {
		datum = datum + "0";
	}
	datum = datum + nD.getUTCDate();
	return datum;
}

//--- dbEingabe ---
// fügt eine Publikation zum Warenkorb hinzu
function dbEingabe(Anzahl,BestNr,Form,Preis,Euro) {
	if (!wkExists()) return;
	var wk = wkGet("03wk");
	var anzahlAlt = (wk.split("¢").length-1)/5;
	wk = wk + Anzahl + "¢" + BestNr + "¢" + Form + "¢" + Preis + "¢" + Euro + "¢";
	wkPut("03wk",wk);
	wkPut("02dat",nowDate());
	wk = wkGet("03wk");
	wk = wk.split("¢");
	if ((wk.length-1)/5!=anzahlAlt+1) {
		alert("Die Publikation konnte für die Bestellung nicht im Cookie gespeichert werden.\nMöglicherweise wurde dies aufgrund Ihrer Sicherheitseinstellungen für Cookies verhindert.\n\nPassen Sie gegebenenfalls die Einstellungen bei Ihrem Internetbrowser an\nund versuchen Sie es noch einmal oder verwenden Sie die Möglichkeiten\nder Bestellung per Email (vgl. 'Siehe unter Bestellen').");
		return;
	}
	dbRightFrame();
	//if ((wk.length-1)/5==1) {
	//	alert("Sie haben jetzt eine Bestellung im Warenkorb.");
	//} else {
	//	alert("Sie haben jetzt " + (wk.length-1)/5 + " Bestellungen im Warenkorb.");
	//}
}

function pubLoeschen(Nr) {
	var wk=wkGet("03wk").split("¢");
	bestPub=dbArray(Nr);
	bestNr = bestPub[1];
	if (bestNr.charAt(eval(bestNr.length-1))==")")
		{bestNr=bestNr.substring(0,eval(bestNr.length-3))}
	var text="Soll die folgende Publiktion aus dem Warenkorb gelöscht werden?\n\n" + deunicode(bestPub[3]) + ". " + bestPub[6] + ". " + deunicode(bestPub[5]);
	if (bestPub[2].split("£")[1]!="")
		{text=text+" ("+bestPub[2].split("£")[1]+")"}
	if(!confirm(text)) {
		return;
	}
	var wkN = "";
	for (a=0;a<wk.length-1;a++) {
		if (a < Nr*5 || a > Nr*5+4) {
			wkN = wkN + wk[a] + "¢";
		}
	}
	wkPut("03wk",wkN);
	dbRightFrame();
	if (wkN=="") {
		window.location.href="wka.htm";
	} else {
        //alert("Sie haben jetzt "+eval(a/5-1)+
        //" Bestellung(en) im Warenkorb");
		window.location.reload();
	}
}
	
//--- dbLoeschen ---
// Abfrage, ob alle Publikationen im Warenkorb gelösche werden sollen
function dbLoeschen() {
	var wk = wkGetCookie();
	if (wk == "") {
		wkPut("03wk","");
		alert("Sie haben keine Waren im Korb!")
	} else {
		if (wkGet("03wk")=="") {
			alert("Sie haben keine Waren im Korb!")
		} else {
			Eingabe = confirm("Sollen die Einträge im Warenkorb gelöscht werden?");
			if (Eingabe == true) {
				dbLeeren()
			}
		}
	}
}

//--- dbLeeren ---
// Löscht alle Publikationen im Warenkorb
function dbLeeren() {
	wkPut("03wk","");
	dbRightFrame();
}

//--- dbRightFrame ---
// Schreibt die Anzahl Publikationen im Warenkorb in den rechten Frame
function dbRightFrame() {
	var wk = wkGet("03wk");
	wk = wk.split("¢");
	wkn = ((wk.length-1)/5);
	var s = 0;
	var f = 0;
	var e = 0;
	for (var i=0; i<wkn; ++i) {
		s = eval(s+eval(wk[i*5]));
		f = f + eval(eval(wk[i*5]*wk[i*5+3]));
		e = e + eval(eval(wk[i*5]*wk[i*5+4]));
	}
	var wkText = "";
	var betragText = "";
	if (wkn==0) {
		wkText = "Der Warenkorb ist leer";
	} else if (wkn==1) {
		wkText = "Es befindet sich ein Titel / ";
	} else {
		wkText = "Es befindet sich " + wkn + " Titel / ";
	}
	if (s==1) {
		wkText += "eine Publikation im Warenkorb.";
	} else if (s>0) {
		wkText += s + " Publikationen im Warenkorb.";
	}
	if (s>0) {
		f = Math.round(f*100)/100;
		if (f.toString().indexOf(".")<0) {
			f = f + ".00";
		} else if (f.toString().indexOf(".") == f.toString().length-2) {
			f = f + "0";
		}
		e = Math.round(e*100)/100;
		if (e.toString().indexOf(".")<0) {
			e = e + ".00";
		} else if (e.toString().indexOf(".") == e.toString().length-2) {
			e = e + "0";
		}
		betragText = f+" sFr. / "+e+" Euro.";
	}
	parent.frameR1.document.getElementById("wk").firstChild.nodeValue = wkText;
	parent.frameR1.document.getElementById("betrag").firstChild.nodeValue = betragText;
}

function zweiStellen(zahl)
        {var ZahlText
        ZahlText=Math.round(100*zahl).toString()
        return ZahlText.slice(0,ZahlText.length-2)+"."+ZahlText.slice(ZahlText.length-2)
        }

	
		
//--- dbArray ---
// Gibt die Informationen zur Publikation i als Array zurück
function dbArray(i) {
	wk = wkGet("03wk");
	wk = wk.split("¢");
	if (i==undefined || wk=="" || i > ((wk.length-1)/5)-1) {
		alert("Index (" + i + ") out of range (" + eval((wk.length-1)/5-1) + ")");
		return;
	}
	var pubArray = new Array();
	// Anzahl
	pubArray[0] = wk[i*5];
	// Bestellnummer
	pubArray[1] = wk[i*5+1];
	// Form
	pubArray[2] = wk[i*5+2];
	// Preis SFr.
	pubArray[7] = wk[i*5+3];
	// Preis Euro
	pubArray[8] = wk[i*5+4];
	var bestNr = wk[i*5+1];
	var bestNr2 = bestNr;
	if (bestNr2.charAt(eval(bestNr2.length-1))==")") {
		bestNr2=bestNr2.substring(0,eval(bestNr2.length-3))
	}
	for (a=0; a<AnzahlPub; a++) {
		if (publDB[a][6] == bestNr2) {
			// Autor
			pubArray[3] = publDB[a][0];
			// Titel
			pubArray[4] = publDB[a][1];
			// Untertitel
			pubArray[5] = publDB[a][2];
			// Erscheinungsjahr
			pubArray[6] = publDB[a][7];
			// html-Referenz
			pubArray[9] = publDB[a][5];
			a=AnzahlPub;
		}
	}
	return pubArray;
}
	
	
		
//--- dbInhalt --- ALTE Version, nicht mehr benötigt!
// Gibt die Information j zur Publikation i zurück:
// j=0: Anzahl
// j=1: Bestellnr
// j=2: Form
// j=3: ...
function dbInhalt(i,j)
        {
        if (anzEintraege() == 0)
                {alert("Sie haben keine Waren im Korb!")}
        else
                {
                var wk=document.cookie.split("¢");
                var wkT=wk[1].split("#");
                var wkI=wkT[i].split("¦");
                return(wkI[j]);
                }
        }

function dbSchreiben() {
	var wk=wkGet("03wk");
	wk = wk.split("¢");
	if ((wk.length-1)/5==0)
                {alert("Sie haben keine Waren im Korb!")}
        else
                {window.location.href = "wk.htm";}
        }

//--- deunicode ---
// Ersetzt in 'text' alle mit unicode codierten Sonderzeichen.
// Rückgabewert: Decoiderter Text

function deunicode(text) {
	var text1;
	var text2 = text;
	var textA = "";
	while (text2.indexOf("&#")>0) {
		text1 = text2.substring(0,text2.indexOf("&#"));
		text2 = text2.substring(text2.indexOf("&#"),text2.length);
		if (text2.indexOf(";") > 0) {
			var ucode = text2.substring(2,text2.indexOf(";"));
			 if (!isNaN(Number(ucode))) {
				text1 = text1 + String.fromCharCode(ucode);
				text2 = text2.substring(text2.indexOf(";")+1,text2.length);
			} else {
				text1 = text1 + text2.substring(0,text2.indexOf(";"));
				text2 = text2.substring(text2.indexOf(";"),text2.length);
			}
		}
		textA = textA + text1;
	}
	return(textA + text2);
}

//--- wkASCII ---
// Rückgabewert: Inhalt des Warenkorbes als Text
function wkASCII() {
	var out = "", Total = 0, Etot = 0, Ewert = true;
	var wk = wkGet("03wk");
	wk = wk.split("¢");
	var pubArray = new Array();
	for (i=0;i<(wk.length-1)/5;i++) {
		pubArray = dbArray(i);
		// Total sFr. und Euro (Euro nur, wenn für alle Publikationen Euro-Angaben)
		Total=Total+pubArray[0]*pubArray[7];
		if (pubArray[8]>0 && Ewert) {
			Etot = Etot+pubArray[0]*pubArray[8];
		} else {
			Ewert=false;
		}
		//wkfld: generiertes mail
		out=out+"======== Publikation " + eval(i+1) + " ========\n";
		//*** Autor, Titel, Form ***
		out = out + deunicode(pubArray[3]) + ". " + pubArray[6] + ". " + deunicode(pubArray[4]) + " - " + deunicode(pubArray[5]);
		if (pubArray[2].split(String.fromCharCode(163))[1]!="") {
			wkfld=wkfld+" - ("+pubArray[2].split(String.fromCharCode(163))[1]+")";
			}
		out=out+"\n---\n";
		out=out+"Bestellnr: "+pubArray[1]+"\n";
		out=out+"Anzahl: "+pubArray[0]+"\n";
		//*** Einheitspreis sFr. ***
		out=out+"Preis/Exemplar: "+zweiStellen(pubArray[7])+" sFr.";
		//*** Einheitspreis Euro ***
		if (pubArray[8]>0) {
			out=out+" / "+zweiStellen(pubArray[8])+" Euro";
		}
		out=out+"\n";
		//Preis Total (Anzahl * Einheitspreis)
		out=out+"Preis/Total: "+zweiStellen(pubArray[0]*pubArray[7])+" sFr.";
		if (pubArray[8]>0) {
			out=out+" / "+zweiStellen(pubArray[0]*pubArray[8])+" Euro";
		}
	out=out+"\n\n";
	}
	out=out+"====================================================\n";
	if (Total>=75) {
		out=out+"TOTAL Bestellung (Versandkosten vgl. unten); ";
	} else {
		out=out+"TOTAL Bestellung (zuzüglich Versandkosten): ";
	}
	var Preis=zweiStellen(Total)+" sFr.";
	if (Ewert) {
		Preis=Preis+" / "+zweiStellen(Etot)+" Euro";
	}
	var PreisN=Preis;
	for (a=0;a<(42-Preis.length)/2;a++) {
		PreisN=" "+PreisN+" "
	}
	if (PreisN.length==42) {PreisN=PreisN+" "}
	out=out+"\n"+PreisN+"\n";
	out=out+"====================================================";
	if (Total>=75) {
		out=out+"\n\nDer Bestellwert beträgt sFr. 75 oder mehr. ";
		out=out+"Die Versandkosten IN DER SCHWEIZ werden von der Edition Soziothek übernommen.";
		out=out+"Für Lieferungen INS AUSLAND versteht sich der Preis ZUZÜGLICH VERSANDKOSTEN.";
	}
	return out;
}

//--- wkHtm ---
// Rückgabewert: Inhalt des Warenkorbes als htm-code
function wkHtm() {
	var out="", Total=0, Etot=0, Ewert=true;
	var wk = wkGet("03wk");
	wk = wk.split("¢");
	var pubArray = new Array();
	out = out + "<table width='100%' height=100 cellpadding=4><thead><tr>";
	out = out + "<th width=20 align='right'><span style='font-family:sans-serif; font-size:7pt'>Anzahl</span></th>";
	out = out + "<th width=100 align='left'><span style='font-family:sans-serif; font-size:7pt'>Bestellnr.</span></th>";
	out = out + "<th width=350 align='left'><span style='font-family:sans-serif; font-size:7pt'>Publikation</span></th>";
	out = out + "<th width=60><span style='font-family:sans-serif; font-size:7pt'>&nbsp;&nbsp;Preis</span></th>";
	out = out + "<th><span style='font-family:sans-serif; font-size:7pt'>TOTAL</span></th>";
	out = out + "</tr></thead><tbody>";
	for (i=0;i<(wk.length-1)/5;i++) {
		pubArray = dbArray(i);
		out = out + "<tr>";
		// Total sFr. und Euro (Euro nur, wenn für alle Publikationen Euro-Angaben)
		Total=Total+pubArray[0]*pubArray[7];
		if (pubArray[8]>0 && Ewert) {
			Etot = Etot+pubArray[0]*pubArray[8];
		} else {
			Ewert=false;
		}
		// Anzahl
		out = out+"<td align = 'right' bgcolor='F5F5F5'><span style='font-family:sans-serif; font-size:7pt'>" + pubArray[0] + "</span></td>";
		//Bestellnr
		out = out+"<td align = 'left' bgcolor='F5F5F5'><span style='font-family:sans-serif; font-size:7pt'>" + pubArray[1] + "</span></td>";
		//*** Autor, Titel, Form ***
		out = out+"<td align = 'left' bgcolor='F5F5F5'><span style='font-family:sans-serif; font-size:7pt'>"+pubArray[3]+" ("+pubArray[6]+"): ";
		out = out+"<b>"+pubArray[4]+"</b>. <i>"+pubArray[5]+"</i> - ";
		if (pubArray[2].split(String.fromCharCode(163))[1]!="") {
			out = out+"("+pubArray[2].split(String.fromCharCode(163))[1]+") - ";
		}
		out = out+"<i><a href=\"javascript:pubLoeschen('"+i+"')\">Löschen</a></i> - <i><a href='"+pubArray[9]+"'>Zur Publikation</a></i></span></td>";
		//*** Einheitspreis sFr. ***
		out = out+"<td align = 'right' bgcolor='F5F5F5'><span style='font-family:sans-serif; font-size:7pt'>"+zweiStellen(pubArray[7])+"&nbsp;sFr.</span>";
		//*** Einheitspreis Euro ***
		if (pubArray[8]>0) {
			out = out+"<br><span style='font-family:sans-serif; font-size:7pt'>" +zweiStellen(pubArray[8]) +"&nbsp;€&nbsp;&nbsp;&nbsp;</span>";
		}
		out = out+"</td>";
		//Preis Total (Anzahl * Einheitspreis)
		out = out+"<td align= 'right' bgcolor='F5F5F5'><span style='font-family:sans-serif; font-size:7pt'>"+zweiStellen(pubArray[0]*pubArray[7])+"&nbsp;sFr.</span>";
		if (pubArray[8]>0) {
			out = out+"<br><span style='font-family:sans-serif; font-size:7pt'>" +zweiStellen(pubArray[0]*pubArray[8]) +"&nbsp;€&nbsp;&nbsp;&nbsp;</span>";
		}
		out = out+"</td>";
	}
	out = out+"</tbody></table><p><b>Gesamtbetrag</b>: "+zweiStellen(Total)+" sFr.";
	if (Ewert) {
		out = out+" / "+zweiStellen(Etot)+"&nbsp;€.";
	}
	if (Total>=75) {
		out = out+"<input name='TOTAL' type='hidden' value='"+zweiStellen(Total)+"'><br>&nbsp;<br>Der Bestellwert beträgt sFr. 75.-- oder mehr. Für Lieferungen <b>in die Schweiz</b> übernimmt die Soziothek die Versandkosten. Für Lieferungen <b>ins Ausland</b> versteht sich der Preis <b>zuzüglich Versandkosten</b>.</p>";
	} else {
		out = out+"<input name='TOTAL' type='hidden' value='"+zweiStellen(Total)+"'> <b>zuzüglich</b> Versandkosten.</p>";
	}
	return out;
}
