/* Javascript zur Berechnung von Auszahlungen bzw Preisen für den
 * Amazon-Marketplace. (http://www.amazon.de/)
 * (c) 2006 Till Wiebke, Version 1.0 vom 14.3.2006
 * Amazon-Gebühren/-Provisionen zuletzt geprüft am 12.3.2006
 */

var betrag, gruppe, provision, versand, versandgebuehr, ust, gebuehren;
var ergebnis;
var verkaufsgebuehr = 0.99;

// Errechnet den notwendigen Amazon-Marketplace-Preis, wenn der Wert im
// Feld Betrag die Summe des auszuzahlenden Geldes ist.
function preis(formular) {
	if(leseEingaben(formular)) {
		ergebnis = (betrag + versandgebuehr * (1+ust) + verkaufsgebuehr
			* (1+ust) - versand) / (1 - provision - provision * ust);
		formular.ergebnisbeschreibung.value = "Marketplace-Preis:";
		formular.ergebnis.value = formatEuro(Math.round(ergebnis*100)/100);
	}
}

// Errechnet die Höhe der Auszahlung inklusive Versandkostengutschrift 
// des eingegebenen Preises.
function auszahlung(formular) {
	if(leseEingaben(formular)) {
		gebuehren = Math.round((betrag*provision + verkaufsgebuehr + 
			versandgebuehr)*100)/100;
		ergebnis = betrag - Math.round((gebuehren * (1+ust))*100)/100 + versand;
		formular.ergebnisbeschreibung.value = "Auszahlung:"
		formular.ergebnis.value = formatEuro(Math.round(ergebnis*100)/100);
	}
}

// Eingaben einlesen und überprüfen. Liefert false zurück wenn es einen
// Eingabefehler gegeben hat. Wenn alles OK ist, liefert die Funktion 
// true zurück.
function leseEingaben(formular) {
	betrag = lesePosZahl(formular.betrag);
	if(!(betrag<0)) {
		ust = leseProzent(formular.steuer);
		if(ust!=-1)
			if(ust>=0 && ust<=100) {
				ust /= 100;
				switch(gruppe = Number(formular.gruppe.value)) {
					case 1:
					case 2:
					case 5:
					case 6:
					case 7:
						provision = 0.15;
						versand = 3;
						versandgebuehr = 1.16*(1/(1+ust));
						break;
					case 3:
						provision = 0.1;
						versand = 4;
						versandgebuehr = 0.92*(1/(1+ust));
						break;
					case 4:
					case 8:
						provision = 0.15;
						versand = 4;
						versandgebuehr = 0.92*(1/(1+ust));
						break;
					default:
						alert("Oooops! Konnte ausgewählte Produkt" +
							"gruppe nicht zuordnen.");
						return false;
				}
			}
			else
				return false;
		else
			return false;
	}
	else
		return false;
	return true;
}

function lesePosZahl(feld) {
	var tmp = Number(feld.value.replace(",","."));
	if(isNaN(tmp) || feld.value.length == 0 || tmp < 0) {
		alert("Bitte geben Sie eine gültige positive Zahl ein.");
		feld.value = "";
		feld.focus();
		return -1;
	}
	return tmp;
}

function leseProzent(feld) {
	var tmp = lesePosZahl(feld)
	if(!(tmp<0))
		if(tmp>100) {
			alert("Bitte geben Sie einen Wert zwischen 0 und 100 ein.");
			feld.value = "";
			feld.focus();
			return -1;
		}
		else
			return tmp;
	return -1;
}

function formatEuro(betrag) {
	var tmp = String(betrag).replace(".",",");
	if(tmp.lastIndexOf(",") == -1)
		return tmp + ",00";
	else if(tmp.lastIndexOf(",") == tmp.length-2)
		return tmp + "0";
	else
		return tmp;
}