
/*
	function doBox(pID)
	Auf- und Zuklappen einer Box
*/ 
function doBox(pID,pSetVisibility)
{
	// Aktuellen Status ermitteln
	if (!pSetVisibility) IsVisible = (document.getElementById("tblrow_"+pID).style.display=="block" ? true : false);
	else IsVisible = (pSetVisibility=="block" ? false : true);
	// Content ein/ausblenden
	document.getElementById("tblrow_"+pID).style.display=(IsVisible ? "none" : "block");
	// Infotext aus/einblenden
	document.getElementById("tblrow_"+pID+"_info").style.display=(IsVisible ? "block" : "none");
	// Pfeil drehen
	document.getElementById("arrow_"+pID).src=C_StyleDir+"images/box_arrow_"+(IsVisible ? "close" : "open")+".gif";
}

function showInfo(pAlbum,pImg,pImgRange)
{
	var lHtml='';
	lHtml+='<img src="'+(pImgRange=="WA" ? C_WA_ImagePath : C_SOB_ImagePath)+pAlbum+'/'+pImg+'.m.jpg" border="0" alt="">';
	showTooltip("divTooltipBorderless",lHtml,100);
}

function showInternalImage(pImg,pText)
{
	var lHtml='';
	if (!pText) pText="";
	lHtml+='<img src="'+pImg+'" border="0" alt="">';
	if (pText!="") lHtml+='<br>'+pText;
	showTooltip("divTooltip",lHtml,100);
}

/*
	function checkUserForm()
	Validiert das User-Formular
*/ 
function checkUserLogin()
{
	var lFrm = document.fUserLogin;
	if (trim(lFrm.fUser.value)=="" || lFrm.fPwd.value=="") alert("Bitte geben Sie Benutzername und Kennwort ein!");
	else document.fUserLogin.submit();
}

/*
	function logout()
	Will sich User abmelden, dann nochmal nachfragen
*/ 
function logout(pShowBasketInfo)
{
	if (!pShowBasketInfo) pShowBasketInfo=0;
	if (confirm("Wollen Sie sich wirklich abmelden? "+(pShowBasketInfo==1 ? "Ihre Warenkorb wird dann automatisch\ngeleert und Ihr Sitzungscookie gelöscht!" : "")))
	{
		window.location.replace("page.php?id=products&mode=logout");
	}
}
function validateMail(pMail)
{
	var lReg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/
	return lReg.test(pMail);
}
/************************************** O R D E R *********************************************/
// Bestellung aufgeben
function sendOrder(pButton)
{
	lErr="";
	pButton.disabled=true;
	f=document.frmOrder;
	lPayCC=false;
	// Benutzerdaten validieren
	if (trim(f.fAnrede.value)=="") lErr+="\n - Anrede (Persönliche Daten)"; 
	if (trim(f.fVorname.value)=="") lErr+="\n - Vorname (Persönliche Daten)"; 
	if (trim(f.fNachname.value)=="") lErr+="\n - Nachname (Persönliche Daten)"; 
	if (trim(f.fStrasse.value)=="") lErr+="\n - Straße (Persönliche Daten)"; 
	if (trim(f.fPLZ.value)=="") lErr+="\n - PLZ (Persönliche Daten)"; 
	if (trim(f.fOrt.value)=="") lErr+="\n - Ort (Persönliche Daten)"; 
	// E-Mail validieren
	lEMail=trim(f.fMail.value);
//	if (lEMail=="") lErr+="\n - E-Mail (Persönliche Daten)"; 
//	else if (lEMail.indexOf("@")==-1) lErr+="\n - E-Mail fehlerhaft (Persönliche Daten)"; 
//	else if (lEMail.indexOf(".")==-1) lErr+="\n - E-Mail fehlerhaft (Persönliche Daten)"; 
//	else if (lEMail.indexOf(" ")!=-1) lErr+="\n - E-Mail fehlerhaft (Persönliche Daten)"; 
	if (!validateMail(lEMail)) lErr+="\n - E-Mail fehlerhaft (Persönliche Daten)"; 
	// Zahlungsart validieren
	if (document.getElementById("pay_k")) {
		if (!f.fPayment[0].checked && !f.fPayment[1].checked) lErr+="\n - Keine Zahlungsart gewählt"; 
		if (f.fPayment[0].checked) lPayCC=true;
	}
	// Ziel des Formulars setzen
	f.action="page.php?id=order&detail=finished&mode=order";
	// Kreditkartenzahlung beim Post als nächsten Schritt setzen
	if (lPayCC) 
	{
		f.fAction.value="pay_cc";
		// Ziel des Formulars setzen
		f.action="page.php?id=order&detail=cc&mode=prepare_cc";
	}	
	// Und wegschicken wenn keine Fehler, sonst Fehler ausgeben
	if (lErr!="") 
	{
		alert("Es sind Fehler beim Prüfen Ihrer Bestellung aufgetreten.\nFolgende Felder wurden nicht korrekt ausgefüllt:\n"+lErr);
		pButton.disabled=false;
	}	
	else f.submit();
}

