
//				V A R I A B L E N
var summeVersand=0; // global
var firstLoop=true; // Schalter für Pakete
var paket=0; // Anzahl der Pakete (global)
var aufpreis=0;   // globaler Aufpreis

//				A R R A Y S
var preis= new Array(); // alle Preise
var anzahl= new Array(); // alle Mengenangaben
var paketgewicht= new Array(); // Arraygröße: Anzahl der Pakete
var pakettarif= new Array(); // Arraygröße: Anzahl der Pakete

//			K O N S T A N T E N
var VERSAND_MAX=1500;

//Sonderfälle (Stein u.a.)
var aufpreisStein=0; // falls andere Steinart als GW gewählt wird (global)


/**************************************************************************************************************************************
/******														P R O G R A M M - T E I L										**********
***************************************************************************************************************************************/

///   START  
function setdefault()
	{
	resetVersand();
	resetAllFields(); //Felder auf Ausgangspostition -> setPosten -> gesamtSumme()
	}
	
	
//***********************************************	Z U R Ü C K S E T Z E N	***********************************************************

//  													VERSAND AUF 0 SETZEN
function resetVersand()
	{
	summeVersand=0;
	var element;
	var abholungID;
	
	//  Alle Array-Wert auf 0 setzen
	if(paket>0)
		{
		for (var i=0;i<paket;i++)
			{
			paketgewicht[i]=0;
			pakettarif[i]=0;
			}
		}
		
//    Select-Feld zurücksetzen
//   alle Elemente nach Abholung untersuchen
	for(var i=0;i<document.folio.length;i++)
		{
		element=document.folio.elements[i];
		if(element.type=="hidden" && element.name=="_abholung")
			{
			abholungID=element.value;
			}
		}
//   Select-Feld auf Abholung setzen
	if(document.folio.versandzoneID!=null)
		{
		document.folio.versandzoneID.value=abholungID;
		}
		
		
		
	//  Versandkosten-Summe=0
	if(document.all)	document.all("versandkosten").innerHTML=currency(0); 
	else if(getBrowser()=="Netscape") //NN - Mozilla
		{
		with(document.layers("versandkosten").document)
			{
			open();
			write(innerHTML=currency(0));
			}
		}
	}
	
	
// 														ALLE FELDER ZURÜCKSETZEN 
//  alle Checkboxen des Dokuments leeren und deaktivieren 
//  und alle Textfelder auf 0 stellen
function resetAllFields()
	{
	paket=0;
	for(var i=0;i<document.folio.length;i++)
		{
		var ds=document.folio.elements[i];
		if(ds.type=="checkbox")
			{
			ds.checked=false;
			//ds.disabled=true;
			}
		if(ds.type=="text" && ds.name.substring(0,6)=="anzahl")
			{
			ds.value="0";
	
			var id=ds.name.substring(6);
			//display(id,true); //Schrift dunkelgrau setzen
			setPosten(0,id,0); // alle Posten auf 0 setzen
			}
		}
	}
	
//******************************************************************************************************************************

//			AUFPREIS FÜR STEIN BERECHNEN
function calcSteinAufpreis()
	{
	var steinID=document.folio.steinID.value;
	
	for (var i=0;i<document.folio.length;++i)
			{
			var element=document.folio.elements[i];
			// falls die gewählte Option dem versteckten Feld entspricht
			// Erkennungszeichen: _aufpreis (1. Teil des Hiddenfield- Namen)
			// steinID= 2. Teil des Hiddenfield-Namens
				
			if(element.type=="hidden" && element.name.substring(0,9)=="_aufpreis" && steinID==element.name.substring(9))
				{
				aufpreisStein=element.value; // prozentueller Aufschlag
				var currSumme=parseFloat(summeZubehoer()*(aufpreisStein/100)); // Steinaufpreis für aktuell gewählte Listenpunkte
				if(document.all)
					{
					document.all("aufpreis_stein").innerHTML=currency(currSumme); //IE
					}
				else
					{
					with(document.layers("aufpreis_stein").document)
						{
						open();
						write(innerHTML=currency(currSumme));
						}
					}
				}
			}
	
	gesamtsumme(); //bei jedem Wechsel der Versandart - Endsumme anzeigen
	}
	
	
