//###########################################################################################################
// esc.form 1.2
// Copyright Escapenet
// created by BG 2009, updated 2011
//###########################################################################################################

//***********************************************************************************************************
// 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; 
  
  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.name;
        if (element.checked == true)
          elString += '=' + encodeURIComponent(element.value);
        else
          elString += '=false';	
        break;
		   
      case "radio":
        var group = document.forms[FormID].elements[element.name];
			
        if (checkedgroups.indexOf("[" + element.name + "]") > -1)
          continue;
        else
        {
          checkedgroups += "[" + element.name + "]";
			
          for (var j=0; j<group.length; j++)
          {
            if (group[j].checked)
            {
              elString += '&' + element.name;
              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;
}

//Formular abschicken
function submitForm(formID,useFunktionToRun,site,div)
{
  var myForm = document.getElementById(formID);
  
  //Submit Button deaktivieren um mehrfaches Abschicken zu verhindern
  if (myForm.elements['btnSubmit_' + formID])
  {
    myForm.elements['btnSubmit_' + formID].disabled = true;
	myForm.elements['btnSubmit_' + formID].blur();
  }
  else if (myForm.elements['btnSubmit'])
  {
    myForm.elements['btnSubmit'].disabled = true;
	myForm.elements['btnSubmit'].blur();
  }
  
  var valStatus = true;
  var reqFields = 'NONE'
  
  //Erforderliche Felder überprüfen
  if (myForm.elements['hdnRequiredFields_' + formID])
    reqFields = myForm.elements['hdnRequiredFields_' + formID].value;
  else if (myForm.elements['hdnRequiredFields'])
    reqFields = myForm.elements['hdnRequiredFields'].value;
    
  //Überprüfung der erforderlichen Felder durchführen sofern angegeben
  if (reqFields != 'NONE')
  {
	var valField = reqFields.split(",");
	var i = 0;
		
	while (i < valField.length)
	{
	  if (myForm.elements[valField[i]].value == '')
	  {
		valStatus = false;
		
		//Das Element markieren
		myForm.elements[valField[i]].className = 'element-markiert';
		
		//Wenn ein Label für das Element vorhanden ist dann Dieses markieren
		var labels = myForm.getElementsByTagName("label");
		for(j=0; j<labels.length; j++)
		{
		  if (labels[j].id == 'lbl' + valField[i])
			labels[j].className = 'text-rot';
		}
	  }
	  i += 1;
	}
  }
  
  //Sofern der Validierungs-Status OK ist weitermachen
  if (valStatus == true)
  {
	//Wenn keine individuelle Funktion mitgegeben wurde normaler Submit durchführen
	if (useFunktionToRun == '')
	  document.forms[formID].submit();
	else
	  eval(useFunktionToRun(formID,site,div));
  }
  else
  {
	//Bei der Validierung sind Fehler aufgetreten, Submit Button wieder aktivieren
	if (myForm.elements['btnSubmit_' + formID])
	  myForm.elements['btnSubmit_' + formID].disabled = false;
	else if (myForm.elements['btnSubmit'])
	  myForm.elements['btnSubmit'].disabled = false;

	return false;
  }
}

//Ermittelt den Dateinamen der in einem Input type="file" ausgewählt wurde. 
function getFileName(fieldID)
{
  var filePath = document.getElementById(fieldID).value;
  var fileName = filePath.split('\\');
  return fileName[(fileName.length)-1];
}

//HTTP Link auf Korrektheit prüfen
function checkLinkSyntax(elementID)
{
  var htmlElement = document.getElementById(elementID);
  var htmlValue = htmlElement.value;
  var htmlHTTP = '';
  var htmlWWW = '';
  
  if (htmlValue != '')
  {
	//Auf http:// prüfen
	if (htmlValue.indexOf('http://') == -1 && htmlValue.indexOf('https://') == -1)
	  htmlElement.value = 'http://' + htmlValue
  }
}

//Email-Adresse auf Korrektheit prüfen
function checkEmailadresseSyntax(elementID)
{
  var emailadresse = document.getElementById(elementID).value;  
  if (emailadresse != '')
  {
	var ausdruck = new RegExp(/^[\w\.-]*[a-zA-Z0-9_]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/);
	if (ausdruck.test(emailadresse) == false)
	{
	  document.getElementById(elementID).value = '';
	  
	  if (document.getElementById('lbl' + elementID))
		document.getElementById('lbl' + elementID).className = 'text-rot';
		
	  setTimeout("document.getElementById('" + elementID + "').focus()",200);
	}
	else
	{
	  if (document.getElementById('lbl' + elementID))
		document.getElementById('lbl' + elementID).className = '';
	}
  }
}



//***********************************************************************************************************
// Required Fields
//***********************************************************************************************************
//Alle erforderlichen Felder markieren
function markRequiredFields(FormID)
{
  if (document.getElementById('hdnRequiredFields_' + FormID))
    var reqFields = document.getElementById('hdnRequiredFields_' + FormID).value;
  else if (document.getElementById('hdnRequiredFields'))
    var reqFields = document.getElementById('hdnRequiredFields').value;

  if (reqFields != 'NONE')
  {
	var valField = reqFields.split(",");
	for (var i=0; i < valField.length; i++)
	  markRequiredField(valField[i]);
  }
}

//Einzelndes Feld als erforderlich markieren
function markRequiredField(fieldID)
{
  if (document.getElementById('lbl' + fieldID))
  {
    var labelHTML = document.getElementById('lbl' + fieldID).innerHTML;
	$('#lbl' + fieldID).html('* ' + labelHTML);
  }
}

//Einzelndes Feld nicht mehr als erforderlich markieren
function dismarkRequiredField(fieldID)
{
  if (document.getElementById('lbl' + fieldID))
  {
	var labelHTML = document.getElementById('lbl' + fieldID).innerHTML;
	document.getElementById('lbl' + fieldID).className = '';
	document.getElementById('lbl' + fieldID).innerHTML = labelHTML.replace('* ','');	
  }
}

//Fügt ein Wert in den String mit den erforderlichen Feldern (hdnRequiredFields) hinzu
function addRequiredField(fieldID)
{
  var requiredFields = document.getElementById('hdnRequiredFields').value;
	
  //Prüfen ob der Wert schon vorhanden ist
  var suche = requiredFields.indexOf(fieldID);
  
  //Wert ist nicht vorhanden, hinzufügen
  if (suche == -1)
  {
    document.getElementById('hdnRequiredFields').value += ',' + fieldID;
	markRequiredField(fieldID);
  }
}

//Entfernt ein Wert aus dem String mit den erforderlichen Feldern (hdnRequiredFields)
function removeRequiredField(fieldID)
{
  var requiredFields = document.getElementById('hdnRequiredFields').value;
  document.getElementById('hdnRequiredFields').value = requiredFields.replace(',' + fieldID,'');
  dismarkRequiredField(fieldID);
}



//***********************************************************************************************************
// 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';
}

//Prüft ob das Bis Datum grösser ist als das Von Datum
function checkBisDatumGroesser(vonDatum,bisDatum)
{
  vonTag = vonDatum.substr(0,2);
  vonMonat = vonDatum.substr(3,2);
  vonJahr = vonDatum.substr(6,4);
  
  bisTag = bisDatum.substr(0,2);
  bisMonat = bisDatum.substr(3,2);
  bisJahr = bisDatum.substr(6,4);
  
  USDatumvon = vonMonat + "/" + vonTag + "/" + vonJahr
  USDatumbis = bisMonat + "/" + bisTag + "/" + bisJahr
  
  return (Date.parse(USDatumvon) <= Date.parse(USDatumbis));
}



//***********************************************************************************************************
// Textfelder
//***********************************************************************************************************
function checkTextLen(elementID,maxLen,returnElementID)
{
  var currentLen = document.getElementById(elementID).value.length;
  
  if (currentLen > maxLen)
  {
    var textValue = document.getElementById(elementID).value;
    document.getElementById(elementID).value = textValue.substring(0,maxLen);
	currentLen += -1;
  }
  
  //Aktuelle Länge in Element schreiben
  if (returnElementID != '')
	document.getElementById(returnElementID).innerHTML = currentLen;
}



//***********************************************************************************************************
// 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;
      }
    }
  }
}

//Den Radiobutton mit dem richtigen Wert selektieren
function selectRadiobutton(radiobuttonGruppenID,x)
{
  var radios = document.getElementsByName(radiobuttonGruppenID);
  if(radios.length > 0)
  {
    for (i=0; i<radios.length; i++)
    {
      if(radios[i].value == x)
      {
        radios[i].checked = true;
        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)
  coll.options[coll.options.length] = new Option(x,y);
}

//Eintrag mit einem bestimmten Wert entfernen
function removeOption(ddl,x)
{
  var i;
  var coll = document.getElementById(ddl)
  for(i=coll.options.length-1; i>=0; i--)
  {
	if(coll.options[i].value == x)
	  coll.remove(i);
  }
}

//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[i].text;
      arrCombobox[i][1] = coll[i].value;
    }
  }

  //Alle Einträge entfernen
  coll.length = 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
//***********************************************************************************************************
//String umkehren
function strReverse(reverseString)
{
  return reverseString.split("").reverse().join("");
}

//Mailto Link erstellen
function mailto(emailadress)
{
  location.href = 'mailto:' + strReverse(emailadress);
}