// Gutscheinformular validieren
function checkBon()
{
	lForm=document.frmOrder;
	lForm.action="page.php?id=order&detail=form&mode=check_bon";
	if (document.getElementById("bon_code").value=="") alert("Sie haben noch keinen Gutschein-Code eingegeben!");
	else if (lForm.fMail.value=="") alert("Bitte geben Sie noch Ihre E-Mail Adresse ein!!");
	else lForm.submit();
}
	
function validateMenge(pMenge)
{
	lMenge=pMenge;
	if (lMenge<=0) lMenge=1;
	if (isNaN(lMenge)) lMenge=1;
	return lMenge*1;
}

//  aus 556|1 nur 556 machen
function strip2ANR(pANR)
{
	if (pANR.indexOf("|")!=-1)
	{
		aTmp = pANR.split("|");
		pANR = aTmp[0];
	}
	return pANR;
}


var gWKData=Array();
// STAFFELN FÜR ALLE ARTIKEL ERMITTELN
function setWKStaffeln()
{
	var lAnzArtikel=document.getElementsByName("STAFFEL[]").length;		// Anzahl der Artikel im Warenkorb
	for (var i=0;i<lAnzArtikel;i++)
	{
		// Artikelnummer des Artikels holen
		lANR=strip2ANR(document.getElementsByName("ANR[]")[i].value);
		if (!gWKData[lANR]) 
		{
			gWKData[lANR]=Array();
			// Summe der Mengen dieser Artikelnummer für Gesamtstaffelung
			gWKData[lANR]["ANZ"]=0;
			// Index der Staffel der verwendet wird
			gWKData[lANR]["USE_STAFFEL"]=-1;
			// Ataffel-Array anlegen
			gWKData[lANR]["STAFFEL"]=Array();
			// Staffelung für diese Artikelnummer auslesen
			aStaffel=document.getElementsByName("STAFFEL[]")[i].value.split(";");
			for (var x=0;x<aStaffel.length;x++) {
				// Zerlegen der Staffel
				aTmp=aStaffel[x].split(",");
				// und in Array mitschreiben
				gWKData[lANR]["STAFFEL"][gWKData[lANR]["STAFFEL"].length]=Array((aTmp[0]*1),(aTmp[1]*1));
			}
		}
	}
}

