/*
* hilfsfunktionen.js
*
* Hierbei handelt es sich um die JavaScript-Datei, welche alle global benötigten
* Funktionen bereitstellt. Sie wird per <script>-Tag in jedes HTML-Dokument, welches
* JavaScript-Funktionalitäten benötigt, eingebunden.
*
*/


/************************************* AJAX-Initialisierung ******************************************/


// Deklaration der globalen XMLHttpRequest-Variable
var ajax=null;


// Instanzieren des XMLHttpRequest-Objektes


	// Instanzierungsversuch Mozilla, Opera, Safari sowie Internet Explorer 7

    if (typeof XMLHttpRequest != 'undefined') // wenn ein solches Objekt existiert
    {
        // Objekt instanzieren
        ajax = new XMLHttpRequest();
    }


    if (!ajax) // Wenn obiges nicht funktioniert haben sollte
    {

        // Instanzierungsversuch Internet Explorer 6 und älter

        try
        {
            // Objekt instanzieren (Microsoft-spezifisch)
            ajax  = new ActiveXObject("Msxml2.XMLHTTP");
        }

        catch(e) // Wenn obiges nicht funktioniert haben sollte
        {
            try
            {
                // Objekt instanzieren (Microsoft-spezifisch)
                ajax  = new ActiveXObject("Microsoft.XMLHTTP");
            }

            catch(e) // Wenn auch der letzte Versuch nicht geglückt ist
            {
                // Variable vorsichtshalber wieder auf null setzen
                ajax  = null;

                // Fehlermeldung ausgeben:
                window.alert('Ihr Browser unterstützt keine AJAX-Funktionalitaet.');
            }
        }
    }

/*****************************************************************************************************/




/********************************** Globale Hilfsfunktionen ******************************************/




/* isNumeric(eingabe)
*
* Diese Funktion überprüft, ob es sich bei einem String
* um eine gültige Zahl handelt.
*
* Parameter:
************
* eingabe (eingegebener String)
*
* Rückgabewert:
***************
* true, wenn die Eingabe eine gültige Zahl ist
* false, wenn die Eingabe keine gültige Zahl ist
*
* Wird benutzt von:
*******************
* interne Verwendung durch AJAX-Funktionen
*
* Benutzt:
**********
* nichts
*/
function isNumeric(eingabe)
{
	// String mit gültigen Zeichen
	var gueltigeZeichen = "0123456789.";

   	// Boolean-Variable für die Rückgabe
	var isNumeric=true;

	// Schleife über die Länge der Eingabe
	for (i = 0; i < eingabe.length; i++)
	{
		// Zeichen an der aktuellen Stelle
		char = eingabe.charAt(i);

		// Wenn das Zeichen an der aktuellen Stelle nicht in den
		// gütigen Zeichen vorkommt
		if (gueltigeZeichen.indexOf(char) == -1)
		{
			// Rückgabewert auf false setzen
			isNumeric = false;

			// Schleife abbrechen
			break;
		}
	}

	// true oder false zurückgeben
	return isNumeric;
}




/* ampersandEscape(text)
*
* Diese Funktion ersetzt jedes Kaufmannsund in einem übergebenen
* String durch seine URL-encodete Repräsentation um Probleme beim
* Verschicken von Texten per AJAX zu vermeiden.
*
* Parameter:
************
* text	(Text, aus dem die Kaufmannsunds entfernt werden sollen)
*
* Rückgabewert:
***************
* Text mit ersetzten Kaufmannsunds
*
* Wird benutzt von:
*******************
* interne Verwendung durch AJAX-Funktionen
*
* Benutzt:
**********
* nichts
*/
function ampersandEscape(text)
{
	// Deklarieren und Initialisieren des Rückgabetextes
	returntext = "";

	// Schleife über die Länge des übergebenen Textes
	for(i=0; i<text.length; i++)
	{
		// Wenn das Zeichen an der aktuellen Stelle ein
		// Kaufmannsund ist
		if(text.charAt(i) == '&')
		{
			// Ersetzen des Zeichens durch seine URL-encodete
			// Repräsentation und anhängen an den Rückgabe-
			// text
			returntext += "%26";
		}

		else
		{
			// Zeichen an den Rückgabetext anhängen
			returntext += text.charAt(i);
		}
	}

	// Rückgabetext zurückgeben
	return returntext;
}




