//***********************************************************************************************************
//Form Validator
//***********************************************************************************************************

//Ermittelt alle Form Elemente in einem Form
function getFormElements(FormID)
{
  var elString = new String();
	
  //Ein Array der die Radiobuttons Namen speichert damit diese nur einmal geprüft werden
  var checkedgroups = '';
	
  elString += '&Form=' + FormID; 
 	
  //Jedes Element der Form durchgehen und Namen und Value merken
  for (var i=0; i < document.forms[FormID].elements.length; ++i)
  {
    //Das Element speichern
    var element = document.forms[FormID].elements[i];
	
    switch (element.type)
    {   
      case "text":
	  case "file":
      case "textarea":
      case "password":
      case "hidden":
        elString += '&' + element.id;
        elString += '=' + encodeURI(element.value);
        break;
		  
      case "checkbox":
        elString += '&' + element.id;
        if (element.checked == true)
          elString += '=' + encodeURI(element.value);
        else
          elString += '=false';	
        break;
		   
      case "radio":
        var group = document.forms[FormID].elements[element.id];
			
        if (checkedgroups.indexOf("[" + element.id + "]") > -1)
          continue;
        else
        {
          checkedgroups += "[" + element.id + "]";
			
          for (var j=0; j<group.length; j++)
          {
            if (group[j].checked)
            {
              elString += '&' + element.id;
              elString += '=' + encodeURI(group[j].value);
            }
          }
        }
        break;
			
      case "select-one":
      case "select-multiple":
        elString += '&' + element.id;
        var selectValues = ''
        for (var j=0; j < element.options.length; j++)
        {
          var item = element.options[j];
          if (item.selected && item.value != "")
          {
            if (selectValues != '')
			{
              selectValues += ',';
			}
				
            selectValues += encodeURI(item.value);
          }
        }
      elString += '=' + selectValues;
      break;				
    }
  }	
  return elString;
}


//Validierung der Eingabefelder (welche das validiert werden müssen steht im "RequiredFields")
function submitForm(FormID,useFunktionToRun,site,div)
{
  var valStatus = true;
  var reqFields = document.getElementById('RequiredFields').value; 
  if (reqFields != 'NONE')
  {
    var valField = reqFields.split(",");
    var i = 0;
		
    while (i < valField.length)
    {
      if (document.getElementById(valField[i]).value == '')
      {
        valStatus = false;
		try
		{
          document.getElementById('lbl' + valField[i]).className = 'text-rot';
		}
		catch(e)
		{}
      }
      else
	    try
		{
          document.getElementById('lbl' + valField[i]).className = '';
		}
		catch(e)
		{}

	  i += 1;
    }
  }

  if (valStatus == true)
  {
    if (useFunktionToRun == '')
    {
      try
	  {
        document.getElementById('btnSubmit').disabled = true;
	  }
      catch(e)
      {
      }
      
	  document.forms[FormID].submit();
    }
    else
    {
      eval(useFunktionToRun(FormID,site,div));
    }
  }
  else
  {
    alert('Fehlende Angabe(n)');
  }
}


//Markieren der erforderlichen Felder mit einem * Zeichen im Label
function markRequiredFields()
{
  var reqFields = document.getElementById('RequiredFields').value; 
  if (reqFields != 'NONE')
  {
    var valField = reqFields.split(",");
    var i = 0;

    while (i < valField.length)
    {
      if (document.getElementById('lbl' + valField[i]))
	  {
        document.getElementById('lbl' + valField[i]).innerHTML = '*' + document.getElementById('lbl' + valField[i]).innerHTML;
	  }
	  
      i += 1;
    }
  }
}



//***********************************************************************************************************
//Datum + Zeit Überprüfung
//***********************************************************************************************************

//Prüfen auf gültigen Monat
function checkMonatValue(elementID,monat)
{
  if (monat < 1)
    document.getElementById(elementID).value = 1;

  if (monat > 12)
    document.getElementById(elementID).value = 12;
}

//Prüfung auf gültiges Jahr
function checkYearValue(elementID,jahr)
{
  if (jahr < 1900)
    document.getElementById(elementID).value = 1900;

  if (jahr > 2099)
    document.getElementById(elementID).value = 2099;
}

//Prüfen auf gültige Zeit
function checkZeitValue(elementID,datumzeit)
{
  var arrDatumzeit = datumzeit.split(":");

  if (arrDatumzeit[0] < 0 || arrDatumzeit[0] > 23)
    document.getElementById(elementID).value = '12:00';

  if (arrDatumzeit[1] < 0 || arrDatumzeit[1] > 59)
    document.getElementById(elementID).value = '12:00';
}



//***********************************************************************************************************
//Form Fehlerkontrolle und Behandlung
//***********************************************************************************************************

//Fehler hinzufügen
function addFormError(id,text)
{
  //Prüfen ob Array existiert
  if (typeof arrFormErrors == 'undefined')
  {
    arrFormErrors = new Array(); 
	arrFormErrors[0] = new Array(1);
    arrFormErrors[0][0] = '';
    arrFormErrors[0][1] = '';	
  }
  
  //Prüfen ob der Fehler nicht schon im Array existiert
  var idExists = searchErrorIdExists(id);
    
  if (idExists != 'true')
  {
	//Aktuelle Länge des Arrays ermitteln
    var x = arrFormErrors.length;
	
	//Neuer Eintrag hinzufügen
    arrFormErrors[x] = new Array(1);
    arrFormErrors[x][0] = id;
    arrFormErrors[x][1] = text;

    //Fehler anzeigen
    updateErrorView();
    
	//Submit deaktivieren
	document.getElementById('btnSubmit').disabled = true;
  }
}


//Fehler entfernen
function removeFormError(id)
{
  if (typeof arrFormErrors != 'undefined')
  {
    for (i=1; i < arrFormErrors.length; i++)
    {
      if (arrFormErrors[i][0] == id)
	  {
        arrFormErrors.splice(i,i);

        //Fehler anzeigen
        updateErrorView();
        break;
      }
    }
	
	if(arrFormErrors.length == 1)
	{
	  //Submit aktivieren
	  document.getElementById('btnSubmit').disabled = false;
	}
  }
}


//Fehler suchen
function searchErrorIdExists(id)
{
  if (typeof arrFormErrors != 'undefined')
  {
    if(arrFormErrors.length > 0)
    {
      for (i=0; i < arrFormErrors.length; i++)
	  {
	    if (arrFormErrors[i][0] == id)
		{
		  return 'true';
		  break;
		}
	  }
	}
  }
}


//Fehlerliste aktualisieren
function updateErrorView()
{
  var divText = '';
  if (typeof arrFormErrors != 'undefined')
  {
    if(arrFormErrors.length > 1)
    {
	  divText = '<span class="text-fett">Folgende Fehler sind bei Ihrer Eingabe aufgetreten:</span><br />';
	  divText = divText + '<ul>';
      for (i=1; i < arrFormErrors.length; i++)
	  {
        divText = divText + '<li>' + arrFormErrors[i][1] + '</li>';
	  }
	  divText = divText + '</ul>';
	}
  }
  
  document.getElementById('divFormErrors').innerHTML = divText;
}


//Fehler Anzeige einschalten
function showErrorView()
{
  document.getElementById('divFormErrors').style.display = 'block';
}