// MENGE VALIDIEREN UND SETZEN
function setWKMengen(pIndex)
{
	// Nur Menge von diesem Index validieren und aktualisieren
	if (pIndex>=0)
	{
		// Artikelnummer des Artikels holen
		lANR=strip2ANR(document.getElementsByName("ANR[]")[pIndex].value);
		// Mindestbestellmenge ermitteln
		lMinOrderAnz=document.getElementsByName("MINORDERANZ[]")[pIndex].value*1;
		// Menge validieren
		lMenge=validateMenge(document.getElementsByName("QTY[]")[pIndex].value);
		// und auf Mindestbestellmenge prüfen
		if (lMenge<lMinOrderAnz) lMenge=lMinOrderAnz;
		// Menge korrigiert rausschreiben
		document.getElementsByName("QTY[]")[pIndex].value=lMenge;
	}
	else // Kein Index => ganzer Warenkorb
	{
		var lAnzArtikel=document.getElementsByName("STAFFEL[]").length;		// Anzahl der Artikel im Warenkorb
		for (var i=0;i<lAnzArtikel;i++)
		{
			// Artikelnummer des Artikels holen
			lANR=strip2ANR(document.getElementsByName("ANR[]")[i].value);
			// Mindestbestellmenge ermitteln
			lMinOrderAnz=document.getElementsByName("MINORDERANZ[]")[i].value*1;
			// Menge validieren
			lMenge=validateMenge(document.getElementsByName("QTY[]")[i].value)*1;
			// und auf Mindestbestellmenge prüfen
			if (lMenge<lMinOrderAnz) lMenge=lMinOrderAnz;
			// Menge korrigiert rausschreiben
			document.getElementsByName("QTY[]")[i].value=lMenge;
			document.getElementsByName("QTY_BACKUP[]")[i].value=lMenge;
			// Menge für den Artikel zu gleichen Artikel addieren für Gesamtstaffel
			gWKData[lANR]["ANZ"]+=lMenge;
		}
	}
}

// PRÜFT OB ÄNDERUNG DER MENGE NEUE STAFFEL AKTIVIERT
function newWKStaffel(pIndex)
{
	lANR=strip2ANR(document.getElementsByName("ANR[]")[pIndex].value);
	// Alte Menge dieser Position abziehen
	gWKData[lANR]["ANZ"] = gWKData[lANR]["ANZ"]-(document.getElementsByName("QTY_BACKUP[]")[pIndex].value*1);
	// Neue Menge dieser Position addieren
	gWKData[lANR]["ANZ"] = gWKData[lANR]["ANZ"]+(document.getElementsByName("QTY[]")[pIndex].value*1);
	// Prüfen ob neue Menge neue Staffel für alle Artikel bedeutet
	if ((gWKData[lANR]["USE_STAFFEL"]>=(gWKData[lANR]["STAFFEL"].length-1)) && (document.getElementsByName("QTY_BACKUP[]")[pIndex].value*1)<(document.getElementsByName("QTY[]")[pIndex].value*1)) 
	{
		// Bereits höchste Staffel gewählt -> keine Auswirkung auf Preis
		return false;
	}
	else // Staffel könnte sich ändern -> berechnen
	{
		lTmpStaffelIndex=0;
		for (var x=0;x<gWKData[lANR]["STAFFEL"].length;x++)	{
			// Die Staffel der Gruppe verwenden aber Summe mit Menge der Position berechnen
			if (gWKData[lANR]["ANZ"]>=gWKData[lANR]["STAFFEL"][x][0]) lTmpStaffelIndex=x;
		}
		// Die neue Staffel entspricht der alten -> keine Änderung
		if (lTmpStaffelIndex==gWKData[lANR]["USE_STAFFEL"]) return false;
		else 
		{
			// Neue Staffel durch Mengenänderung => WK neu berechnen für diese Artikel
			gWKData[lANR]["USE_STAFFEL"]=-1;
			return true; 
		}
	}
}