//******************************************************************************************************************************
//												V E R S A N D 	 B E R E C H N E N
function calcVersand()
	{
	var versand=0;
	var tmp=0;
	var versandtext="";
	var element;
	var setGewicht=0;
	var setVersand=0;
	var grundtarif=0;
	var versandzoneID=document.folio.versandzoneID.value;
	
	summeVersand=0;
	
	for (var i=0;i<document.folio.length;++i)
			{
			element=document.folio.elements[i];

			//   Grundtarif
			if(element.type=="hidden" && element.name.substring(0,11)=="_grundtarif" && versandzoneID==element.name.substring(11))
				{
				grundtarif=parseFloat(element.value); // Grundtarif
				}
				
			//    Werte der Paketeinheiten aus DB
			if(element.type=="hidden" && element.name.substring(0,6)=="_paket" && firstLoop)
				{
				paketgewicht[paket]=element.name.substring(6);
				pakettarif[paket]=element.value;
				paket++; // global
				}
				
			if(element.type=="hidden" && element.name.substring(0,12)=="_versandzone" && versandzoneID==element.name.substring(12))
				{
				aufpreis=parseFloat(element.value); // Prozentueller Aufpreis
				}
			}
			
			
	//   Setgewicht (falls vorhanden) einfügen
				setgewicht=0;
				if(document.folio._setgewicht!=null)	setGewicht=parseFloat(document.folio._setgewicht.value);
				if(document.folio._setversand!=null)	setVersand=parseFloat(document.folio._setversand.value)*(1 + aufpreis/100);
				gewicht = setGewicht + parseFloat(gewichtZubehoer());
				
	
		
		//    Versandkosten anhand der Paketeinheiten berechnen
			for(var i=0;i<paket;i++)
				{
				versand=pakettarif[i];
				if(gewicht<paketgewicht[i])	break;
				}
				
				//   Versandkosten gesamt werden in globaler Variable gespeichert (Seiteneffekt)
				summeVersand+=setVersand + parseFloat(Math.ceil(grundtarif + versand*(1 + aufpreis/100))); // auf nächsten Eurobetrag aufrunden
				
				firstLoop=false;   //bei künftigen Durckläufen Vermehrung der Paketeinheiten verhindern
				if(summeVersand>VERSAND_MAX)	summeVersand=VERSAND_MAX; // Sonderfall: Maximale Liefergebühr erreicht
				if(grundtarif==0)				summeVersand=0; //   Nur bei Abholung ist Grundtarif 0 (dann fallen prinzipiell keine Versandkosten an)
				//alert("Set Versand: " + setVersand + "\nSetgewicht: " + setGewicht + "\nGewicht: " + gewicht + "\nGrundtarif: " + grundtarif + "\nAufpreis: " + aufpreis +  "\nPakettarif (versand): " + versand + "\nSumme Versand: " + summeVersand);
			}
	
	
	
	
	
//			HAUPTFUNKTION ZUR BERECHNUNG EINES EINZELPOSTENS
//    Einzelposten aus dem Produkt der Anzahl und des Einzelpreises berechnen
function calcPosten(anzahl,id,preis)
	{
	if(anzahl<0 || isNaN(anzahl))	
		{
		alert("Sie müssen im Anzahlfeld positive Zahlen oder 0 eingeben!");
		return false;
		}
	//erst Checkbox aktivieren
	activateCheckbox(anzahl,id);
	
	// anschliessend erst Endsumme berechnen und dann Posten (und Endsumme) setzen 
	setPosten(anzahl,id,preis);
	}
	
	
	
	
// falls die Checkbox geändert wird das Textfeld auf 0 oder 1 gesetzt und
function changeTextField(preis,anzahl,checked,id)
	{
		for(var i=0;i<document.folio.length;i++)
			{
			var ds=document.folio.elements[i];
			//if(ds.type=="text")	alert("Textid: " + ds.name.substring(6) + "\nid: " + id);
			if(ds.type=="text" && ds.name.substring(6)==id) //stimmen die Bezeichnung der Checkbox und des Textfeldes überein
				{
				if(!checked)					
					{
					ds.value="0"; // falls Checkbox deaktivier - Anzahl =0
					//display(id,false);
					setPosten(0,id,0); // preis kann als Produkt ruhig 0 sein
					}
				if(checked && ds.value=="0")	
					{
					//display(id,true);
					ds.value="1"; // bei gerade aktivierter Checkbox UND Anzahl=0 - automatisch Anzahl=1
					setPosten(1,id,preis); // anzahl=1 (default)
					}
				}
			}
		
	}
	
	
