function setValues(nrArray, countArray) {
	var d = document.best;
	
	for (var k = 0; k < nrArray.length; k++) {
		var currentNumber = nrArray[k];
		
		for(var i = 0; i < d.elements.length; i++) {
			// Find current number
			if ((d.elements[i].id == "nr") && (d.elements[i].value == currentNumber)) {
				// The Count[] input element boxes have to be ONE
				// position above the Nr[] input element.
				if (d.elements[i-1].id == "count") {
					d.elements[i-1].value = countArray[k];
				} else {
					alert("Konnte das HIDDEN count input feld nicht finden, da es nicht genau 1 Position über dem nr-input feld ist. (HTML-Text geändert?)");
				}
				break;
			}
		}
	}
	testInput();
}

function testInput() {
	var d = document.best;
	var sum = 0;
	var weight = 0;
	var nothing = "";
	var current_val = 0;
	
	for(var i=0; i< d.elements.length; i++) {
		if (d.elements[i].id == "count") {
			if (d.elements[i].value == nothing || d.elements[i].value == 0) {
				current_val = 0;
				d.elements[i].style.color = "#BB8888";
			} else {
				current_val = d.elements[i].value;
				d.elements[i].style.color = "#553333";
			}
			if(!isPositiveNumerical(current_val)) {
				alert("Bitte nur positive, ganzzahlige Werte eingeben");
				d.elements[i].value = nothing;
			} else {
				for(var k=(i+1); ((k < d.elements.length) && (d.elements[k].id != "count")); k++) {
					if (d.elements[k].id == "price") {
						sum += current_val * d.elements[k].value*1;
					} 
					else
					if (d.elements[k].id == "weight") {
						weight += current_val * d.elements[k].value*1;
					}
				}
			}
		}
		
	}

	d.gespreisfield.value = zero_add(sum);
	
	var shippingCostsGermany = 0;
	var shippingCostsAusland = 0;
	
	var bottles = weight / 900;
	
	var bottleCounts = new Array(12,18,32,72);
	var costsGermany = new Array(700,800,1000,1500,0);
	var costsAusland = new Array(1200,1500,2000,2800,2800);
	
	if (bottles > 0 && bottles <= bottleCounts[1]) {
		shippingCostsGermany = costsGermany[0];
		shippingCostsAusland = costsAusland[0];
	}
	for (var i=1; i < bottleCounts.length; i++) {
		if (bottles > bottleCounts[i-1] && bottles <= bottleCounts[i]) {
			shippingCostsGermany = costsGermany[i];
			shippingCostsAusland = costsAusland[i];
		}
	}
	if (bottles > bottleCounts[bottleCounts.length-1]) {
	    shippingCostsGermany = costsGermany[bottleCounts.length];
		shippingCostsAusland = costsAusland[bottleCounts.length];
	}		
	
	d.numBottles.value = bottles;
	//d.shippingOutputAusland.value = zero_add(shippingCostsAusland);
	d.shippingOutputGermany.value = zero_add(shippingCostsGermany);
	d.shippingCostsGermany.value = shippingCostsGermany;
	//d.shippingCostsAusland.value = shippingCostsAusland;
}


function zero_add(preis_var) {
	
	zw_preis = new String(preis_var/100);
	var laenge_st= zw_preis.length;
      	if ((laenge_st-2)-zw_preis.indexOf('.')==0 && zw_preis.lastIndexOf('.')!=-1) { 
    		zw_preis += "0"; 
		}
        if (zw_preis.lastIndexOf('.')==-1) {
            		zw_preis +=".00";
		}
        if ((laenge_st-2)-zw_preis.indexOf('.')==1) {
			//nichts zu tun
      	}
	  
	  return zw_preis;
}
function validate() 
{
	var d = document.best;
	var sum=0;
	var MIN_NUM_BOTTLES = 6;
	for(var i=0; i< d.elements.length; i++) {
		if (d.elements[i].id == "count") 
		{			
			if (!isNaN(parseInt(d.elements[i].value)))
			{
				sum += parseInt(d.elements[i].value);
			}
		}
	}
	if (sum==0) 
	{
		alert("Bitte tragen Sie die gewünschten Stückzahlen in das Eingabefeld,\ndann können Sie Ihre Bestellung fortsetzen");
		return;
	}
	if (sum < MIN_NUM_BOTTLES)
	{
		alert("Sie haben bisher "+sum+" Flaschen in Ihrem Warenkorb.\nBitte beachten Sie unsere Mindestbestellmenge von "+MIN_NUM_BOTTLES+" Flaschen.");
		return;
	}
	
	document.best.submit();
}