//WARENKORB BERECHNEN
function recalcWK(pIndex)
{
	if (typeof pIndex == 'undefined') pIndex=-1;
	// Wenn es das Feld nicht gibt ist der Warenkorb leer
	if (!document.getElementsByName("fSumArtikel")[0]) return false;
	
	// Zuerst werden die Staffeln des aktuellen Warenkorbes ermittelt
	if (gWKData.length==0) setWKStaffeln();
	// dann werden die Mengen im WArenkorb geprüft und korrigiert
	setWKMengen(pIndex);
	
	// Prüfen ob Staffeln wegen Mengenänderung noch gültig sind, wenn nicht löschen
	lRefreshBasket=true;
	if (pIndex>=0) lRefreshBasket=newWKStaffel(pIndex);
	var lGesamtSumme=0;													// Gesamtsumme
	
	// Es wurde nur eine Artikelmenge geändert die keine Auswirkung auf die Staffeln hat
	if (pIndex>=0 && !lRefreshBasket)
	{
		// Artikelnummer holen
		lANR=strip2ANR(document.getElementsByName("ANR[]")[pIndex].value);
		// Staffel merken
		lUseStaffelIndex = (gWKData[lANR]["USE_STAFFEL"]!=-1 ? gWKData[lANR]["USE_STAFFEL"] : 0);
		lPreis=gWKData[lANR]["STAFFEL"][lUseStaffelIndex][1];
		lMenge=document.getElementsByName("QTY[]")[pIndex].value;
		// Neue Artikelsumme reinschreiben
		lArtikelSum=lMenge*lPreis;
		document.getElementsByName("fArtikelSumme[]")[pIndex].value=lArtikelSum;
		document.getElementById("sum_entry_"+pIndex).innerHTML="<b>"+preisFormat(lArtikelSum,2)+" €</b>";
		// Gesamtsumme korrigieren (zuerst mal wieder in engl. Format umwandeln)
		lGesamtSumme=(document.getElementsByName("WKSUMME")[0].value.replace(/\:/g, "").replace(/\./g, ":").replace(/,/g, "."))*1;
		// Neue Summe dazu
		lGesamtSumme+=lArtikelSum;
		// Alte Summe weg
		lGesamtSumme-=(document.getElementsByName("QTY_BACKUP[]")[pIndex].value*lPreis);
		// Summe aktualisieren
		document.getElementsByName("WKSUMME")[0].value=preisFormat(lGesamtSumme,2);
		document.getElementById("summe").innerHTML=preisFormat(lGesamtSumme,2)+" €";
		// Backup der Menge überschreiben
		document.getElementsByName("QTY_BACKUP[]")[pIndex].value=lMenge;
	}
	else // Änderung mit Auswirkung auf Staffeln oder nur refresh => alles laden und erzeugen
	{
		// Artikel durchlaufen und Artikel-Summen mit Staffel auf alle gleichen Artikel rausschreiben
		for (var i=0;i<document.getElementsByName("STAFFEL[]").length;i++)
		{
			lArtikelSum=0;
			lUseStaffel=1;
			lANR=strip2ANR(document.getElementsByName("ANR[]")[i].value);
			lMenge=document.getElementsByName("QTY[]")[i].value;
			// Gibt es keine Staffel oder wurde schon eine gesetzt, dann gleich so setzen
			if (gWKData[lANR]["STAFFEL"].length==1 || gWKData[lANR]["USE_STAFFEL"]!=-1)
			{
				// Staffel merken
				lUseStaffelIndex = (gWKData[lANR]["USE_STAFFEL"]!=-1 ? gWKData[lANR]["USE_STAFFEL"] : 0);
				gWKData[lANR]["USE_STAFFEL"]=lUseStaffelIndex;
				// Und Daten schreiben
				lStaffel=gWKData[lANR]["STAFFEL"][lUseStaffelIndex][0];
				lPreis=gWKData[lANR]["STAFFEL"][lUseStaffelIndex][1];
				lArtikelSum=lMenge*lPreis;
				lUseStaffel=lStaffel;
				document.getElementsByName("PRICE[]")[i].value=lPreis;
			}
			else // Es gibt eine Staffel die noch nicht gesetzt wurde => 1x für jeden Artikel mit Staffel surchlaufen
			{
				// Artikelsumme korrigieren
				for (var x=0;x<gWKData[lANR]["STAFFEL"].length;x++)
				{
					lGroupMenge = (gWKData[lANR]["ANZ"] ? gWKData[lANR]["ANZ"] : lMenge);
					lStaffel=gWKData[lANR]["STAFFEL"][x][0];
					lPreis=gWKData[lANR]["STAFFEL"][x][1];
					// Die Staffel der Gruppe verwenden aber Summe mit Menge der Position berechnen
					if (lGroupMenge>=lStaffel) 
					{
						lArtikelSum=lMenge*lPreis;
						lUseStaffel=lStaffel;
						document.getElementsByName("PRICE[]")[i].value=lPreis;
						gWKData[lANR]["USE_STAFFEL"]=x;
					}
				}
			}

			// Markierung berbeiten
			if (gWKData[lANR]["STAFFEL"].length>1)
			{
				for (var x=0;x<gWKData[lANR]["STAFFEL"].length;x++) {
					// Alle Staffelmarkierungen zurücksetzen
					if (document.getElementById(i+"_"+gWKData[lANR]["STAFFEL"][x][0])) document.getElementById(i+"_"+gWKData[lANR]["STAFFEL"][x][0]).className="listText";
					if (document.getElementById(i+"_"+gWKData[lANR]["STAFFEL"][x][0]+"_preis")) document.getElementById(i+"_"+gWKData[lANR]["STAFFEL"][x][0]+"_preis").className="listText";
				}
			}
			// Wenn es ID des Felds gibt, dann verwendete Staffel Hervorheben
			if (document.getElementById(i+"_"+lUseStaffel)) document.getElementById(i+"_"+lUseStaffel).className="listText listTextBold";
			if (document.getElementById(i+"_"+lUseStaffel+"_preis")) document.getElementById(i+"_"+lUseStaffel+"_preis").className="listText listTextBold";

			// Merken für Bestellung welche Staffel verwendet wurde
			document.getElementsByName("USESTAFFELMENGE[]")[i].value=lUseStaffel;
			// Backup letzte Menge
			document.getElementsByName("QTY_BACKUP[]")[i].value=lMenge;
			// Summen
			document.getElementsByName("fArtikelSumme[]")[i].value=lArtikelSum;
			document.getElementById("sum_entry_"+i).innerHTML="<b>"+preisFormat(lArtikelSum,2)+" €</b>";
			// Gesamtsumme addieren
			lGesamtSumme+=lArtikelSum;
		}

		// SUMME ALLER ARTIKEL AUSGEBEN
		document.getElementsByName("fSumArtikel")[0].value=lGesamtSumme;
		document.getElementById("summe_artikel").innerHTML=preisFormat(lGesamtSumme,2)+" €";	
		// EXTRA
		if (document.getElementsByName("fExtra")[0]) {
			if (document.getElementsByName("fExtra")[0].value>0) lGesamtSumme+=document.getElementsByName("fExtra")[0].value*1;
		}
		// PORTO
		if (document.getElementsByName("fPorto")[0]) {
			if (document.getElementsByName("fPorto")[0].value>0) lGesamtSumme+=document.getElementsByName("fPorto")[0].value*1;
		}
		// DATENAUFBEREITUNG
		if (document.getElementsByName("fDatenaufbereitung")[0]) {
			if (document.getElementsByName("fDatenaufbereitung")[0].value>0) lGesamtSumme+=document.getElementsByName("fDatenaufbereitung")[0].value*1;
		}
		// SUMME AUSGEBEN
		document.getElementsByName("WKSUMME")[0].value=preisFormat(lGesamtSumme,2);
		document.getElementById("summe").innerHTML=preisFormat(lGesamtSumme,2)+" €";
	}
}