//     einzelne Posten werden gesetzt - Versand berechnet - Gesamtsumme berechnet
function setPosten(anzahl, id, preis)
	{
	if(document.all)	
		{
		document.all("posten" + id).innerHTML=currency(anzahl * preis); //IE
		}
		
	else if(document.layers) //NN - Mozilla
		{
		with(document.layers["posten" + id].document)
			{
			open();
			write(currency(anzahl*preis));
			}
		}
	summeVersand=0;  // Gesamtsumme (GLOBAL!!!!) muss auf 0 zurückgestellt werden
	calcVersand(); // Versandkosten werden berechnet und in globaler Veriable abgelegt
	gesamtsumme();
	}
	

	
//  falls die Zahl im Textfeld sich ändert und kleiner gleich 0 wird: Checkbox automatisch deaktivieren 	
function activateCheckbox(anzahl,id)
	{
	var check=true;
	var ds;
	if(anzahl<=0)	check=false; 
		
		for(var i=0;i<document.folio.length;i++)
			{
			ds=document.folio.elements[i];
			if(ds.type=="checkbox" && ds.name.substring(5)==id)	 // falls Typ=Checkbox und ID der Checkbox übereinstimmen
				{
				if(check)	
					{
					ds.checked=true;
					//display(id,true); // Anzeige normal
					}
				else	// falls die Anzahl der Artikel <0 wird die Kästchenmarkierung gelöst und das Kästchen deaktiviert
					{
					ds.checked=false;
					//display(id,false); //Anzeige=grau
					}
				}
			}
	}
	
	
//   Endsumme aus Zubehörsumme, Setpreis-Summe und den anderen Berechungsposten (Versand, MWST) 
//	berechnen und anzeigen
function gesamtsumme()
	{
	var summeZubehoer0=parseFloat(summeZubehoer());
	var netto0=parseFloat(document.folio.setpreis.value) + parseFloat(summeVersand) + parseFloat(summeZubehoer0 * (1+aufpreisStein/100));
	var mwstsatz0=parseFloat(netto0 * document.folio.mwst.value/100.0);
	var gesamtsumme0=netto0 + mwstsatz0;
	//alert("summeZubehör: " + summeZubehoer0 + "\nnetto0: " + netto0 + "\nmwstsatz0: " + mwstsatz0 + "\ngesamtsumme0: " + gesamtsumme0);
	
	
	//   Die wichtigsten Eckdaten der Bestellung senden
	document.folio.order_versandkosten.value=summeVersand;
	document.folio.order_zubehoer.value=summeZubehoer0;
	document.folio.order_netto.value=netto0;  // Gesamtabrechnung (exkl. MWSt)
	document.folio.order_gesamtsumme.value=gesamtsumme0;
	
	if (getBrowser()=="Microsoft")//IE
		{
		document.all("summezubehoer").innerHTML=currency(summeZubehoer0); 
		document.all("gesamtsumme").innerHTML=currency(gesamtsumme0); 
		document.all("mwstsatz").innerHTML=currency(mwstsatz0); 
		document.all("netto").innerHTML=currency(netto0); 
		document.all("versandkosten").innerHTML=currency(summeVersand); //IE
		
		
		//   Aufpreis Stein miteinberechnen
		if(document.folio.steinID!=null)
			{
			document.all("aufpreis_stein").innerHTML=currency(summeZubehoer0 * (aufpreisStein/100)); // Aufpreis Stein
			}
		}
		
	else if(getBrowser()=="Netscape") //NN - Mozilla
		{
		with(document.layers("summezubehoer").document)
			{
			open();
			write(innerHTML=currency(summeZubehoer0));
			}
		with(document.layers("gesamtsumme").document)
			{
			open();
			write(innerHTML=currency(gesamtsumme0));
			}
		with(document.layers("mwstsatz").document)
			{
			open();
			write(innerHTML=currency(mwstsatz0));
			}
		with(document.layers("netto").document)
			{
			open();
			write(innerHTML=currency(netto0));
			}
		with(document.layers("versandkosten").document)
			{
			open();
			write(innerHTML=currency(summeVersand));
			}
		}
	}
	
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++						H I L F S F U N K T I O N E N 									+++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// Feldwerte hellgrau oder dunkelgrau anzeigen
function display(id,aktiv)
	{
	/*
	if(aktiv)
		{
		document.getElementById("spalte1" + id).style.color="#333333";
		document.getElementById("spalte2" + id).style.color="#333333";
		document.getElementById("spalte3" + id).style.color="#333333";
		document.getElementById("spalte4" + id).style.color="#333333";
		}
	else
		{
		document.getElementById("spalte1" + id).style.color="#dddddd";
		document.getElementById("spalte2" + id).style.color="#dddddd";
		document.getElementById("spalte3" + id).style.color="#dddddd";
		document.getElementById("spalte4" + id).style.color="#dddddd";
		*/
		}
	
	
	
	
	