/* konvertiereKommaZuPunkt(eingabe)
*
* Diese Funktion ersetzt jedes Komma in einem String durch einen
* Punkt, um der allgemeinen Dezimalschreibweise (z.B. in MySQL)
* gerecht zu werden.
*
* Parameter:
************
* eingabe	(Eingabestring, in dem Kommata durch Punkte ersetzt werden sollen)
*
* Rückgabewert:
***************
* Text mit ersetzten Kommata
*
* Wird benutzt von:
*******************
* interne Verwendung durch AJAX-Funktionen
*
* Benutzt:
**********
* nichts
*/
function konvertiereKommaZuPunkt(eingabe)
{
	// Deklaration und Initialisierung der Rückgabevariable als Leerstring
	konvertiert = "";

	// Schleife über die Länge des Eingabestrings
	for(i=0; i<eingabe.length; i++)
	{
		// Wenn das Zeichen an der aktuellen Stelle ein Komma ist
		if(eingabe.charAt(i) == ',')
		{
			// Punkt an den Ausgabestring anhängen
			konvertiert += '.';
		}

		// Wenn das Zeichen an der aktuellen Stelle kein Komma ist
		else
		{
			// das ursprüngliche Zeichen an den Ausgabestring anhängen
			konvertiert += eingabe.charAt(i);
		}

	}

	// Ausgabestring zurückgeben
	return konvertiert;
}




/* gueltigesDatum(datum)
*
* Diese Funktion überprüft, ob ein eingegebenes Datum korrekt ist.
*
* Parameter:
************
* datum	(Datumsstring, der geprüft werden soll)
*
* Rückgabewert:
***************
* true, falls das Datum korrekt ist
* false, falls das Datum inkorrekt ist
*
* Wird benutzt von:
*******************
* interne Verwendung durch AJAX-Funktionen
*
* Benutzt:
**********
* nichts
*/
function gueltigesDatum(datum)
{
   	// Wenn der Datumsstring leer ist
	if (!datum || datum == '')
	{
		// false zurückgeben - Datum ungültig
		return false;
	}

	// Vorsichtshalber Datum explizit in String konvertieren
	datum = datum.toString();

	 // Aufspaltung des Datums in die Teile zwischen den Punkten
	 // und Ausgabe in ein gleichnamiges Array
	datum = datum.split(".");

	// Wenn die Länge des Arrays nicht drei ist
	if (datum.length != 3)
	{
		// false zurückgeben - Datum ungültig
		return false;
	}

   	// Entfernung der fuehrenden Nullen und Anpassung des Monats
	datum[0]=parseInt(datum[0],10);
	datum[1]=parseInt(datum[1],10)-1;

   	// Wenn die Jahreszahl zweistellig angegeben wurde
 	if (datum[2].length==2)
 	{
 		// Vom Jahr 2000 ausgehend 20 vor die Jahreszahl anfügen
 		datum[2] = "20"+datum[2];
 	}

   	// Erzeugung eines neuen Dateobjektes
	var kontrolldatum = new Date(datum[2],datum[1],datum[0]);

  	// Vergleich, ob das eingegebene Datum gleich dem JS-Datum ist
	 if (kontrolldatum.getDate() == datum[0] && kontrolldatum.getMonth() == datum[1] && kontrolldatum.getFullYear() == datum[2])
   	 {
   	 	// true zurückgeben - Datum gültig
   	 	return true;
   	 }

   	 else
   	 {
   	 	// false zurückgeben - Datum ungültig
   	 	return false;
   	 }
}




/* URLDecode(encoded)
*
* Diese Funktion wandelt ein + eines URL-kodierten Strings in ein
* Leerzeichen um.
*
* Parameter:
************
* encoded	(kodierter String)
*
* Rückgabewert:
***************
* Dekodierter String
*
* Wird benutzt von:
*******************
* interne Verwendung durch AJAX-Funktionen
*
* Benutzt:
**********
* nichts
*/
function URLDecode(encoded)
{
	// Regulärer Ausdruck
  	RegExp = /\+/g;

	// String im Klartext zurückgeben
  	return unescape(String(encoded).replace(RegExp, " "));
}




/***************************************************************************************************/