function saveWK(pRedirect,pButton,pTargetDir)
{
	if (pButton) pButton.disabled=true;
	if (!pTargetDir) pTargetDir="";
	var lAction = "page.php?id=order&detail=warenkorb&mode=saveWK";
	if (pRedirect=="products") lAction = lAction + "&redirect="+escape("page.php?id=products&range=SOB&enter=SOB");
	else if (pRedirect=="album") lAction = lAction + "&redirect="+escape("page.php?id=album&detail=list&loadalbum="+pTargetDir+"&range=WA&enter=WA");
	else if (pRedirect=="dealerlist") lAction = lAction + "&redirect="+escape("page.php?id=dealer&force=1&nextpage=warenkorb");
	document.getElementById("frmWK").action = lAction;
	document.getElementById("frmWK").submit();
}

function emptyWK(pButton)
{
	if (confirm("Wollen Sie Ihren Warenkorb wirklich leeren?")) window.location="page.php?id=order&detail=warenkorb&mode=emptyWK";
}

// WARENKORB

function deleteImagesWK()
{
	var lIndezes=getMarkedIndezes();
	if (lIndezes=="") 
	{
		alert("Es wurden noch keine Bilder markiert!");
		return;
	}	
	if (confirm("Wollen Sie die gewählten Bilder wirklich aus dem Warenkorb entfernen?")) 
	{
		window.location="page.php?id=order&detail=warenkorb&mode=deleteFromWK&indezes="+lIndezes;
	}
}

