﻿// 03.05.2011

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function gibZifferFuerPosition(zeile, spalte)
{
  var sZahl = document.getElementById("txt" + zeile).value;
  var pos = sZahl.length - spalte;
  if (pos < 0) return "&nbsp;"; // wegen IE7-Kompatibilität muss ein geschütztes Leerzeichen mittels "&nbsp;" zurück gegeben werden, sonst gibt es keine Rahmenlinien um die Tabellenzelle (CSS-Fehler des IE7)
  var sZiffer = sZahl.substring(pos, pos+1);
  if (sZiffer == " ") { sZiffer = "&nbsp;"; }
  return sZiffer;
}

function gibErgebnisZifferFuerPosition(iErgebnis, spalte)
{
  var sZahl = iErgebnis.toString();
  var pos = sZahl.length - spalte;
  if (pos < 0) return "&nbsp;"; // wegen IE7-Kompatibilität muss ein geschütztes Leerzeichen mittels "&nbsp;" zurück gegeben werden, sonst gibt es keine Rahmenlinien um die Tabellenzelle (CSS-Fehler des IE7)
  return sZahl.substring(pos, pos+1);
}

function gibErgebnis(anzahl, rechenoperation)
{
  var ergebnis = 0;
  switch (rechenoperation)
  {
    case "-":
      ergebnis = parseInt(document.getElementById("txt1").value);
      for (var i=2; i<=anzahl; i++)
      {
        iEingabe = parseInt(document.getElementById("txt" + i).value);
        ergebnis -= iEingabe;
      }
      break;
    
    case "*":
      var iEingabe1 = parseInt(document.getElementById("txt1").value);
      var iEingabe2 = parseInt(document.getElementById("txt2").value);
      ergebnis = iEingabe1 * iEingabe2; 
      break;

    case "/":
      var iEingabe1 = parseInt(document.getElementById("txt1").value);
      var iEingabe2 = parseInt(document.getElementById("txt2").value);
      ergebnis = iEingabe1 / iEingabe2; 
      break;
    
    default: // "+"
      ergebnis = 0;
      for (var i=1; i<=anzahl; i++)
      {
        iEingabe = parseInt(document.getElementById("txt" + i).value);
        ergebnis += iEingabe;
      }
  }
  return ergebnis;
}

function gibLaengsteZahl(anzahl)
{
  var iMaxLen = 0;
  for (var i=1; i<=anzahl; i++)
  {
    sEingabe = document.getElementById("txt" + i).value;
    if (sEingabe.length > iMaxLen)
    {
      iMaxLen = sEingabe.length;
    }
  }
  return iMaxLen;
}

function pruefeValideEingabe(anzahl)
{
  for (var i=1; i<=anzahl; i++)
  {
    sEingabe = document.getElementById("txt" + i).value;
    if (sEingabe.length == 0)
    {
      return false;
    }
  }
  return true;
}

function sortiereEingabefelder(anzahl, maxId)
{
  // Zwei Eingabefelder sind Minimum, diese verändern auch nie ihre Id (man kann
  // sie nicht entfernen und neu hinzufügen), dann ist keine Sortierung notwendig.
  // Wenn maxId == 3 ist, dann gibt es genau ein zusätzliches Eingabefeld und
  // dieses ist nie entfernt und anschließend neu hinzugefügt worden, denn dann
  // wäre maxId > 3.
  if (maxId <= 3) { return; }
   
  // für Sortierung bei Id=3 starten, da ab dem dritten Eingabefeld die Id's
  // durcheinander gekommen sein können 
  var aktId = 3;
  
  for (var i=3; i<=maxId; i++)
  {
     var objEingabe = document.getElementById("txt" + i);
     if (objEingabe != null)
     {
       if (objEingabe.id != "txt" + aktId.toString())
       {
         objEingabe.id = "txt" + aktId.toString();
         document.getElementById("row" + i).id = "row" + aktId.toString();
       }
       aktId++;
       if (aktId > anzahl) { break; } // Alle Textfelder sortiert    
     }
  }

	// id für die nächste Eingabezeile neu setzen 
	document.getElementById("id").value = anzahl+1;
}

function zeigeEingabe(bReset, bKeepFirstTwoRows)
{
    // Ausgabe (Rechenkästchen) entfernen
    $("#divRechenkaestchen").remove(); 

    // Buttons zur Änderung der Berechnung und Drucken ausblenden
    $("#divButtonsBerechnung").hide();

    if (bReset == true)
    {
      var anzahl = parseInt(document.getElementById("anzahl").value);
      for (var i=anzahl; i>=3; i--)
      {
        removeFormField("#row" + i)
      }
      
      if (!bKeepFirstTwoRows)
      {
        document.getElementById("txt1").value = "";
        document.getElementById("txt2").value = "";
      }

	    // Wert für "anzahl" schreiben
      document.getElementById("anzahl").value = "2";

	    // id für die nächste Eingabezeile neu setzen 
	    document.getElementById("id").value = "3";
    }
    
    // Eingabefelder einblenden
    $("#eingabemaske").show('fast');
  
    // Fokus auf das erste Eingabefeld setzen
    $("#txt1").focus();
}

function zeigeEingabeIRows(bReset, iRows, rechenzeichen, bKeepFirstTwoRows)
{
    // Ausgabe (Rechenkästchen) entfernen
    $("#divRechenkaestchen").remove(); 

    // Buttons zur Änderung der Berechnung und Drucken ausblenden
    $("#divButtonsBerechnung").hide();
	
	if (iRows < 2) iRows = 2; // mind. 2 Eingabefelder
	if (iRows > 10) iRows = 10; // max. 10 Eingabefelder

    var anzahl = parseInt(document.getElementById("anzahl").value,10);
    var iMaxId = parseInt(document.getElementById("id").value,10) - 1;
    sortiereEingabefelderAlle(1, iMaxId, rechenzeichen);

    if (bReset == true)
    {
      anzahl = parseInt(document.getElementById("anzahl").value);
      for (var i=anzahl; i>=iRows; i--)
      {
        removeFormField("#row" + i)
      }

      for (var i=1; i<=iRows; i++)
      {
		var objEingabe = document.getElementById("txt" + i);
		if (objEingabe != null) { document.getElementById("txt" + i).value = ""; }
      }
    }
    
	// Fehlende Eingabefelder hinzufügen
	addMissingFormFields(iRows, rechenzeichen);
	
    // Eingabefelder einblenden
    $("#eingabemaske").show('fast');
  
    // Fokus auf das erste Eingabefeld setzen
    $("#txt1").focus();
}

function addMissingFormFields(iRows, rechenzeichen)
{
	// Fehlende Eingabefelder hinzufügen
    var anzahl = parseInt(document.getElementById("anzahl").value);
    var iMaxId = parseInt(document.getElementById("id").value,10) - 1;
    for (var i=(anzahl-1)+2; i<=iRows; i++)
    {
      addFormField(rechenzeichen, "true", "#row" + iMaxId);
    }
}

