//########################################################################################################################
// esc Form v0.1
// Copyright Escapenet
// created by BG 2009
//########################################################################################################################


//########################################################################################################################
// 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 += '=' + encodeURIComponent(element.value);
        break;
		  
      case "checkbox":
        elString += '&' + element.id;
        if (element.checked == true)
          elString += '=' + encodeURIComponent(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 += '=' + encodeURIComponent(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 += encodeURIComponent(item.value);
          }
        }
      elString += '=' + selectValues;
      break;				
    }
  }	
  return elString;
}


//Validierung der Eingabefelder (welche das validiert werden müssen steht im "hdnRequiredFields")
function submitForm(FormID,useFunktionToRun,site,div)
{
  var valStatus = true;
  var reqFields = document.getElementById('hdnRequiredFields').value; 
  if (reqFields != 'NONE')
  {
    var valField = reqFields.split(",");
    var i = 0;
		
    while (i < valField.length)
    {
      if (document.getElementById(valField[i]).value == '')
      {
        valStatus = false;
		document.getElementById(valField[i]).className = 'element-markiert';
		
		if (document.getElementById('lbl' + valField[i]))
          document.getElementById('lbl' + valField[i]).className = 'text-rot';
      }
      else
	  {	
		document.getElementById(valField[i]).className = '';
		
		if (document.getElementById('lbl' + valField[i]))
          document.getElementById('lbl' + valField[i]).className = '';
	  }
	  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
  {
	if (document.getElementById('hdnRequiredError'))
	  alert(document.getElementById('hdnRequiredError').value);
	else
      alert('Fehlende Angabe(n)');
	  
	return false;
  }
}


//Markieren der erforderlichen Felder mit einem * Zeichen im Label
function markRequiredFields()
{
  var reqFields = document.getElementById('hdnRequiredFields').value; 
  if (reqFields != 'NONE')
  {
    var valField = reqFields.split(",");
	for (var i=0; i < valField.length; i++)
    {
      if (document.getElementById('lbl' + valField[i]))
        document.getElementById('lbl' + valField[i]).innerHTML = '*' + document.getElementById('lbl' + valField[i]).innerHTML;
    }
  }
}


//Markieren der Felder die einen Fehler aufweisen
function markErrorFields(errorFields)
{
  if (errorFields != '')
  {
    var valField = errorFields.split(",");
	for (var i=0; i < valField.length; i++)
    {
	  document.getElementById(valField[i]).className = 'element-markiert';
	  
	  if (document.getElementById('lbl' + valField[i]))
        document.getElementById('lbl' + valField[i]).className = 'text-rot';
    }
  }
}



//########################################################################################################################
// 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';
}



//########################################################################################################################
// Radiobutton Funktionen
//########################################################################################################################

//Den Wert des selektierten Radiobuttons ermitteln
function getRadiobuttonValue(radiobuttonGruppenID)
{
  var radios = document.getElementsByName(radiobuttonGruppenID);
  if(radios.length > 0)
  {
    for (i=0; i<radios.length; i++)
    {
      if(radios[i].checked == true)
      {
        return radios[i].value;
        break;
      }
    }
  }
}



//########################################################################################################################
// Select Funktionen
//########################################################################################################################

//Bestimmten Wert suchen und selektieren
function selectOption(ddl,x)
{
  var coll = document.getElementById(ddl)
  if(coll.length > 0)
  {
    for (i=0; i < coll.options.length; i++)
    {
      if(coll.options[i].value == x)
      {
        coll.options[i].selected = true;
        break;
      }
    }
  }
}

//Wert hinzufügen
function addOption(ddl,x,y)
{
  var coll = document.getElementById(ddl)
  var selOption = document.createElement("Option");
  selOption.text = x;
  selOption.value = y;
  coll.add(selOption);
}

//Eintrag mit einem bestimmten Wert entfernen
function removeOption(ddl,x)
{
  var coll = document.getElementById(ddl)
  if(coll.length > 0)
  {
    for (i=0; i < coll.options.length; i++)
    {
      if(coll.options[i].value == x)
      {
        coll.remove[i];
        break;
      }
    }
  }
}

//Select Einträge sortieren
function sortOptions(ddl)
{
  var coll = document.getElementById(ddl)
  var x = coll.length;
  if(x > 0)
  {
    //Durch alle Einträge durchgehen
    var arrCombobox = new Array(x);
    for (i=0; i<x; i++)
    {
      //Wert und Name in Array speichern
      arrCombobox[i] = new Array(1);
      arrCombobox[i][0] = coll[0].text;
      arrCombobox[i][1] = coll[0].value;

      //Eintrag entfernen
      coll.remove[0];
    }
  }
 
  //Sortieren
  arrCombobox.sort();
 
  //Sortierte Werte wieder in das Select einfügen
  if(arrCombobox.length > 0)
  {
    for (i=0; i < arrCombobox.length; i++)
      addOption(ddl,arrCombobox[i][0],arrCombobox[i][1]);
  }  
}



//########################################################################################################################
// Email Funktionen
//########################################################################################################################
function strReverse(reverseString)
{
  return reverseString.split("").reverse().join("");
}

function mailto(emailadress)
{
  location.href = 'mailto:' + strReverse(emailadress);
}