// Tim Reeves JavaScript for BiR - Preisberechnung für Satellitenkarten

// Stand 2006-11-16

function toEuro(summe) {
  // Returns the numeric "summe" in the string form " 0.000,00"
  // whereby leading zeros are not displayed
  // toFixed() macht bereits kaufmännische Rundung
  if (! summe.toFixed) {
  	var x = "";
	var y = summe.toString();
	var z = y.length;
	var i = y.indexOf(".");
	if (i == -1)
		x = y + ".00";
	else {
		z = z - i - 1;
		if (z == 1)	x = y + "0";
		if (z == 2) x = y;
		if (z  > 2) x = y.slice(0,i+3);
	}
  }
  else {
	var x = summe.toFixed(2);
  }
  var l = x.length;
  if (l>8) {
  	alert('toEuro: Summe "' + x + '" ist zu gross zum Darstellen');
  	return "99.999,99";
	}
  // JavaScript ist nicht C - ein Array() Object kann nicht einzeln indiziert werden
  // Man muss functionen auf das Object anwenden. Also:
  var nch = x.substr(l-2,2);
  var pkt = ".";
  if (l>6)
  	// Es gibt Stellen vor dem Punkt
  	var hch = l == 7 ? " " + x.substr(0,1) : x.substr(0,2);
  else {
  	var hch = "  ";
  	pkt = " ";
	}
  if (l>5)
  	var vor = x.substr(l-6,3);
  else
  if (l==5)
  	var vor = " " + x.substr(0,2);
  else
  	var vor = "  " + x.substr(0,1);
  var erg = hch + pkt + vor + "," + nch;
  return erg;
}

function preis() {
	var anzahlObj = getElemId('f_anzahl');
	var preisObj = getElemId('f_endpreis');
	if (!anzahlObj || !preisObj) return;
	var anz = anzahlObj.value;
	// Trim leading and trailing blanks
	var tanz = anz.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"");
	if (tanz == '') tanz = '0';
	if (tanz != anz) anzahlObj.value = tanz;
	var chkZ = 1;
	for (i = 0; i < tanz.length; ++i)
		if (tanz.charAt(i) < '0' || tanz.charAt(i) > '9') chkZ = -1;
	if (chkZ == -1) {
		alert('Für Satellitenkarten bitte eine Zahl eingeben.');
		anzahlObj.value = '0';
		anzahlObj.focus();
		return;
		}
	if (tanz == '0') { preisObj.value = '     0,00'; return; }
	// Now work out the final price
	ianz = parseInt(tanz);
	cost = (ianz * 10.20) + 4;
	preisObj.value = toEuro(cost);
	return;
}
