reEmail = /^[\w\.]{2,}@(?:\w{2,}\.)+\w{2,5}$/i;

function addIDs() {
	/* ergaenze bei Inputs IDs gleich Name */
	$('input').each(function(i){
		this.id=this.name;
		$('#'+this.id).attr('checked', false);
	});
	$('select').each(function(i){
		this.id=this.name;
	});
}

function addHandlers(){
	/* ergaenze IDs und Eventhandler */
	addIDs();
	var ins = $('#shop-items input');
	if (ins.val() == '') { ins.val(0); }
	ins.change(function(i) {
		this.value = Math.round(this.value);
		if (this.value == 'NaN') this.value=0;
		summiere();
	});
	$('select').change(summiere);
}

function checkPayment() {
	var art = $('#zahlungsweise').val();
	var inh = $('#konto_inhaber');
	if (art == 'Bankeinzug') {
		if (!inh.val()) {
			inh.val($('#vorname').val() + ' ' + $('#name').val());
		}
	} else {
		$('#shop-account input').val('');
	}
	summiere();
}

function getPorto(land, gruppe, anzahl) {
	/* Porto für eine Artikelgruppe */
	if (Number(anzahl)==0) return 0.0;
	var p = 0.0;
	for (x=0; x<=porto[gruppe][land].length; x++) {
		if (anzahl <= porto[gruppe][land][x][0]) {
			return p + porto[gruppe][land][x][1];
		}
	}
	return p;
}

function summiere() {
	var gesamtsumme = 0.0;
	var portogruppen = new Array();
	var portosumme = 0.0;
	if ($('#zahlungsweise').val() == 'Nachnahme') {
		portosumme = 4.0;
	}
	var land = $('select#land').val();
	if (!land) land='D';
	var anzahl = 0;
	$('#shop-items input').each(function(i){
		var feld = this.id;
		var pgr = katalog[feld][1];
		anzahl += Number(this.value);
		gesamtsumme += this.value * katalog[feld][0];
		if (!(pgr in portogruppen)) portogruppen[pgr] = 0;
		portogruppen[pgr] += Number(this.value);
	});
	$('#anzahl_artikel').val(anzahl);
	$('#summe_artikel').val(gesamtsumme.toFixed(2));
	for (key in portogruppen) {
		portosumme += getPorto(land, key, portogruppen[key]);
	}
	gesamtsumme += portosumme;
	$('#summe_porto').val(portosumme.toFixed(2));
	$('#summe_gesamt').val(gesamtsumme.toFixed(2));
	return gesamtsumme;
}

function getLabel(feld) {
	return feld.parent().parent().children('.label');
}

function validate() {
	var ok = true;
	var requiredFields = ["vorname", "name", "strasse", "ort", "email"];
	var requiredBankFields = ["konto_inh","konto_nr","konto_blz"];
	var f=null;
	var missing = '';
	for (k in requiredFields) {
		var feld = requiredFields[k];
		f = $('#'+feld);
		if ((!f.val()) || (f.val()=='')) {
			f.addClass('error');
			getLabel(f).addClass('error');
			ok = false;
		} else {
			f.removeClass('error');
			getLabel(f).removeClass('error');
		}
	}

	var f = $('#email');
	if (!reEmail.exec(f.val())) {
		getLabel(f).addClass('error');
		ok = false;
	} else {
		getLabel(f).removeClass('error');
	}

	var f = $('#agb');
	if (!f.attr('checked')) {
		f.parent().children().addClass('error');
		ok = false;
	} else {
		f.parent().children().removeClass('error');
	}

	var zw = $('#zahlungsweise');
	if (zw.val() == '0') {
		getLabel(zw).addClass('error');
		ok = false;
	} else {
		getLabel(zw).removeClass('error');
		if (zw.val() == 'Bankeinzug') {
			for (k in requiredBankFields) {
				var feld = requiredBankFields[k];
				f = $('#'+feld);
				if (!f.val()) {
					getLabel(f).addClass('error');
					ok = false;
				} else {
					getLabel(f).removeClass('error');
				}
			}
		}
	}
	if (!ok) {
		alert('Bitte füllen Sie die  markierten Felder aus! ');
	}
	return ok;
}
