// JavaScript Document
function customValidation(form) {
  var validated = true; 
  var validated1 = true; 
  var validated2 = true;
  el1 = document.getElementById("Tag_Ankunft");
  el2 = document.getElementById("Monat_Ankunft");
  el3 = document.getElementById("Jahr_Ankunft");
  elAnkunft = document.getElementById("Ankunft");
  
  el4 = document.getElementById("Tag_Abfahrt");
  el5 = document.getElementById("Monat_Abfahrt");
  el6 = document.getElementById("Jahr_Abfahrt");
  elAbfahrt = document.getElementById("Abfahrt");
  
  if(checkSelect(el1) || checkSelect(el2) || checkSelect(el3)) {
    markError(elAnkunft);
	validated1 = false;
	validated = false;
  }
  if(validated1 == true)
    markValidated(elAnkunft);
  
  if(checkSelect(el4) || checkSelect(el5) || checkSelect(el6)) {
    markError(elAbfahrt);
	validated2 = false;
	validated = false;
  }
  if(validated2 == true)
    markValidated(elAbfahrt);
  
  return validated;
}

function validateForm() {
  var i, el, n;
  form = document.getElementById(formName);
  var validated = true; 
  if (customValidation) {
    validated = customValidation(form);
  }
  for (i=0; i<requiredFields.length; ++i) {
    n = requiredFields[i];
    el = document.getElementById(n);
    if (!el) {
      alert("FORM ELEMENT NOT FOUND: "+n);
      continue;
    }
    hasError = checkField(el);
    if (hasError) {
      validated = false;
    }
	if (validated == false) {
      validated = false;
    }
  }
  return validated;
}

function checkField(el) {
  if (emailField && el.id == emailField) 
    hasError = checkEmail(el);
  else
  if (el.tagName == 'SELECT')
    hasError = checkSelect(el);
  else 
    hasError = checkInput(el);
 
  if (hasError) 
    markError(el);
  else 
    markValidated(el);

  el.onchange = changedField;
  return hasError;
}

function changedField() {
  checkField(this);
}

function checkInput(el) {
  return (el.value ? false : true); 
}

function checkSelect(el) {
  return (el.options[el.selectedIndex].value ? false : true); 
}

function checkTel(el) {
  var value;
  if (el.value.length > 8 && el.value.length < 21) {
	for (var i = 0; i < el.value.length; i++) {
      if ((el.value.charAt(i) < "0" || el.value.charAt(i) > "9"))  {
        return true;
      }
    }
    return false;
  }
  return true;
}


function checkPlz(el) {
  var value;
  if (el.value.length > 4 || el.value.length < 4) {
    return true;
  }
  for (var i = 0; i < el.value.length; i++) {
    if ((el.value.charAt(i) < "0" || el.value.charAt(i) > "9"))  {
      return true;
    }
  }
  return false;
}

function checkEmail(el) {
  var value, at, dot;
  value = el.value;
  at = value.indexOf('@');
  dot = value.indexOf('.', at);
  return (at < 0 || dot < 0);
}

function markError(el) {
  var label = findLabelFor(el);
  label.className = "fieldError"; 
}

function markValidated(el) {
  var label = findLabelFor(el);
  label.className = "fieldValidated";
}

var _labels = false;
function findLabelFor(el) {
  var i, label
  if (!_labels)
    _labels = document.getElementsByTagName('LABEL');
  
  for (i=0; i < _labels.length; ++i) {
    label = _labels[i];
    if (label.htmlFor == el.id) {
      return label;
    }
  }
  // try previous element for this input field as label
  label = el.previousSibling;
  return label;
}