//  Die Summe aller aktivierten Felder berechnen (Teilsumme)
function summeZubehoer()
	{
	var summe=0;
	var element;
	var wert=0; //Durchlaufvariable um dichten Kontext zu erzeugen
	for(var i=0;i<document.folio.length;i++)
		{
		element=document.folio.elements[i];  // Preis Feld in Array füllen
		if(element.type=="hidden" && element.name.substring(0,5)=="preis")	
			{
			wert++; //da i nicht 1 ist (es treten vorher und zwischen den relevanten Feldern andere Felder auf) muss eine eigene Zählvariable initiert werden
			preis[wert]=parseFloat(element.value);
			}
			
		if(element.name.substring(0,6)=="anzahl" && element.type=="text") //Anzahl-Feld in Array füllen
			{
			anzahl[wert]=parseFloat(element.value);
			summe+=anzahl[wert]*preis[wert];
			}
		}
	return summe;
	}
	
	
	
//  Die Summe aller aktivierten Felder berechnen (Teilsumme)
function gewichtZubehoer()
	{
	var currGewicht=0;
	var currVersand=0;
	var element;
	var gewicht=0;
	
	for(var i=0;i<document.folio.length;i++)
		{
		element=document.folio.elements[i];  // Gewicht der versteckten Felder in Array laden
		
		//   aktueller Versandwert (auf globale Versandvariable aufrechnen)
		if(element.type=="hidden" && element.name.substring(0,8)=="_versand" && element.name.substring(0,12)!="_versandzone")
			{
			currVersand=parseFloat(element.value);
			}
			
		//    aktuelles Gewicht (lokaler Rückgabewert)
		if(element.type=="hidden" && element.name.substring(0,8)=="_gewicht")	
			{
			currGewicht=parseFloat(element.value);
			}
			
		//   Gewicht und Versand (Versand nur bei 1. Funktionsaufruf) mit Anzahl multiplizieren
		if(element.name.substring(0,6)=="anzahl" && element.type=="text") //Anzahl-Feld in Array füllen
			{
			currGewicht*=element.value;
			if(!isNaN(currVersand) && currVersand!=0)		//firstLoop
				{
				currVersand*=element.value;  //Anzahl der Artikel
				currVersand=currVersand*(1+aufpreis/100)  // Versand aufrechnen
				}
			}
			
			
		//  falls Artikel aktiviert: Versand auf globale Werte aufrechnen (Seiteneffekt!) und Gewicht zurückgeben
		if(element.name.substring(0,5)=="aktiv" && element.type=="checkbox" && element.checked==true) // Checkbox prüfen
			{
			//alert("aktuelles Gewicht: " + currGewicht);
			if(!isNaN(currVersand) && currVersand!=0)		// firstLoop
				{
				currGewicht=0; // fixe Versandeingabe hat Priorität vor Gewicht
				summeVersand+=currVersand; //  ACHTUNG!!!   global;
				}
			gewicht+=currGewicht;
			currGewicht=0;
			}
		}
	return gewicht;
	}
	