function popup(image_filename, page_title, window_width, window_height) {
	
	var xPos = 20;
    var yPos = 20;
	
	var argString = 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,left='+xPos+',top='+yPos+',width='+window_width+',height='+window_height;
	
	popupWindow = window.document.open("", 'Popup',argString);
	popupWindow.window.document.writeln('<html><head></head><title>'+page_title+'</title>');
	popupWindow.window.document.writeln('<body><div align="center"><img src="'+image_filename+'" alt="'+page_title+'"><br>');
	popupWindow.window.document.writeln('<div style="font-size: 9px; font-family: Arial, Helvetica, sans-serif;">'+page_title+'</div>');
	popupWindow.window.document.writeln('</div></body></html>');
	popupWindow.window.document.close();
	popupWindow.window.focus();
}

function isInputValidExtended() {
	var d = document.best;
	var errors = 0;
	var errorMsg = "Achtung:\n____________________________________________________\n";
	
	if (!isValidStringValue(d.vorname.value, 2, 0)) {
		errorMsg+="\nDas Feld \"Vorname\" (Lieferadresse) scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidStringValue(d.nachname.value, 2, 0)) {
		errorMsg+="\nDas Feld \"Nachname\" (Lieferadresse) scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidStringValue(d.vorname2.value, 2, 0)) {
		errorMsg+="\nDas Feld \"Vorname\" (Rechnungsadresse) scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidStringValue(d.nachname2.value, 2, 0)) {
		errorMsg+="\nDas Feld \"Nachname\" (Rechnungsadresse) scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidStringValue(d.strasse_hausnr.value, 2, 1)) {
		errorMsg+="\nDas Feld \"Strasse / Hausnummer\" scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidStringValue(d.plz.value, 0, 3)) {
		errorMsg+="\nDas Feld \"Postleitzahl\" scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidStringValue(d.wohnort.value, 2, 0)) {
		errorMsg+="\nDas Feld \"Wohnort\" scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidEmail(d.email.value)) {
		errorMsg+="\nDas Feld \"E-Mail Adresse\" scheint fehlerhaft zu sein.";
		errors++;
	}
	if (!isValidStringValue(d.telefon.value, 0, 4)) {
		errorMsg+="\nDas Feld \"Telefonnummer\" scheint fehlerhaft zu sein.";
		errors++;
	}
	if (!isValidStringValue(d.land.value, 1, 0)) {
		errorMsg+="\nDas Feld \"Land\" scheint fehlerhaft zu sein.";
		errors++;
	}
		
	if (errors !=0) {	
		alert(errorMsg);
		return false;
	} else {
		return true;
	}
}