function gotoOrder()
{
	recalcWK();
	document.getElementById("frmWK").action = "page.php?id=order&detail=form&mode=saveWK";
	document.getElementById("frmWK").submit();
}

function checkElement(pID)
{
	lBool=document.getElementById(pID).checked ? false : true;
	document.getElementById(pID).checked=lBool;
}

// MARKIERTE BILDINDEZES HOLEN
function getMarkedIndezes(pStartIndex)
{
	if (!pStartIndex) pStartIndex=0;
	aIndezes=Array();
	for (var i=0;i<document.getElementsByName("fMarker[]").length;i++) {
		if (document.getElementsByName("fMarker[]")[i].value==1)	{
			aIndezes[aIndezes.length]=(i+pStartIndex);
		}
	}
	return aIndezes.join(",");
}

// CHECKBOX ZUM MARKIEREN ALLER ELEMENTE
function markAllImagesBox(pChecked)
{
	if (pChecked) markImages("all");
	else markImages("none");
}

// BILDER MARKIEREN
function markImages(pWhat)
{
	var lStartIndex=-1;
	var lEndIndex=-1;
	// Gibt es einen Seitenindex? (Start und Ende)
	if (document.getElementById("PageStartIndex"))
	{
		lStartIndex=document.getElementById("PageStartIndex").value;
		lEndIndex=document.getElementById("PageEndIndex").value;
	}
	
	for (var i=0; i<document.getElementsByName("BILDID[]").length; i++)
	{
		// Ist der aktuelle Index zwischen Start- und Endindex
		if (lStartIndex!=-1) lImageInRange = (i>=lStartIndex && i<lEndIndex) ? true :false;
		else lImageInRange = false;
		
		// Unterscheiden des Aufrufes
		switch (pWhat) 
		{
			// Alle markieren, aktuelle Seite auch "checken"
			case "all": 
				document.getElementsByName("fMarker[]")[i].value=1;
				if (lImageInRange) document.getElementsByName("fMarker[]")[i].checked=true; 
				break;
				// Nur die Bilder der aktuellen Seite markieren (Counter in fMarker)
			case "page": 
				if (lImageInRange) 
				{
					document.getElementsByName("fMarker[]")[i].value=1; 
					document.getElementsByName("fMarker[]")[i].checked=true; 
				} 
				else
				{
					document.getElementsByName("fMarker[]")[i].value=0; 
					document.getElementsByName("fMarker[]")[i].checked=false; 
				} 
				break;
			// Alle abwählen
			case "none": 
				document.getElementsByName("fMarker[]")[i].value=0; 
				if (lImageInRange) document.getElementsByName("fMarker[]")[i].checked=false; 
				break;	
		}		
	}
}

// Supportformular anzeigen
function showSupport()
{
	window.open("/webalbum/support.php","SupportWindow","width=700,height=400,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no");
}

// Fenster öffnen
function openWindow(pUrl, pWidth, pHeight, pScroll, pResize) {	
	var popUpWindow = window.open(pUrl,"PWM4PopUp"+getTS(),'width='+pWidth+',height='+pHeight+',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars='+pScroll+',resizable='+pResize); 
}

// Timestamp erzeugen
function getTS()
{
	var oDate = new Date();
	return oDate.getMilliseconds();
}