/* Javascript implementation of a calculater for school fees for the Montessori School, Berne, Switzerland. */
/* (C) 2007 Montessori Schule Bern. All rights reserved. */

// Actually, these are constants, but "const" doesn't work in IE 6...

var freibetrag_vermoegen = 100000;     // Bei kleinerem Vermögen ist der Vermögensanteil unwirksam.
var minimal_einkommen    =  15000;     // Unterhalb dieses Einkommens wird nur das minimale Schulgeld fällig.
                                       // (Plus ein eventueller Vermögensanteil.)

var minimal_beitrag      =    600;     // Minimales Schulgeld, CHF
var maximal_beitrag      =   1240;     // Maximales Schulgeld, CHF

var einkommensprozent    =      0.75;  // Prozent, d.h. 7.5 Promille
var vermoegensprozent    =      0.1;   // Prozent, d.h. 1.0 Promille
var weiterekinder        = new Array (100, 75, 25, 0, 0, 0, 0, 0, 0); // Prozent des Schulgeldes

function hide_result ()
{
  document.getElementById ("base_text").style.display = "none";
  document.getElementById ("income_text").style.display = "none";
  document.getElementById ("asset_text").style.display = "none";
  document.getElementById ("one_child_text").style.display = "none";
  document.getElementById ("result_text").style.display = "none";
  document.getElementById ("base_amount").style.display = "none";
  document.getElementById ("income_amount").style.display = "none";
  document.getElementById ("asset_amount").style.display = "none";
  document.getElementById ("one_child_amount").style.display = "none";
  document.getElementById ("result_amount").style.display = "none";
  return false;
}

function getval (id, default_value)
{
  var fld = document.getElementById (id);

  if (fld == null) return -1;

  var content = fld.value;

  if (content == null || content.length == 0) {
    if (default_value != null) {
      content   = default_value;
      fld.value = default_value;
    } else {
      alert ("Sie müssen ein " + document.getElementById (id +"lbl").firstChild.nodeValue + " angeben!");
      fld.focus();
      return -1;
    }
  }

  var regexp = /^[0-9]+([.][0-9]*|)$/;
  // Allow cents to be input (although they won't have any effect on the result.

  // Check that only digits were input
  if (!regexp.test (content)) {
    alert ("Bitte geben Sie nur Zahlen als " + document.getElementById (id +"lbl").firstChild.nodeValue + " ein!");
    fld.focus();
    return -1;
  }

  return content;
}

function calculate ()
{
  var einkommen = getval ("incomefld", null);
  if (einkommen < 0) return false;

  var vermoegen = getval ("assetfld", null);
  if (vermoegen < 0) return false;

  var kinder = getval ("children", "1");
  if (kinder < 0) return false;

  var schulgeld = minimal_beitrag;
  var einkommens_beitrag = 0;
  var vermoegens_beitrag = 0;

  if (einkommen > minimal_einkommen) {
    einkommens_beitrag = Math.round ((einkommen - minimal_einkommen) * einkommensprozent / 100);
    schulgeld = schulgeld + einkommens_beitrag;
    if (schulgeld >= maximal_beitrag) einkommens_beitrag = maximal_beitrag - minimal_beitrag;
  }

  if (vermoegen > freibetrag_vermoegen && schulgeld < maximal_beitrag) {
	vermoegens_beitrag = Math.round ((vermoegen - freibetrag_vermoegen) * vermoegensprozent / 100);
	if (schulgeld + vermoegens_beitrag > maximal_beitrag) vermoegens_beitrag = maximal_beitrag - schulgeld;
	schulgeld = schulgeld + vermoegens_beitrag;
  }

  if (schulgeld > maximal_beitrag) schulgeld = maximal_beitrag;

  /* No cents: round to CHF */
  schulgeld = Math.round (schulgeld);

  /* Construct answer */
  var base_result = document.getElementById ("base_amount");
  base_result.innerHTML = "" + minimal_beitrag + ".&mdash;";
  /* Don't use setAttribute; it doesn't work on IE 6 */
  base_result.style.display = "inline";
  document.getElementById ("base_text").style.display = "inline";

  var income_result = document.getElementById ("income_amount");
  income_result.innerHTML = "" + einkommens_beitrag + ".&mdash;";
  income_result.style.display = "inline";
  document.getElementById ("income_text").style.display = "inline";

  var asset_result = document.getElementById ("asset_amount");
  asset_result.innerHTML = "" + vermoegens_beitrag + ".&mdash;";
  asset_result.style.display = "inline";
  document.getElementById ("asset_text").style.display = "inline";

  var one_child_result = document.getElementById ("one_child_amount");
  one_child_result.innerHTML = "<b>" + schulgeld + ".&mdash;<\/b>"
  one_child_result.style.display = "inline";
  document.getElementById ("one_child_text").style.display = "inline";

  if (kinder > 1) {
    /* Calculate fee for all children */
    var prozent = 100;
    for (i = 1; i < kinder; i++) {
      prozent = prozent + weiterekinder[i];
    }
    schulgeld = schulgeld * prozent / 100;

    /* Still no cents: round to CHF */
    schulgeld = Math.round (schulgeld);

    var result_span = document.getElementById ("result_text");
    result_span.innerHTML = "Für " + kinder + " Kinder: CHF";
    result_span.style.display = "inline";
    result_span = document.getElementById ("result_amount");
    result_span.innerHTML = "<b>" + schulgeld + ".&mdash;<\/b>";
    result_span.style.display = "inline";
  }
  return false;
}