function isInputValid() {
	var d = document.best;
	var errors = 0;
	var errorMsg = "Achtung:\n____________________________________________________\n";
	
	if (!isValidStringValue(d.vorname.value, 2, 0)) {
		errorMsg+="\nDas Feld \"Vorname\" scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidStringValue(d.nachname.value, 2, 0)) {
		errorMsg+="\nDas Feld \"Nachname\" scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidStringValue(d.strasse_hausnr.value, 2, 1)) {
		errorMsg+="\nDas Feld \"Strasse / Hausnummer\" scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidStringValue(d.plz.value, 0, 3)) {
		errorMsg+="\nDas Feld \"Postleitzahl\" scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidStringValue(d.wohnort.value, 2, 0)) {
		errorMsg+="\nDas Feld \"Wohnort\" scheint fehlerhaft zu sein.";
		errors++;	
	}
	if (!isValidEmail(d.email.value)) {
		errorMsg+="\nDas Feld \"E-Mail Adresse\" scheint fehlerhaft zu sein.";
		errors++;
	}
	if (!isValidStringValue(d.telefon.value, 0, 4)) {
		errorMsg+="\nDas Feld \"Telefonnummer\" scheint fehlerhaft zu sein.";
		errors++;
	}
	if (!isValidStringValue(d.land.value, 1, 0)) {
		errorMsg+="\nDas Feld \"Land\" scheint fehlerhaft zu sein.";
		errors++;
	}
		
	if (errors !=0) {	
		alert(errorMsg);
		return false;
	} else {
		return true;
	}
}

function reload() {
	document.location.reload();
}
function check() {
	if (isInputValid()) {
		document.best.submit();
	}
}

function checkExtended() {
	if (isInputValidExtended()) {
		document.best.submit();
	}
}

/************************************************************************
 * Prüfalgorithmen für diverse Eingaben
 */
 
function isPositiveNumerical(argValue) {
	var allowed="0123456789";
	
	for (var i=0; i< argValue.length; i++) {
		if (allowed.indexOf(argValue.charAt(i)) == -1) {
			return false;
		}
	}
	return true;	
}

function isValidNumericalEntry(argValue, minValue, maxValue) {
	if (isNumerical(argValue)) {
		if (argValue <= maxValue && argValue >=minValue) {
			return true;
		}		
	}
	return false;
}

function isValidStringValue(argValue, minCharCount, minNumCount) {
	var nrs = "0123456789";
	var foundNrs=0;
	var foundChars=0;
	
	for (var i=0; i<argValue.length; i++) {
		if(nrs.indexOf(argValue.charAt(i)) != -1) {
			foundNrs++;
		} else {
			//Wenn kein Leerzeichen und keine Zahl eingegeben wurde, so wurde ein Char eingegeben
			if (argValue.charAt(i) != ' ') {
				foundChars++;
			}
		}
	}
	if ((foundNrs >= minNumCount) && (foundChars >= minCharCount))
		return true;
	else
		return false;
}

function isValidEmail(email) {
	var allowed="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var allowed=allowed + allowed.toLowerCase() + "0123456789-@._";
	var f = 0;
	var error = "\nUnerlaubte Zeichen:\n";
	for (var i=0; i< email.length; i++) {
			if (allowed.indexOf(email.charAt(i)) == -1) {
				error = error.concat("("+email.charAt(i)+")\n");
				f++;
			}
	}
	var addpos = email.indexOf("@");
	var first = email.substring(0,addpos);
	var last = email.substring(addpos+1, email.length);
	if (f==0) {
		error="";
		if (addpos != -1) {
			if (last.indexOf("@") == -1) {
					var dotpos = last.indexOf(".");
					if (dotpos != -1) {
						var domN = last.substring(0,dotpos);
						var domE = last.substring(dotpos+1, last.length);
						//if (domN.indexOf(".") == -1 && domE.indexOf(".") == -1) {
							if (domE.length != 0) {
								if (domN.length != 0) {
									if (first.length != 0) {
										//Alles in Ordnung !!
										return true;
									}
									//E-Mailadresse: Adressname fehlt
								}//keine Domainname angegeben
							}//keine Domainendung angegeben
						//}//Höchstens 1 Punkt in der Domainbeschreibung erlaubt
					}//Kein . in der E-Mail Adresse
				}//Höchstens 1 @ erlaubt
		}//Kein @ in der E-Mail Adresse
	}//Zeichenfehler gefunden
	
	return false;
} 

/******************************************************************************
 * Prüfalgorithmen ENDE 
 */
