// ################################################################################################
// Spezielle Feld-Funktionen
// ################################################################################################

// =================================================================================================
// Fahrzeugdaten ändern
// =================================================================================================

var manualOverride = false;
var customHsn='undef'; /* Hersteller */
var customTsn='undef'; /* Typ */

function initFahrzeugdatenAenderung() {

  if (typeof(document.kfzAntragForm.captcha) == 'undefined') {
    document.kfzAntragForm.branche[0].onkeydown = setTabKeyPressed;
    document.kfzAntragForm.branche[0].onblur = focusFirstFormFieldIfNecessary;
    document.kfzAntragForm.branche[1].onkeydown = setTabKeyPressed;
    document.kfzAntragForm.branche[1].onblur = focusFirstFormFieldIfNecessary;
  } else {
    document.kfzAntragForm.captcha.onkeydown = setTabKeyPressed;
    document.kfzAntragForm.captcha.onblur = focusFirstFormFieldIfNecessary;
  }

	if (document.kfzAntragForm.fahrzeugart.value == "0002000") {
      // KRAD-Vertrag
      switchFieldsNutzerkreis('false');

  } else {  // PKW-Vertrag (default)
      switchFieldsNutzungsart('false');
  }
}

// =================================================================================================
// Fahrzeugdaten
// =================================================================================================

function initFahrzeugdaten() {

  if (typeof(document.kfzAntragForm.captcha) == 'undefined') {
    document.kfzAntragForm.branche[0].onkeydown = setTabKeyPressed;
    document.kfzAntragForm.branche[0].onblur = focusFirstFormFieldIfNecessary;
    document.kfzAntragForm.branche[1].onkeydown = setTabKeyPressed;
    document.kfzAntragForm.branche[1].onblur = focusFirstFormFieldIfNecessary;
    document.kfzAntragForm.branche[2].onkeydown = setTabKeyPressed;
    document.kfzAntragForm.branche[2].onblur = focusFirstFormFieldIfNecessary;
    document.kfzAntragForm.branche[3].onkeydown = setTabKeyPressed;
    document.kfzAntragForm.branche[3].onblur = focusFirstFormFieldIfNecessary;
  } else {
    document.kfzAntragForm.captcha.onkeydown = setTabKeyPressed;
    document.kfzAntragForm.captcha.onblur = focusFirstFormFieldIfNecessary;
  }

  switchFieldsPkwKrad('false');
  
  if (document.getElementById('flexHsnTsnDirekteingabe').style.display == 'none') {
    // bei evtl. Fehlern zu HSN/TSN müssen die beiden Felder auch sichtbar sein
    for (var i = 0; i < errorPropertyNames.length; i++) {
      if (errorPropertyNames[i] == 'hsn'
          || errorPropertyNames[i] == 'tsn') {
          klickHsnTsnDirekteingabe(true);        
      }
    }
  }
}

function switchFZGScheinOeffnen() {
if (document.kfzAntragForm.fahrzeugart.value == "0008000") {
	klickFahrzeugsuche();
} else {
	klickHerstellersuche();
}
}

function leereTSN() {
document.kfzAntragForm.tsn.value = "";
}

function switchFieldsPkwKrad( initFields ) {
  setAllFahrzeugdatenErrorMessagesInvisible( initFields );
  if (initFields == true) {
      // alle Felder ausser Einstufungs-ID initialisieren
      initAllFahrzeugdatenFields();
  }

	// vom 1.10. - 31.12. eines Jahres initiale Maskenansicht analog ausgewähltem
	// Versichererwechsel (obwohl dieser nicht ausgewählt ist)
	var resetEinstufungId = false;
  var jetzt = new Date();
  if (jetzt.getMonth() > 8 ) {
      if (document.kfzAntragForm.einstufungId.value == '') {
        document.kfzAntragForm.einstufungId.value = "U";
        resetEinstufungId = false;
      }
  }

	if (document.kfzAntragForm.fahrzeugart.value == "0002000") {

      // KRAD ausgewählt

      if (document.kfzAntragForm.ausgewaehlterHerstellerName.value == "") {
          // noch kein Hersteller ausgewählt
          element_show('herstellersuche');
          element_hide('herstellerergebnis');
/*          if (document.kfzAntragForm.einstufungId.value == "U" ) {
	          element_show('flexLinkHsnTsnDirekteingabe');
	          element_show('flexHsnTsnDirekteingabe');
          } else {
	          element_hide('flexLinkHsnTsnDirekteingabe');
	          element_hide('flexHsnTsnDirekteingabe');
          }
*/          
      } else {
          // bereits ein Hersteller ausgewählt
          element_hide('herstellersuche');
          element_hide('flexLinkHsnTsnDirekteingabe');
          element_hide('flexHsnTsnDirekteingabe');
          element_show('herstellerergebnis');
/*          if (document.kfzAntragForm.einstufungId.value == "U" ) {
	          element_show('flexLinkHsnTsnDirekteingabe');
	          element_show('flexHsnTsnDirekteingabe');
          } else {
	          element_hide('flexLinkHsnTsnDirekteingabe');
	          element_hide('flexHsnTsnDirekteingabe');
          }
*/          
      }

      element_show('flexPsKwHubraum');
      element_show('flexAbweichenderHalterKRAD');
      element_show('flexAbsKz');
      element_show('flexNeuwert');
      element_show('flexNutzerkreis');
      element_show('flexBrancheKRAD');
      

      element_hide('fahrzeugsuche');
      element_hide('fahrzeugergebnis');
      element_hide('flexDatumAnschaffung');
  	  element_hide('flexAbweichenderHalterPKW');
      element_hide('flexFahrleistung');
      element_hide('flexAbstellort');
      element_hide('flexNutzungsart');
      element_hide('flexWohneigentumKz');
      element_hide('flexBeschaeftigungsverhaeltnis');
      element_hide('flexBranchePKW');
      element_hide('flexGeschljnutzer');

      switchFieldsEinstufungId( initFields );
      switchFieldsVersicherungsbeginn( initFields );
      switchFieldsNutzerkreis( initFields );

      if (initFields == true) {
          klickHerstellersuche();
      }

  } else {  // PKW ausgewählt (default)

      if (document.kfzAntragForm.ausgewaehltesFahrzeug.value == "") {
          // noch kein Fahrzeug gefunden
          element_show('fahrzeugsuche');
          element_show('flexLinkHsnTsnDirekteingabe');
          element_hide('flexHsnTsnDirekteingabe');
          element_hide('fahrzeugergebnis');
      } else {
          // bereits ein Fahrzeug gefunden
          element_hide('fahrzeugsuche');
          element_hide('flexLinkHsnTsnDirekteingabe');
          element_hide('flexHsnTsnDirekteingabe');
          element_show('fahrzeugergebnis');
      }

      element_show('flexDatumAnschaffung');
      element_show('flexAbweichenderHalterPKW');
      element_show('flexFahrleistung');
      element_show('flexNutzungsart');
      element_show('flexWohneigentumKz');
      element_show('flexBranchePKW');
      
      
      checkfieldsGeschlechtJNutzer();

      

      element_hide('herstellersuche');
      element_hide('herstellerergebnis');
      element_hide('flexPsKwHubraum');
      element_hide('flexAbweichenderHalterKRAD');
      element_hide('flexBrancheKRAD');
      element_hide('flexAbsKz');
      element_hide('flexNeuwert');

      switchFieldsEinstufungId( initFields );
      switchFieldsVersicherungsbeginn( initFields );
      switchFieldsNutzungsart( initFields );
  }

  if (resetEinstufungId) {
      // fix ausgewählten Versichererwechsel zurücksetzen,
      // Maskenansicht (Felder) bleibt bestehen
      initFahrzeugdatenField(document.kfzAntragForm.einstufungId);
  }
}

function switchFieldsEinstufungId( initFields ) {

	if (document.kfzAntragForm.einstufungId.value == "U") {
      // "Kündigung durch" muss angezeigt und eingegeben werden
      // 2 AKZ-Felder müssen aktiviert und eingegeben werden

      // init field
      if (initFields == true) {
          initFahrzeugdatenField(document.kfzAntragForm.kuendigungDurch);
      }
      
      if (initFields == true || $('#novMVersicherungsbeginn').val() == '') {
     	    // ab 1.10. eines Jahres wird der Versicherungsbeginn vorgegeben mit 01.01.
          var jetzt = new Date();
          if (jetzt.getMonth() > 8 ) {
              $('#novMVersicherungsbeginn').val('01.01.' + (jetzt.getFullYear() + 1));
          }
      }
      
      element_show('flexKuendigungDurch');
      element_show('flexInfoDatumAnschaffung');
      // Textswitch: show aktuell, hide zukuenftig
      if (document.kfzAntragForm.fahrzeugart.value == "0002000") {
          element_show('flexAbweichenderHalterTxtAktuellKRADAlterTarif');
          element_show('flexAbweichenderHalterTxtAktuellKRADNeuerTarif');
          element_hide('flexAbweichenderHalterTxtAktuellPKWAlterTarif');
          element_hide('flexAbweichenderHalterTxtAktuellPKWNeuerTarif');

	  element_show('flexLinkHsnTsnDirekteingabe');
	  element_show('flexHsnTsnDirekteingabe');
          
      } else {  // PKW
          element_show('flexAbweichenderHalterTxtAktuellPKWAlterTarif');
          element_show('flexAbweichenderHalterTxtAktuellPKWNeuerTarif');
          element_hide('flexAbweichenderHalterTxtAktuellKRADAlterTarif');
          element_hide('flexAbweichenderHalterTxtAktuellKRADNeuerTarif');
          
          element_show('flexLinkFahrzeugscheinLiegtVor');
          element_show('flexLinkFahrzeugsucheExtra');
          element_hide('flexLinkFahrzeugsuche');
      }
      element_show('flexDatumAnschaffungTxtAktuell');
      element_hide('flexAbweichenderHalterTxtZukuenftigPKWAlterTarif');
      element_hide('flexAbweichenderHalterTxtZukuenftigPKWNeuerTarif');
      element_hide('flexAbweichenderHalterTxtZukuenftigKRADAlterTarif');
      element_hide('flexAbweichenderHalterTxtZukuenftigKRADNeuerTarif');
      element_hide('flexDatumAnschaffungTxtZukuenftig');
      // show Teile vom AKZ
      element_show_inline('flexAkz2Und3');
      //enableField(document.kfzAntragForm.akzBuchstabe);
      //enableField(document.kfzAntragForm.akzZiffer);
      // Kein Zusatztext zum AKZ: (erster Teil)
      element_hide('flexAkzTxt');
      // Keine Anzeige Kreiskennzeichen, clear Inhalt
      switchContentFieldsAkzKreis( initFields );
  } else {
      // init field
      if (initFields == true) {
          var jetzt = new Date();
          if (jetzt.getMonth() > 8 ) {
       	    // ein ggf. ab 1.10. eines Jahres vorgegebener Versicherungsbeginn wird zurückgesetzt
            initFahrzeugdatenField(document.kfzAntragForm.datumVersicherungsbeginn);
          }
      }
      
      // clear field
      document.kfzAntragForm.kuendigungDurch.value = "";
      element_hide('flexKuendigungDurch');
      // Keine Info-Buttons
      element_hide('flexInfoDatumAnschaffung');
      // Textswitch: show zukuenftig, hide aktuell
      if (document.kfzAntragForm.fahrzeugart.value == "0002000") {
          element_show('flexAbweichenderHalterTxtZukuenftigKRADAlterTarif');
          element_show('flexAbweichenderHalterTxtZukuenftigKRADNeuerTarif');
          element_hide('flexAbweichenderHalterTxtZukuenftigPKWAlterTarif');
          element_hide('flexAbweichenderHalterTxtZukuenftigPKWNeuerTarif');


	  element_hide('flexLinkHsnTsnDirekteingabe');
	  element_hide('flexHsnTsnDirekteingabe');
      } else {  // PKW
          element_show('flexAbweichenderHalterTxtZukuenftigPKWAlterTarif');
          element_show('flexAbweichenderHalterTxtZukuenftigPKWNeuerTarif');
          element_hide('flexAbweichenderHalterTxtZukuenftigKRADAlterTarif');
          element_hide('flexAbweichenderHalterTxtZukuenftigKRADNeuerTarif');

          element_show('flexLinkFahrzeugsuche');
          element_hide('flexLinkFahrzeugscheinLiegtVor');
          element_hide('flexLinkFahrzeugsucheExtra');
      }
      element_show('flexDatumAnschaffungTxtZukuenftig');
      element_hide('flexAbweichenderHalterTxtAktuellPKWAlterTarif');
      element_hide('flexAbweichenderHalterTxtAktuellPKWNeuerTarif');
      element_hide('flexAbweichenderHalterTxtAktuellKRADAlterTarif');
      element_hide('flexAbweichenderHalterTxtAktuellKRADNeuerTarif');
      element_hide('flexDatumAnschaffungTxtAktuell');
     // clear und hide Teile vom AKZ
      document.kfzAntragForm.akzBuchstabe.value = "";
      document.kfzAntragForm.akzZiffer.value = "";
      element_hide('flexAkz2Und3');
      //disableField(document.kfzAntragForm.akzBuchstabe);
      //disableField(document.kfzAntragForm.akzZiffer);
      // Zusatztext AKZ: (erster Teil)
      element_show('flexAkzTxt');
      // Anzeige Kreiskennzeichen, wenn Akz-Kreis nicht eindeutig 
      switchContentFieldsAkzKreis( initFields );
      // für den Fall, dass dieser Hinweis bereits angezeigt wird
      hideHinweisUnterjaehrigerVersicherungswechsel();   
  }
}

/*function switchFieldsAbweichenderHalter( initFields ) {

  var index = (document.kfzAntragForm.fahrzeugart.value == "0002000") ? 1 : 0;
  var abweichenderHalter = document.kfzAntragForm.abweichenderHalter[index].value;



	if (abweichenderHalter == "P") {
      // Halter = Partner

      // Anzeige Zusatztext zur PLZ
      element_show('flexHalterTxtPartner');
      element_hide('flexHalterTxtVN');
      element_hide('flexHalterTxtBehindertesKind');

      // Zulassung auf erweitern um '.... auf Ihren Ehe-/Lebenspartner'
      document.getElementById('flexDatumAnschaffungTxtZusatzAufPartner').style.display = 'block';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufSie').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufKind').style.display = 'none';
  } else {

  	if (abweichenderHalter == "K") {
        // Halter = Behindertes Kind

        // Anzeige Zusatztext zur PLZ
        element_show('flexHalterTxtBehindertesKind');
        element_hide('flexHalterTxtVN');
        element_hide('flexHalterTxtPartner');

      // Zulassung auf erweitern um '.... auf Ihr behindertes Kind'
      document.getElementById('flexDatumAnschaffungTxtZusatzAufKind').style.display = 'block';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufSie').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufPartner').style.display = 'none';
    } else {  // default
      // Halter = N

      // Anzeige Zusatztext zur PLZ
      element_show('flexHalterTxtVN');
      element_hide('flexHalterTxtBehindertesKind');
      element_hide('flexHalterTxtPartner');

      // Zulassung auf erweitern um '.... auf Sie'
      document.getElementById('flexDatumAnschaffungTxtZusatzAufSie').style.display = 'block';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufKind').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufPartner').style.display = 'none';
    }
  }
}*/

function switchFieldsAbweichenderHalter( initFields ) {
  
    var index = ((isNeuerTarif()) ? 0 : 1) 
                + ((document.kfzAntragForm.fahrzeugart.value == "0002000") ? 2 : 0);
  	var abweichenderHalter = document.kfzAntragForm.abweichenderHalter[index].value;

	switch(abweichenderHalter) {

		case "P":

			// Halter = Partner
			// Anzeige Zusatztext zur PLZ
			element_show('flexHalterTxtPartner');
			element_hide('flexHalterTxtVN');
			element_hide('flexHalterTxtBehindertesKind');
			element_hide('flexHalterTxtAnderePerson');
			element_hide('flexHalterTxtFirma');
			element_hide('flexHalterTxtLeasinggeber');

			// Zulassung auf erweitern um '.... auf Ihren Ehe-/Lebenspartner'
			document.getElementById('flexDatumAnschaffungTxtZusatzAufPartner').style.display = 'block';
			document.getElementById('flexDatumAnschaffungTxtZusatzAufSie').style.display = 'none';
			document.getElementById('flexDatumAnschaffungTxtZusatzAufKind').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufAnderePerson').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufFirma').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufLeasinggeber').style.display = 'none';
			break;
		case "K":

			// Halter = Behindertes Kind
			// Anzeige Zusatztext zur PLZ
			element_show('flexHalterTxtBehindertesKind');
			element_hide('flexHalterTxtVN');
			element_hide('flexHalterTxtPartner');
			element_hide('flexHalterTxtAnderePerson');
			element_hide('flexHalterTxtFirma');
			element_hide('flexHalterTxtLeasinggeber');

			// Zulassung auf erweitern um '.... auf Ihr behindertes Kind'
			document.getElementById('flexDatumAnschaffungTxtZusatzAufKind').style.display = 'block';
			document.getElementById('flexDatumAnschaffungTxtZusatzAufSie').style.display = 'none';
			document.getElementById('flexDatumAnschaffungTxtZusatzAufPartner').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufAnderePerson').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufFirma').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufLeasinggeber').style.display = 'none';
			break;
		case "N":

			// Halter = Antragsteller/VN
			// Anzeige Zusatztext zur PLZ
    	element_show('flexHalterTxtVN');
    	element_hide('flexHalterTxtBehindertesKind');
    	element_hide('flexHalterTxtPartner');
			element_hide('flexHalterTxtAnderePerson');
			element_hide('flexHalterTxtFirma');
			element_hide('flexHalterTxtLeasinggeber');

    	// Zulassung auf erweitern um '.... auf Sie'
    	document.getElementById('flexDatumAnschaffungTxtZusatzAufSie').style.display = 'block';
    	document.getElementById('flexDatumAnschaffungTxtZusatzAufKind').style.display = 'none';
    	document.getElementById('flexDatumAnschaffungTxtZusatzAufPartner').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufAnderePerson').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufFirma').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufLeasinggeber').style.display = 'none';
			break;
		case "S":

			// Halter = Andere Person
			// Anzeige Zusatztext zur PLZ
			element_show('flexHalterTxtAnderePerson');
    	element_hide('flexHalterTxtVN');
    	element_hide('flexHalterTxtBehindertesKind');
    	element_hide('flexHalterTxtPartner');
			element_hide('flexHalterTxtFirma');
			element_hide('flexHalterTxtLeasinggeber');

      	// Zulassung auf erweitern um '.... auf eine andere Person'
      document.getElementById('flexDatumAnschaffungTxtZusatzAufAnderePerson').style.display = 'block';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufSie').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufKind').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufPartner').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufFirma').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufLeasinggeber').style.display = 'none';
			break;
		case "F": 

			// Halter = Firma
			// Anzeige Zusatztext zur PLZ
			element_show('flexHalterTxtFirma');
    	element_hide('flexHalterTxtVN');
    	element_hide('flexHalterTxtBehindertesKind');
    	element_hide('flexHalterTxtPartner');
			element_hide('flexHalterTxtAnderePerson');
			element_hide('flexHalterTxtLeasinggeber');

      	// Zulassung auf erweitern um '.... TODO ACLA'
      document.getElementById('flexDatumAnschaffungTxtZusatzAufFirma').style.display = 'block';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufSie').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufKind').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufPartner').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufAnderePerson').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufLeasinggeber').style.display = 'none';
			break;
		case "L":    // TODO ACLA: Wert??

			// Halter = Leasinggeber
			// Anzeige Zusatztext zur PLZ
			element_show('flexHalterTxtLeasinggeber');
    	element_hide('flexHalterTxtVN');
    	element_hide('flexHalterTxtBehindertesKind');
    	element_hide('flexHalterTxtPartner');
			element_hide('flexHalterTxtAnderePerson');
			element_hide('flexHalterTxtFirma');

      	// Zulassung auf erweitern um '.... TODO ACLA'
      document.getElementById('flexDatumAnschaffungTxtZusatzAufLeasinggeber').style.display = 'block';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufSie').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufKind').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufPartner').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufAnderePerson').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufFirma').style.display = 'none';
			break;
		default:

      // Anzeige Zusatztext zur PLZ
      element_show('flexHalterTxtVN');
      element_hide('flexHalterTxtBehindertesKind');
      element_hide('flexHalterTxtPartner');
			element_hide('flexHalterTxtAnderePerson');
			element_hide('flexHalterTxtFirma');
			element_hide('flexHalterTxtLeasinggeber');

      // Zulassung auf NICHT erweitern
      document.getElementById('flexDatumAnschaffungTxtZusatzAufSie').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufKind').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufPartner').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufAnderePerson').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufFirma').style.display = 'none';
      document.getElementById('flexDatumAnschaffungTxtZusatzAufLeasinggeber').style.display = 'none';
      break;
  	}
}

var tmpNeuerTarifAktiv = false;

function switchFieldsVersicherungsbeginn( initFields ) {

  if (isNeuerTarif()) {

      // init fields nur, wenn nicht sichtbar (ansonsten wird es ggf. bei jeder Änderung des Versicherungsbeginns gelöscht ...)
      if (document.getElementById("flexAbstellort").style.display == "none") {
          initFahrzeugdatenField(document.kfzAntragForm.abstellort);
          initFahrzeugdatenField(document.kfzAntragForm.beschaeftigungsverhaeltnis);
      }
      // bei Versicherungsbeginn ab 1.10.2009 sind die folgenden Felder aktiv
      element_show('flexStandort');
      if (document.kfzAntragForm.fahrzeugart.value == "0008000") {
        // nur für PKW
        element_show('flexAbstellort');
        element_show('flexBeschaeftigungsverhaeltnis');
      }
      
      if ( !tmpNeuerTarifAktiv ) {
        switchContentFieldsPlz( initFields );
      }
      
      // ... und folgende Felder entfallen
      element_hide('flexAkz');
      
      // Comboboxeninhalte abhängig vom Versicherungsbeginn müssen geswitched werden
      element_show('flexAbweichenderHalterPKWNeuerTarif');
      element_show('flexAbweichenderHalterKRADNeuerTarif');
      element_hide('flexAbweichenderHalterPKWAlterTarif');
      element_hide('flexAbweichenderHalterKRADAlterTarif');
      element_show('flexBranchePKWNeuerTarif');
      element_show('flexBrancheKRADNeuerTarif');
      element_hide('flexBranchePKWAlterTarif');
      element_hide('flexBrancheKRADAlterTarif');
      element_show('flexNutzungsartNeuerTarif');
      element_hide('flexNutzungsartAlterTarif');
      
     	if (document.kfzAntragForm.fahrzeugart.value == "0002000") {
        // KRAD ausgewählt
        disableField(document.kfzAntragForm.nutzungsart[0]);   // Nutzungsart Neuer Tarif (nicht für KRAD)
        disableField(document.kfzAntragForm.nutzungsart[1]);   // Nutzungsart Alter Tarif (nicht für KRAD)

        enableField(document.kfzAntragForm.abweichenderHalter[2]);   // KRAD Neuer Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[3]);   // KRAD Alter Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[0]);  // PKW Neuer Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[1]);  // PKW Alter Tarif

        enableField(document.kfzAntragForm.branche[2]);   // KRAD Neuer Tarif
        disableField(document.kfzAntragForm.branche[3]);   // KRAD Alter Tarif
        disableField(document.kfzAntragForm.branche[0]);  // PKW Neuer Tarif
        disableField(document.kfzAntragForm.branche[1]);  // PKW Alter Tarif

      } else {  // PKW ausgewählt (default)

        enableField(document.kfzAntragForm.nutzungsart[0]);   // Nutzungsart Neuer Tarif (nur für PKW)
        disableField(document.kfzAntragForm.nutzungsart[1]);   // Nutzungsart Alter Tarif (nur für PKW)

        enableField(document.kfzAntragForm.abweichenderHalter[0]);  // PKW Neuer Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[1]);  // PKW Alter Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[2]);   // KRAD Neuer Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[3]);   // KRAD Alter Tarif

        enableField(document.kfzAntragForm.branche[0]); // PKW Neuer Tarif
        disableField(document.kfzAntragForm.branche[1]); // PKW Alter Tarif
        disableField(document.kfzAntragForm.branche[2]); // KRAD Neuer Tarif
        disableField(document.kfzAntragForm.branche[3]); // KRAD Alter Tarif
        
        if ( !tmpNeuerTarifAktiv ) {
          switchFieldsBeschaeftigungsverhaeltnis( initFields );
        }
      }
        
      tmpNeuerTarifAktiv = true;

  } else {
      // init fields nur, wenn nicht sichtbar (ansonsten wird es ggf. bei jeder Änderung des Versicherungsbeginns gelöscht ...)
      if (document.getElementById("flexAkz").style.display == "none") {
          initFahrzeugdatenField(document.kfzAntragForm.akzKreis);
          initFahrzeugdatenField(document.kfzAntragForm.akzBuchstabe);
          initFahrzeugdatenField(document.kfzAntragForm.akzZiffer);
          initFahrzeugdatenField(document.kfzAntragForm.kreisKz);
      }
      // bei Versicherungsbeginn vor dem 1.10.2009 sind die folgenden Felder nicht sichtbar
      element_hide('flexStandort');
      element_hide('flexAbstellort');
      element_hide('flexBeschaeftigungsverhaeltnis');

      // ... und folgende Felder müssen sichtbar sein
      element_show('flexAkz');
      if ( tmpNeuerTarifAktiv ) {
        switchContentFieldsAkzKreis( initFields );
      }

      // Comboboxeninhalte abhängig vom Versicherungsbeginn müssen geswitched werden
      element_show('flexAbweichenderHalterKRADAlterTarif');
      element_show('flexAbweichenderHalterPKWAlterTarif');
      element_hide('flexAbweichenderHalterKRADNeuerTarif');
      element_hide('flexAbweichenderHalterPKWNeuerTarif');
      element_show('flexBranchePKWAlterTarif');
      element_show('flexBrancheKRADAlterTarif');
      element_hide('flexBranchePKWNeuerTarif');
      element_hide('flexBrancheKRADNeuerTarif');
      element_hide('flexNutzungsartNeuerTarif');
      element_show('flexNutzungsartAlterTarif');
      
     	if (document.kfzAntragForm.fahrzeugart.value == "0002000") {
        // KRAD ausgewählt
        disableField(document.kfzAntragForm.nutzungsart[1]);   // Nutzungsart Alter Tarif (nicht für KRAD)
        disableField(document.kfzAntragForm.nutzungsart[0]);   // Nutzungsart Neuer Tarif (nicht für KRAD)
    
        enableField(document.kfzAntragForm.abweichenderHalter[3]);   // KRAD Alter Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[2]);   // KRAD Neuer Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[0]);  // PKW Neuer Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[1]);  // PKW Alter Tarif

        enableField(document.kfzAntragForm.branche[3]);   // KRAD Alter Tarif
        disableField(document.kfzAntragForm.branche[2]);   // KRAD Neuer Tarif
        disableField(document.kfzAntragForm.branche[0]);  // PKW Neuer Tarif
        disableField(document.kfzAntragForm.branche[1]);  // PKW Alter Tarif

      } else {  // PKW ausgewählt (default)

        enableField(document.kfzAntragForm.nutzungsart[1]);   // Nutzungsart Alter Tarif (nur für PKW)
        disableField(document.kfzAntragForm.nutzungsart[0]);   // Nutzungsart Neuer Tarif (nur für PKW)
    
        enableField(document.kfzAntragForm.abweichenderHalter[1]);  // PKW Alter Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[0]);  // PKW Neuer Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[2]);   // KRAD Neuer Tarif
        disableField(document.kfzAntragForm.abweichenderHalter[3]);   // KRAD Alter Tarif

        enableField(document.kfzAntragForm.branche[1]); // PKW Alter Tarif
        disableField(document.kfzAntragForm.branche[0]); // PKW Neuer Tarif
        disableField(document.kfzAntragForm.branche[2]); // KRAD Neuer Tarif
        disableField(document.kfzAntragForm.branche[3]); // KRAD Alter Tarif
      }
        
      tmpNeuerTarifAktiv = false;
  }
  
  switchFieldsAbweichenderHalter(initFields);
}

function switchFieldsNutzungsart( initFields ) {

  var nutzungsartValue = ((isNeuerTarif()) ? document.kfzAntragForm.nutzungsart[0].value : document.kfzAntragForm.nutzungsart[1].value); 
	if (nutzungsartValue == "1" || nutzungsartValue == "3" || nutzungsartValue == "5") {

      // init fields nur, wenn nicht sichtbar
      // (ansonsten werden sie ggf. bei jedem switch der Nutzungsart initialisiert ...)
      if (document.getElementById("flexNutzerkreis").style.display == "none") {
          initFahrzeugdatenField(document.kfzAntragForm.nutzerkreisVN);
          initFahrzeugdatenField(document.kfzAntragForm.nutzerkreisPartner);
          initFahrzeugdatenField(document.kfzAntragForm.nutzerkreisSohn);
          initFahrzeugdatenField(document.kfzAntragForm.nutzerkreisTochter);
          initFahrzeugdatenField(document.kfzAntragForm.nutzerkreisSonstige);
          initFahrzeugdatenField(document.kfzAntragForm.wohneigentumKz);
      }
      // "Nutzerkreis" muss angezeigt und eingegeben werden
      element_show('flexNutzerkreis');
      // "Selbstgenutztes Wohneigentum" muss angezeigt und eingegeben werden
      element_show('flexWohneigentumKz');

      switchFieldsNutzerkreis( initFields );
  	} else {
      // (re)set fields
      document.kfzAntragForm.nutzerkreisVN.checked = false;
      document.kfzAntragForm.nutzerkreisPartner.checked = false;
      document.kfzAntragForm.nutzerkreisSohn.checked = false;
      document.kfzAntragForm.nutzerkreisTochter.checked = false;
      document.kfzAntragForm.nutzerkreisSonstige.checked = true;
      document.kfzAntragForm.wohneigentumKz.value = "N";

      document.kfzAntragForm.geburtsdatumJuengsterNutzer.value = "";
      document.kfzAntragForm.geburtsdatumAeltesterNutzer.value = "";

      element_hide('flexNutzerkreis');
      element_hide('flexWohneigentumKz');

      // "Geburtsdatum jüngster Nutzer" verschwindet
      element_hide('flexGeburtsdatumJuengsterNutzer');
      // "Geburtsdatum ältester Nutzer" verschwindet
      element_hide('flexGeburtsdatumAeltesterNutzer');

      // Alter jüngster und ältester Nutzer verschwindet 
      element_hide('flexAlterJuengsterNutzer');
      element_hide('flexAlterNutzer');
  	}
  
	checkfieldsGeschlechtJNutzer(); 
      
}

function checkfieldsGeschlechtJNutzer() {
        // Check ob Nutzungsart gewerblich ist
	var geschlecht = document.kfzAntragForm.geschljnutzer.value;    
	var nutzungsartValue = ((isNeuerTarif()) ? document.kfzAntragForm.nutzungsart[0].value : document.kfzAntragForm.nutzungsart[1].value); 
    if (nutzungsartValue == "4" ||  document.kfzAntragForm.fahrzeugart.value == "0002000") {
       document.kfzAntragForm.geschljnutzer.value = "O";
       element_hide('flexGeschljnutzer');
    } else {
    	// Wenn bei Nutzerkreise nicht angecheckt ist, darf geschlecht nicht erscheinen
    	if (!document.kfzAntragForm.nutzerkreisVN.checked && !document.kfzAntragForm.nutzerkreisPartner.checked && !document.kfzAntragForm.nutzerkreisSohn.checked && !document.kfzAntragForm.nutzerkreisTochter.checked && !document.kfzAntragForm.nutzerkreisSonstige.checked  ) {
    		if (document.kfzAntragForm.nutzerkreisSohn.checked) 
    			document.kfzAntragForm.geschljnutzer.value = "M";
     	    else if (document.kfzAntragForm.nutzerkreisTochter.checked) 
     	    	document.kfzAntragForm.geschljnutzer.value = "W";
     	    else
     	    	document.kfzAntragForm.geschljnutzer.value = "O";
    	     element_hide('flexGeschljnutzer');
    	}
    	// Abgefragt wird nur Wenn Sohn + To gleichzeitig gecheckt sind oder nicht gecheckt sind oder sonstige angecheckt ist
    	// Wenn sonstige angeklickt ist, muss die Auswahlliste verlängert bzw umgekehrt verkürzt
    	else if (document.kfzAntragForm.nutzerkreisSohn.checked==document.kfzAntragForm.nutzerkreisTochter.checked || document.kfzAntragForm.nutzerkreisSonstige.checked) {
   	
    	    if (document.kfzAntragForm.datumVersicherungsbeginn.value != '' && 
    	        document.kfzAntragForm.datumVersicherungsbeginn.value != '0' && 
    	        document.kfzAntragForm.geburtsdatumJuengsterNutzer.value != ''  && 
    	        document.kfzAntragForm.geburtsdatumJuengsterNutzer.value != '0' && document.kfzAntragForm.nutzerkreisSonstige.checked==false) {
       		    var datumField = document.kfzAntragForm.geburtsdatumJuengsterNutzer.value;
	            var geburtsdatum = getString2Date(datumField);
	            var dateVersBeginn = getString2Date(document.kfzAntragForm.datumVersicherungsbeginn.value);
	            var stichtag28J = new Date(dateVersBeginn.getTime());
	            stichtag28J.setFullYear(dateVersBeginn.getFullYear() - 28);
	              // Check, ob der Nutzer bei Vertragsbeginn zwischen 16 und 28 Jahren ist

	        if (stichtag28J.getTime() >= geburtsdatum.getTime()) {
		       document.kfzAntragForm.geschljnutzer.value = "O";
	                element_hide('flexGeschljnutzer');
                } else {
	                element_show('flexGeschljnutzer');
	          	}
	    } else {
 	      	   var alter = document.kfzAntragForm.alterJuengsterNutzer.value;
	      	   if ( alter > 27 || alter<1) {
			    document.kfzAntragForm.geschljnutzer.value = "O";
		      	    element_hide('flexGeschljnutzer');
		       } else {
		      	    //document.kfzAntragForm.geschljnutzer.value = "O";
		      	    element_show('flexGeschljnutzer');
		       }
    		}
    	 } else {
    	     if (document.kfzAntragForm.nutzerkreisSohn.checked) 
    	    	 document.kfzAntragForm.geschljnutzer.value = "M";
    	     else if (document.kfzAntragForm.nutzerkreisTochter.checked) 
    	    	 document.kfzAntragForm.geschljnutzer.value = "W";
    	     else
    	    	 document.kfzAntragForm.geschljnutzer.value = "O";
    	     element_hide('flexGeschljnutzer');
    	}
    	
    }
    checkGeschlecht();
}


function checkGeschlecht() {
	var liste = document.kfzAntragForm.geschljnutzer;		
//	var anzahl= document.kfzAntragForm.geschljnutzer.options.length;
	
	var selektiert =document.kfzAntragForm.geschljnutzer.selectedIndex;

	if (document.kfzAntragForm.nutzerkreisSonstige.checked == true ) {				
		neuerWert = new Option("keine Angabe");
		liste[3] = neuerWert;
		liste[3].value = "O";
		document.kfzAntragForm.geschljnutzer.options.length=4;
	
	} else {
		document.kfzAntragForm.geschljnutzer.options.length=3; // length wird beginned ab 1 gezählt
		if (selektiert == 3) {					// selektiert wird beginned ab 0 gezählt
		    document.kfzAntragForm.geschljnutzer.selectedIndex==0;
		}
	}
	if (selektiert == -1) {
	    document.kfzAntragForm.geschljnutzer.selectedIndex==0;
	}
	
}



function switchFieldsNutzerkreis( initFields ) {

  // nur VN oder nur Partner
  if (document.kfzAntragForm.nutzerkreisSohn.checked == false &&
      document.kfzAntragForm.nutzerkreisTochter.checked == false &&
      document.kfzAntragForm.nutzerkreisSonstige.checked == false &&
      ((document.kfzAntragForm.nutzerkreisVN.checked == true &&
        document.kfzAntragForm.nutzerkreisPartner.checked == false) ||
       (document.kfzAntragForm.nutzerkreisVN.checked == false &&
        document.kfzAntragForm.nutzerkreisPartner.checked == true))) {
    // nur VN oder nur Partner
    
    

    // init field nur, wenn nicht sichtbar (ansonsten wird es ggf. bei jeder Nutzerauswahl gelöscht ...)
    if (document.getElementById("flexGeburtsdatumJuengsterNutzer").style.display == "none") {
      initFahrzeugdatenField(document.kfzAntragForm.geburtsdatumJuengsterNutzer);
    }
    // (re)set fields
    if (initFields==true) {
	    document.kfzAntragForm.geburtsdatumAeltesterNutzer.value = "";
	    document.kfzAntragForm.alterJuengsterNutzer.value = "";
	    document.kfzAntragForm.alterAeltesterNutzer.value = "";
	    document.kfzAntragForm.geschljnutzer.value = "";
    }
    
    // "Geburtsdatum (jüngster) Nutzer" muss angezeigt und eingegeben werden
    element_show('flexGeburtsdatumJuengsterNutzer');
    element_show('flexGeburtsdatumNutzerTxt');
    element_hide('flexGeburtsdatumJuengsterNutzerTxt');
    // "Geburtsdatum ältester Nutzer" verschwindet
    element_hide('flexGeburtsdatumAeltesterNutzer');
    
    // Alter jüngster und ältester Nutzer verschwindet 
    element_hide('flexAlterNutzer');
    element_hide('flexAlterJuengsterNutzer');
    
  } else {
    if (document.kfzAntragForm.nutzerkreisVN.checked == false &&
        document.kfzAntragForm.nutzerkreisPartner.checked == false &&
        document.kfzAntragForm.nutzerkreisSohn.checked == false &&
        document.kfzAntragForm.nutzerkreisTochter.checked == false &&
        document.kfzAntragForm.nutzerkreisSonstige.checked == false) {
      
        // keine Auswahl; keine Änderung des Zustandes
        ;
    } else {
      if (document.kfzAntragForm.nutzerkreisSonstige.checked == true) {
    	// sonstige
    	
	    // init field nur, wenn nicht sichtbar (ansonsten wird es ggf. bei jeder Nutzerauswahl gelöscht ...)
	    if (document.getElementById("flexAlterNutzer").style.display == "none") {
	      initFahrzeugdatenField(document.kfzAntragForm.alterJuengsterNutzer);
	      initFahrzeugdatenField(document.kfzAntragForm.alterAeltesterNutzer);
	      
	    }
	    // (re)set fields
	    if (initFields==true) {
		    document.kfzAntragForm.geburtsdatumJuengsterNutzer.value = "";
		    document.kfzAntragForm.geburtsdatumAeltesterNutzer.value = "";
		    document.kfzAntragForm.geschljnutzer.value = "";
	    }

        // "Geburtsdatum jüngster Nutzer" verschwindet
        element_hide('flexGeburtsdatumJuengsterNutzer');
        // "Geburtsdatum ältester Nutzer" verschwindet
        element_hide('flexGeburtsdatumAeltesterNutzer');
	    
    	// Alter jüngster und ältester Nutzer muss angezeigt und eingegeben werden
  	    element_show('flexAlterNutzer');
        element_show('flexAlterJuengsterNutzer');

      } else {	
	    // nur Sohn oder nur Tochter oder mehrere (aber nicht sonstige)
	
	    // init field nur, wenn nicht sichtbar (ansonsten wird es ggf. bei jeder Nutzerauswahl gelöscht ...)
	    if (document.getElementById("flexGeburtsdatumJuengsterNutzer").style.display == "none") {
	      initFahrzeugdatenField(document.kfzAntragForm.geburtsdatumJuengsterNutzer);
	    }
	    // init field nur, wenn nicht sichtbar (ansonsten wird es ggf. bei jeder Nutzerauswahl gelöscht ...)
	    if (document.getElementById("flexGeburtsdatumAeltesterNutzer").style.display == "none") {
	      initFahrzeugdatenField(document.kfzAntragForm.geburtsdatumAeltesterNutzer);
	    }
	    // (re)set fields
	    if (initFields==true) {
		    document.kfzAntragForm.alterJuengsterNutzer.value = "";
		    document.kfzAntragForm.alterAeltesterNutzer.value = "";
		    document.kfzAntragForm.geschljnutzer.value = "";
	    }
	    
	    // "Geburtsdatum jüngster Nutzer" muss angezeigt und eingegeben werden
	    element_show('flexGeburtsdatumJuengsterNutzer');
	    element_show('flexGeburtsdatumJuengsterNutzerTxt');
	    element_hide('flexGeburtsdatumNutzerTxt');
	    // "Geburtsdatum ältester Nutzer" muss angezeigt und eingegeben werden
	    element_show('flexGeburtsdatumAeltesterNutzer');
	    
	    // Alter jüngster und ältester Nutzer verschwindet 
	    element_hide('flexAlterNutzer');
        element_hide('flexAlterJuengsterNutzer');
      }
    }
  }
}

// globale Variable
var tmpBeschaeftigungsverhaeltnis = "";

function switchFieldsBeschaeftigungsverhaeltnis( initFields ) {

	var branche = document.kfzAntragForm.branche[0];

	if (document.kfzAntragForm.beschaeftigungsverhaeltnis.value == "OHN") {
	    // Hausmann/Hausfrau/nicht erwerbstätig
      element_hide('flexBranchePKWNeuerTarif');
      branche.value = "000";

  } else {  // für alle anderen Ausprägungen muss die Combobox Branche (Pkw, Neuer Tarif) spezielle Werte annehmen
  
    // init Branche nur, wenn nicht sichtbar (ansonsten wird es ggf. bei jeder Auswahl des Beschäftigungsverhältnisses gelöscht ...)
    if (document.getElementById("flexBranchePKWNeuerTarif").style.display == "none") {
      initFahrzeugdatenField(branche);
    }

    element_show('flexBranchePKWNeuerTarif');
  
    // prüfen, ob sich das Beschäftigungsverhältnis geändert hat; nur dann muss die Combobox Branche neu gefüllt werden
  	var comboAlreadyFilled = (tmpBeschaeftigungsverhaeltnis == document.kfzAntragForm.beschaeftigungsverhaeltnis.value) ? true : false;

    if (comboAlreadyFilled == false &&
        branche.options.length > 1) {
        // lösche Combobox-Werte bis auf "Bitte auswählen"
        // -> es sind Werte der vorherigen Auswahl enthalten
    		branche.options.length = 1;
    }
  
    var branchenCounter = 0;
    var selectedIndex = 0;
    for ( var i = 0; i < branchenKombi.length; i++ ) {
        brancheValid = branchenKombi[i];
    		if (document.kfzAntragForm.beschaeftigungsverhaeltnis.value == brancheValid[0]) {
      			// Beschäftigungsverhältnis gefunden -> Combo fuellen
      			if (comboAlreadyFilled == false) {
              branchenCounter++;
      			  selected = (document.kfzAntragForm.brancheSelection.value == brancheValid[1]) ? true : false;
        			neueBranche = new Option(brancheValid[2], brancheValid[1], false, selected);
              branche[branche.length] = neueBranche;
              if (selected == true) {
                  selectedIndex = branchenCounter;
              }
            }
    		}
    }
    if (selectedIndex == 0) {
      // Selektion zurücksetzen für den Fall, dass eine bestehende nicht existiert
      document.kfzAntragForm.brancheSelection.value = '';
    }
    
    // aufgrund von IE-Problemen bei new Option in Verbinung mit Eintrag selektieren:
    // der zu selektierende Index wird zusätzlich ermittelt und hier explizit gesetzt
    branche.selectedIndex = selectedIndex;
  
    tmpBranche = branche.value;
  }
}

function isNeuerTarif() {
  var datumVersicherungsbeginn = $('#novMVersicherungsbeginn').val();
  var dateVersBeginn;

  if (datumVersicherungsbeginn != '') {
      dateVersBeginn = getString2Date(datumVersicherungsbeginn);
  } else {  // kein Versicherungsbeginn gesetzt, wir nehmen das aktuelle Tagesdatum
    	var cc = new Date();
    	var days = 41;
    	cc.setTime(cc.getTime() + days * 24*60*60*1000);
      dateVersBeginn = new Date();
      dateVersBeginn = cc;
  }

  return (dateVersBeginn.getMonth() > 8 || dateVersBeginn.getFullYear() > 2009);
}


// ----------------------------------------------------------
// Sonderfälle zum AKZ
// ----------------------------------------------------------

// globale Variable
var tmpAKZKreis = "";

function switchContentFieldsAkzKreis( initFields ) {
	if (document.kfzAntragForm.einstufungId.value == "U" ||
      document.kfzAntragForm.akzKreis.value == '') {
      // Keine Anzeige Kreiskennzeichen, clear Inhalt
      document.kfzAntragForm.kreisKz.value = "";
      element_hide('flexKreisKz');
      document.kfzAntragForm.kreisKzErforderlich.value = false;
      tmpAKZKreis = "";
      return;
  }

	var kreisKzEingabe = document.kfzAntragForm.kreisKz;
	var sonderfall = false;
	var comboAlreadyFilled = (tmpAKZKreis == document.kfzAntragForm.akzKreis.value) ? true : false;

  if (comboAlreadyFilled == false &&
      document.kfzAntragForm.kreisKz.options.length > 1) {
      // lösche Combobox-Werte bis auf "Bitte auswählen"
      // -> es sind Werte der vorherigen Auswahl enthalten
  		document.kfzAntragForm.kreisKz.options.length = 1;
  		document.kfzAntragForm.kreisKzSelection.value = '';
  }

  var sonderfallCounter = 0;
  var selectedIndex = 0;
  for ( var i = 0; i < akzs.length; i++ ) {
      sonderAkz = akzs[i];
  		if (document.kfzAntragForm.akzKreis.value == sonderAkz[0]) {
    			// Sonderfall gefunden -> Combo fuellen
    			if (comboAlreadyFilled == false) {
            sonderfallCounter++;
    			  selected = (document.kfzAntragForm.kreisKzSelection.value == sonderAkz[1]) ? true : false;
      			neuerKreis = new Option(sonderAkz[2], sonderAkz[1], false, selected);
            kreisKzEingabe[kreisKzEingabe.length] = neuerKreis;
            if (selected == true) {
                selectedIndex = sonderfallCounter;
            }
          }
    			sonderfall = true;
  		}
  }
  // aufgrund von IE-Problemen bei new Option in Verbinung mit Eintrag selektieren:
  // der zu selektierende Index wird zusätzlich ermittelt und hier explizit gesetzt
  kreisKzEingabe.selectedIndex = selectedIndex;

	// Kein Sonderfall gefunden -> Combobox-Inhalt loeschen und Validationflag setzen
	if (sonderfall == false) {
	    // lösche Combobox-Werte bis auf "Bitte auswählen"
  		document.kfzAntragForm.kreisKz.options.length = 1;
      // Keine Anzeige Kreiskennzeichen, clear Inhalt
      document.kfzAntragForm.kreisKz.value = "";
      element_hide('flexKreisKz');
      document.kfzAntragForm.kreisKzErforderlich.value = false;
	} else {
  		document.kfzAntragForm.kreisKzErforderlich.value = true;
      element_show('flexKreisKz');
	}
  tmpAKZKreis = document.kfzAntragForm.akzKreis.value;
}


// ----------------------------------------------------------
// Sonderfälle zur Postleitzahl
// ----------------------------------------------------------

// globale Variable
var tmpPlz = "";

function switchContentFieldsPlz( initFields ) {
   if (document.kfzAntragForm.plz.value == '') {
      // Keine Anzeige Standortkennzeichen, clear Inhalt
      document.kfzAntragForm.standortKz.value = "";
      element_hide('flexStandortKz');
      document.kfzAntragForm.standortKzErforderlich.value = false;
      tmpPlz = "";
      return;
   }

   var standortKzEingabe = document.kfzAntragForm.standortKz;
   var sonderfall = false;
   var comboAlreadyFilled = (tmpPlz == document.kfzAntragForm.plz.value) ? true : false;
   var selektierterWert = document.kfzAntragForm.standortKz.value;
   // Beim Neuanzeigen der Seite steht der Selektiertewert in standortKzSelection
   if (selektierterWert=='' && document.kfzAntragForm.standortKzSelection.value!='') {
       selektierterWert=document.kfzAntragForm.standortKzSelection.value;
   }

   if ( document.kfzAntragForm.standortKz.options.length > 1) {
      // lösche Combobox-Werte bis auf "Bitte auswählen"
      // -> es sind Werte der vorherigen Auswahl enthalten
  		document.kfzAntragForm.standortKz.options.length = 1;
//  		document.kfzAntragForm.standortKzSelection.value = '';
   }

   var sonderfallCounter = 0;
   var selectedIndex = 0;
   for ( var i = 0; i < plzs.length; i++ ) {
   	sonderPlz = plzs[i];
  	if (document.kfzAntragForm.plz.value == sonderPlz[0]) {
  	    // Sonderfall gefunden -> Combo fuellen
	    sonderfallCounter++;
	    selected = (selektierterWert == sonderPlz[1]) ? true : false;
	    neuerStandort = new Option(sonderPlz[2], sonderPlz[1], false, selected);
	    standortKzEingabe[standortKzEingabe.length] = neuerStandort;
	    if (selected == true) {
		    selectedIndex = sonderfallCounter;
	    }
    	    sonderfall = true;
  	}
    }
  
    // aufgrund von IE-Problemen bei new Option in Verbinung mit Eintrag selektieren:
    // der zu selektierende Index wird zusätzlich ermittelt und hier explizit gesetzt
    standortKzEingabe.selectedIndex = selectedIndex;

    // Kein Sonderfall gefunden -> Combobox-Inhalt loeschen und Validationflag setzen
    if (sonderfall == false) {
	// lösche Combobox-Werte bis auf "Bitte auswählen"
  	document.kfzAntragForm.standortKz.options.length = 1;
        // Keine Anzeige Standortkennzeichen, clear Inhalt
        document.kfzAntragForm.standortKz.value = "";
	document.kfzAntragForm.standortKzSelection.value = '';
      	element_hide('flexStandortKz');
      	document.kfzAntragForm.standortKzErforderlich.value = false;
    } else {
  	document.kfzAntragForm.standortKzErforderlich.value = true;
  	element_show('flexStandortKz');
    }
  tmpPlz = document.kfzAntragForm.plz.value;
}

// ----------------------------------------------------------
// Hinweistexte anzeigen (Eingabe Tipp)
// ----------------------------------------------------------

function showInputTippEinstufungId(einstufungId) {
  switch (einstufungId) {
    case "U":
      $('#flexTippEinstufungIdU').show();
      $('#flexTippEinstufungIdV').hide();
      $('#flexTippEinstufungIdS').hide();
      break;
    case "V":
      $('#flexTippEinstufungIdV').show();
      $('#flexTippEinstufungIdU').hide();
      $('#flexTippEinstufungIdS').hide();
      break;
    case "S":
      $('#flexTippEinstufungIdS').show();
      $('#flexTippEinstufungIdU').hide();
      $('#flexTippEinstufungIdV').hide();
      break;
    default:
      hideInputTippEinstufungId();
      break;
  }
}

function hideInputTippEinstufungId() {
  window.setTimeout("$('#flexTippEinstufungIdU').hide()", 250);
  window.setTimeout("$('#flexTippEinstufungIdV').hide()", 250);
  window.setTimeout("$('#flexTippEinstufungIdS').hide()", 250);
}

function showInputTippVersicherungsbeginn() {
  var einstufungId = $('#cmbKIch_M_oechte').val();
  switch (einstufungId) {
    case "V":
      $('#flexTippVersicherungsbeginnV').show();
      $('#flexTippVersicherungsbeginnS').hide();
      break;
    case "S":
      $('#flexTippVersicherungsbeginnS').show();
      $('#flexTippVersicherungsbeginnV').hide();
      break;
    default:
      hideInputTippVersicherungsbeginn();
      break;
  }
}

function hideInputTippVersicherungsbeginn() {
  window.setTimeout("$('#flexTippVersicherungsbeginnV').hide()", 250);
  window.setTimeout("$('#flexTippVersicherungsbeginnS').hide()", 250);
}

function showHinweisUnterjaehrigerVersicherungsbeginn() {
  var einstufungId = $('#cmbKIch_M_oechte').val();
  // check, ob unterjähriger Versicherungswechsel
  if (einstufungId == "U" && checkUnterjaehrigerVersicherungswechsel() == true) {
    // dieser Hinweis kann, wenn einmal angezeigt, nur vom Benutzer geschlossen werden
    $('#flexHinweisUnterjaehrigerVersicherungswechsel').show();
  }    
}

function hideHinweisUnterjaehrigerVersicherungswechsel() {
  window.setTimeout("$('#flexHinweisUnterjaehrigerVersicherungswechsel').hide()", 250);
}

// ----------------------------------------------------------
// Auswahl Fahrzeugsuche / Fahrzeug ändern
// ----------------------------------------------------------

function klickFahrzeugsuche() {

    // init Feld für den Einstieg in die Fahrzeugsuche
	if (manualOverride) {
		if (document.kfzFahrzeugsucheForm.hersteller.value == '') {
			document.location.hash.match(/hsn=([^&$]*)/);
			customHsn = RegExp.$1;
			document.location.hash.match(/tsn=([^&$]*)/);
			customTsn = RegExp.$1;
		}
	}else {
		document.kfzFahrzeugsucheForm.hersteller.value = '';
	}
    initFahrzeugsuche();

    // show Dialog Fahrzeugsuche
    showForm('_fahrzeugsuche');
    document.kfzFahrzeugsucheForm.hersteller.focus();
}

function klickHsnTsnDirekteingabe(doNotSetFocus) {

    element_show('flexHsnTsnDirekteingabe');
    element_hide('flexLinkHsnTsnDirekteingabe');
    if (!doNotSetFocus) {
      document.kfzFahrzeugsucheForm.hersteller.focus();
    }
}

function klickFahrzeugauswahlAendern() {

    element_show('fahrzeugsuche');
    element_show('flexLinkHsnTsnDirekteingabe');
    element_hide('flexHsnTsnDirekteingabe');
    element_hide('fahrzeugergebnis');
}

function sucheFahrzeug( hsn, tsn, errIdH05 ) {

	  var versicherungsBeginn = $("novMVersicherungsbeginn").val();

  	$.getJSON("/direkt/ajax/FahrzeugSuche", { f: "4", hsn: hsn, tsn: tsn, versicherungsBeginn: versicherungsBeginn},
       function(data){
  	var size = data.length;
 	  var divId = 'flexDivTsn';
          		$.each(data, function(i, val){
        var text = val.modellbezeichnung + ", " + val.leistungkw + " KW";
        document.kfzAntragForm.ausgewaehltesFahrzeug.value = text;
      	$("#flexAusgewaehltesFahrzeug").text(text);
  		});
  	if (size > 0) {
        // aktuelle HSN / TSN sichern
        document.kfzAntragForm.hsnAktuell.value = hsn;
        document.kfzAntragForm.tsnAktuell.value = tsn;

        element_hide('fahrzeugsuche');
        element_show('fahrzeugergebnis');

        element_hide(errIdH05);
        div_reset_error_class(divId);
  	} else {
        // ausgewähltes Fahrzeug zurücksetzen
        document.kfzAntragForm.ausgewaehltesFahrzeug.value = '';
    	  $("#flexAusgewaehltesFahrzeug").text('');

    	klickFahrzeugauswahlAendern()

        // Hinweis 05
        element_show(errIdH05);
        div_set_error_class(divId);
        // kein Zurücksetzen des Focus; andernfalls kann Fahrzeugsuche nicht durchlaufen werden
        //setTimeout("document.kfzAntragForm.tsn.focus()",1);
        
        // Fehler müssen auf jeden Fall sichtbar sein
        klickHsnTsnDirekteingabe(true);
  	}
        });
}

// ----------------------------------------------------------
// Auswahl Herstellersuche
// ----------------------------------------------------------

function klickHerstellersuche() {

    // init Feld für den Einstieg in die Herstellersuche
    document.kfzHerstellersucheForm.hersteller.value = '';
    initHerstellersuche();

    // show Dialog Herstellersuche
    showForm('_herstellersuche');
    document.kfzHerstellersucheForm.hersteller.focus();
}

function klickHerstellerAendern() {

  // show Dialog Herstellersuche
  klickHerstellersuche();
}


// ----------------------------------------------------------
// Auswahl Fahrzeugschein
// ----------------------------------------------------------

function klickFahrzeugschein() {

    // init Feld für den Einstieg in die Fahrzeugschein-Auswahl
    document.kfzFahrzeugscheinForm.zulassung_type[0].checked = false;
    document.kfzFahrzeugscheinForm.zulassung_type[1].checked = false;
    
    // init Eingabefelder
    var fahrzeugscheinAltOderNeu = 'alt';
    for (i = 0; i < 2; i++) {
      $("#fahrzeugschein_" + fahrzeugscheinAltOderNeu + "_plz").val(document.kfzAntragForm.plz.value);
      $("#fahrzeugschein_" + fahrzeugscheinAltOderNeu + "_zulassungsdatum").val(document.kfzAntragForm.datumAnschaffung.value);	
      $("#fahrzeugschein_" + fahrzeugscheinAltOderNeu + "_hsn").val(document.kfzAntragForm.hsn.value);
      $("#fahrzeugschein_" + fahrzeugscheinAltOderNeu + "_tsn").val(document.kfzAntragForm.tsn.value);
      $("#fahrzeugschein_" + fahrzeugscheinAltOderNeu + "_erstzulassung").val(document.kfzAntragForm.datumErstzulassung.value);
      fahrzeugscheinAltOderNeu = 'neu';
    }
    initFahrzeugschein();

    // show Dialog Fahrzeugschein-Auswahl
    switchStepFahrzeugscheinPanel('overview');
    showForm('_fahrzeugschein');
    $("#zulassung_type_new").focus();
}


// ----------------------------------------------------------
// Initialisierungen Feldinhalte Fahrzeugdaten
// ----------------------------------------------------------

function clearLeistungKW() {
  if (document.kfzAntragForm.leistungPS.value != "") {
      document.kfzAntragForm.leistungKW.value = "";
  }
}

function clearLeistungPS() {
  if (document.kfzAntragForm.leistungKW.value != "") {
      document.kfzAntragForm.leistungPS.value = "";
  }
}

function initVersicherungsbeginn() {
  if (document.kfzAntragForm.datumVersicherungsbeginn.value == "") {
      var now = new Date();
      var tag = ((now.getDate() < 10) ? "0" : "") + now.getDate();
      var monat = ((now.getMonth() + 1 < 10) ? "0" : "") + (now.getMonth() + 1);
      document.kfzAntragForm.datumVersicherungsbeginn.value = tag + "." + monat + "." + now.getFullYear();
  }
}

// alle Felder ausser Einstufungs-ID initialisieren
function initAllFahrzeugdatenFields() {
      initFahrzeugdatenField(document.kfzAntragForm.hsn);
      initFahrzeugdatenField(document.kfzAntragForm.tsn);
      initFahrzeugdatenField(document.kfzAntragForm.ausgewaehltesFahrzeug);
      initFahrzeugdatenField(document.kfzAntragForm.ausgewaehlterHerstellerName);
      initFahrzeugdatenField(document.kfzAntragForm.leistungPS);
      initFahrzeugdatenField(document.kfzAntragForm.leistungKW);
      initFahrzeugdatenField(document.kfzAntragForm.hubraum);
      //if (document.kfzAntragForm.aufrufer.value != '2') {
      //   initFahrzeugdatenField(document.kfzAntragForm.einstufungId);
      //}
      initFahrzeugdatenField(document.kfzAntragForm.kuendigungDurch);
      initFahrzeugdatenField(document.kfzAntragForm.abstellort);
      initFahrzeugdatenField(document.kfzAntragForm.datumVersicherungsbeginn);
      initFahrzeugdatenField(document.kfzAntragForm.datumErstzulassung);
      initFahrzeugdatenField(document.kfzAntragForm.abweichenderHalter[0]);  // PKW Neuer Tarif
      initFahrzeugdatenField(document.kfzAntragForm.abweichenderHalter[1]);  // PKW Alter Tarif
      initFahrzeugdatenField(document.kfzAntragForm.abweichenderHalter[2]);  // KRAD Neuer Tarif
      initFahrzeugdatenField(document.kfzAntragForm.abweichenderHalter[3]);  // KRAD Alter Tarif
      initFahrzeugdatenField(document.kfzAntragForm.datumAnschaffung);
      initFahrzeugdatenField(document.kfzAntragForm.akzKreis);
      initFahrzeugdatenField(document.kfzAntragForm.akzBuchstabe);
      initFahrzeugdatenField(document.kfzAntragForm.akzZiffer);
      initFahrzeugdatenField(document.kfzAntragForm.kreisKz);
      initFahrzeugdatenField(document.kfzAntragForm.plz);
      initFahrzeugdatenField(document.kfzAntragForm.fahrleistung);
      initFahrzeugdatenField(document.kfzAntragForm.beschaeftigungsverhaeltnis);
      initFahrzeugdatenField(document.kfzAntragForm.nutzungsart[0]);    // Nutzungsart Neuer Tarif
      initFahrzeugdatenField(document.kfzAntragForm.nutzungsart[1]);    // Nutzungsart Alter Tarif
      initFahrzeugdatenField(document.kfzAntragForm.absKz);
      initFahrzeugdatenField(document.kfzAntragForm.neuwert);
      initFahrzeugdatenField(document.kfzAntragForm.nutzerkreisVN);
      initFahrzeugdatenField(document.kfzAntragForm.nutzerkreisPartner);
      initFahrzeugdatenField(document.kfzAntragForm.nutzerkreisSohn);
      initFahrzeugdatenField(document.kfzAntragForm.nutzerkreisTochter);
      initFahrzeugdatenField(document.kfzAntragForm.nutzerkreisSonstige);
      initFahrzeugdatenField(document.kfzAntragForm.geburtsdatumJuengsterNutzer);
      initFahrzeugdatenField(document.kfzAntragForm.geburtsdatumAeltesterNutzer);
      initFahrzeugdatenField(document.kfzAntragForm.wohneigentumKz);
      initFahrzeugdatenField(document.kfzAntragForm.branche[0]);  // PKW Neuer Tarif
      initFahrzeugdatenField(document.kfzAntragForm.branche[1]);  // PKW Alter Tarif
      initFahrzeugdatenField(document.kfzAntragForm.branche[2]);  // KRAD Neuer Tarif
      initFahrzeugdatenField(document.kfzAntragForm.branche[3]);  // KRAD Alter Tarif
	  if (typeof(document.kfzAntragForm.captcha) != 'undefined') {
	      initFahrzeugdatenField(document.kfzAntragForm.captcha);
	  }

      // da dieses Feld immer angezeigt wird, muss der Inhalt explizit nochmal gelöscht werden
      document.getElementById('flexFahrzeugHerstellerName').innerHTML = '';
}

function initFahrzeugdatenField(fld) {

    if (fld.type == 'text'
        || fld.type == 'hidden'
        || fld.type == 'select-one'
        || fld.type == 'checkbox') {

      if (fld.name == 'nutzungsart') {
          fld.value = 1;
          return;
      }
      if (fld.name == 'nutzerkreisVN') {
          fld.checked = true;
          return;
      }
      if (fld.name == 'nutzerkreisPartner'
          || fld.name == 'nutzerkreisSohn'
          || fld.name == 'nutzerkreisTochter'
          || fld.name == 'nutzerkreisSonstige') {
          fld.checked = false;
          return;
      }
      if (fld.name == 'branche') {
          fld.selectedIndex = 0;
          fld.value = '';
          return;
      }
    } else {  // Felder mit Gruppenelementen
      if (fld[0].name == 'absKz') {
          fld[0].checked = false;
          fld[1].checked = false;
          return;
      }
    }
    // default
    fld.value = "";
}

function setAllFahrzeugdatenErrorMessagesInvisible(initFields) {

    var id;
    // komplette Liste der IDs zu Fehlermeldungen aus der Fahrzeugdaten-JSP
    var idList = new Array('flexErrTsnH05',
                          'flexErrTsnH12',
                          'flexErrHubraum',
                          'flexErrDatumVersicherungsbeginnH02',
                          'flexErrDatumVersicherungsbeginnH03',
                          'flexErrDatumVersicherungsbeginnH10',
                          'flexErrDatumVersicherungsbeginnH11',
                          'flexErrDatumVersicherungsbeginnH13',
                          'flexErrDatumVersicherungsbeginnH22',
                          'flexErrDatumErstzulassungH01',
                          'flexErrDatumErstzulassungH03',
                          'flexErrDatumErstzulassungHStart',
                          'flexErrDatumErstzulassungH17',
                          'flexErrDatumErstzulassungH13',
                          'flexErrDatumAnschaffungH03',
                          'flexErrDatumAnschaffungH18',
                          'flexErrDatumAnschaffungH14',
                          'flexErrDatumAnschaffungH01',
                          'flexErrDatumAnschaffungH02',
                          'flexErrDatumAnschaffungH22',
                          'flexErrFahrleistungH16',
                          'flexErrGeburtsdatumJuengsterNutzerH03',
                          'flexErrGeburtsdatumJuengsterNutzerHAlter',
                          'flexErrGeburtsdatumJuengsterNutzerH19',
                          'flexErrGeburtsdatumAeltesterNutzerH03',
                          'flexErrGeburtsdatumAeltesterNutzerHAlter',
                          'flexErrGeburtsdatumAeltesterNutzerH19'
                          )
    // korrespondierende Liste der div-IDs, in denen das zugehörige Eingabefeld enthalten ist
    var idDivList = new Array('flexDivTsn',
                          'flexDivTsn',
                          'flexDivHubraum',
                          'flexDivDatumVersicherungsbeginn',
                          'flexDivDatumVersicherungsbeginn',
                          'flexDivDatumVersicherungsbeginn',
                          'flexDivDatumVersicherungsbeginn',
                          'flexDivDatumVersicherungsbeginn',
                          'flexDivDatumVersicherungsbeginn',
                          'flexDivDatumErstzulassung',
                          'flexDivDatumErstzulassung',
                          'flexDivDatumErstzulassung',
                          'flexDivDatumErstzulassung',
                          'flexDivDatumErstzulassung',
                          'flexDivDatumAnschaffung',
                          'flexDivDatumAnschaffung',
                          'flexDivDatumAnschaffung',
                          'flexDivDatumAnschaffung',
                          'flexDivDatumAnschaffung',
                          'flexDivDatumAnschaffung',
                          'flexDivFahrleistung',
                          'flexDivGeburtsdatumJuengsterNutzer',
                          'flexDivGeburtsdatumJuengsterNutzer',
                          'flexDivGeburtsdatumJuengsterNutzer',
                          'flexDivGeburtsdatumAeltesterNutzer',
                          'flexDivGeburtsdatumAeltesterNutzer',
                          'flexDivGeburtsdatumAeltesterNutzer'
                          )

    if (initFields == true) {
        // grundsätzlich zurücksetzen
        for (var i = 0; i < idList.length; i++) {
            element_hide(idList[i]);
            div_reset_error_class(idDivList[i]);
        }

    } else {  // inaktive Fehlermeldungen müssen versteckt werden

        for (var i = 0; i < idList.length; i++) {
            id = idList[i];
            if (document.getElementsByName(id + 'Style')[0].value == 'display:none;') {
                element_hide(id);
                // Achtung: kein Reset des Error-Styles, da hier ggf. Struts-Validierungsfehler existieren
            } else {
                element_show(id);
                div_set_error_class(idDivList[i]);
            }
        }
    }
}

// ----------------------------------------------------------
// Eingabevalidierungen Fahrzeugdaten
// ----------------------------------------------------------

function checkHsn( errIdH05 ) {

  var hsn = document.kfzAntragForm.hsn.value;
  if (document.kfzAntragForm.fahrzeugart.value == "0008000") {

	  if (hsn != document.kfzAntragForm.hsnAktuell.value) {
	      // HSN hat sich geändert, Suchergebnis löschen
	      document.kfzAntragForm.ausgewaehltesFahrzeug.value = '';
	  }

	  // ggf. Aufruf Fahrzeugsuche
	  checkSucheFahrzeug(errIdH05);
  }
  return true;
}


function checkTsn( errIdH05, errIdH12 ) {

  var tsn = document.kfzAntragForm.tsn.value;
  if (document.kfzAntragForm.fahrzeugart.value == "0008000") {

	  var divId = 'flexDivTsn';

	  if (tsn == '000' || tsn == '999') {
	      // Hinweis 12
	      element_show(errIdH12);
	      div_set_error_class(divId);
	      // kein Zurücksetzen des Focus; andernfalls kann Fahrzeugsuche vom Benutzer nicht aufgerufen werden
	      //setTimeout("document.kfzAntragForm.tsn.focus()",1);
	      // reset andere Fehler, falls sie gerade aktiv waren
	      element_hide(errIdH05);
	      return false;
	  }

	  // reset andere Fehler, falls sie gerade aktiv waren
	  element_hide(errIdH12);
	  if (!isStrutsErrorActive('tsn', errorPropertyNames)) {
	      div_reset_error_class(divId);
	  }

	  // ggf. Aufruf Fahrzeugsuche
	  checkSucheFahrzeug(errIdH05);
  }

  return true;
}


function checkSucheFahrzeug( errIdH05 ) {

  var hsn = document.kfzAntragForm.hsn.value;
  var tsn = document.kfzAntragForm.tsn.value;

  if (hsn != '' && hsn.length == 4 &&
      tsn != '' && tsn.length == 3) {

      if (document.kfzAntragForm.ausgewaehltesFahrzeug.value == ''
          || hsn != document.kfzAntragForm.hsnAktuell.value
          || tsn != document.kfzAntragForm.tsnAktuell.value) {
          // Fahrzeug suchen und ausgewaehltes Fahrzeug füllen
          sucheFahrzeug(hsn, tsn, errIdH05);
      } else {
          // das bereits gefundene Ergebnis muss wieder angezeigt werden
          element_hide('fahrzeugsuche');
          element_show('fahrzeugergebnis');
      }
      $("#datMZulassung_auf_mich").focus();
  }
}

function checkHubraum( errId ) {

  var divId = 'flexDivHubraum';

  if (document.kfzAntragForm.hubraum.value != '') {
    if (document.kfzAntragForm.hubraum.value < 126) {
        // Hinweis 6
        element_show(errId);
        div_set_error_class(divId);
        // A.Claus: wird nicht mehr gewünscht
        //setTimeout("document.kfzAntragForm.hubraum.focus()",1);
        return false
    }
    div_reset_error_class(divId);
  } else {
    // erforderlich wenn:
    // Struts Fehler existiert, letzte JavaScript-Eingabe ok war und die Eingabe danach gelöscht wird
    // -> Error-Style muss wiederhergestellt werden
    if (isStrutsErrorActive('hubraum', errorPropertyNames)) {
      div_set_error_class(divId);
    }
  }
  element_hide(errId);
  if (!isStrutsErrorActive('hubraum', errorPropertyNames)) {
    div_reset_error_class(divId);
  }
  return true;
}

// A.Claus: z. Zt. nicht mehr erforderlich
//var cursorResetToVersicherungsBeginn;
//var cursorResetToErstzulassungsdatum;
//var cursorResetToAnschaffungsdatum;

function checkDatumVersicherungsbeginn( fieldId, errIdH03, errIdH10, errIdH11, errIdH13, resetErrIdH13, divIdResetErstzulassung, errIdH02, resetErrIdH02, errIdH22, resetErrIdH22, divIdResetAnschaffung ) {

  // andernfalls kann hier eine Endlosschleife entstehen, da Datumsfelder voneinander abhängig sind
  // A.Claus: z. Zt. nicht mehr erforderlich
  //if (cursorResetToErstzulassungsdatum == true
  //    || cursorResetToAnschaffungsdatum == true)
  //    return;

  var divId = 'flexDivDatumVersicherungsbeginn';

  // A.Claus: z. Zt. nicht mehr erforderlich
  //cursorResetToVersicherungsBeginn = false;

  if (checkDatumsformat(fieldId, errIdH03, divId, errorPropertyNames)) {

      var datumVersicherungsbeginn = document.getElementById(fieldId);

      if (datumVersicherungsbeginn.value != '') {
          var dateHeute = getDatumHeute();
          var dateVersBeginn = getString2Date(datumVersicherungsbeginn.value);

		  // reset
		  element_hide(errIdH10);

          // check, ob Versicherungsbeginn in der Vergangenheit liegt
          if (dateHeute.getTime() > dateVersBeginn.getTime()) {
              // Hinweis 10
              element_show(errIdH10);
              div_set_error_class(divId);
              // A.Claus: wird nicht mehr gewünscht
              //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
              //cursorResetToVersicherungsBeginn = true;
              // reset andere Fehler, falls sie gerade aktiv waren
              element_hide(errIdH02);
              element_hide(errIdH11);
              element_hide(errIdH13);
              element_hide(errIdH22);
              return false;
          }

          // check, ob Versicherungsbeginn über den gültigen Tarifzeitraum hinausgeht
			document.getElementsByName("btn_weiter")[0].style.display="block";
			var ausserhalbTarifzeitraum = false;
			var dateNT = getString2Date("14.09.2010");
   			if (dateVersBeginn.getTime() > dateNT.getTime()) {
				// Versicherungsbeginn liegt nach dem gültigen Tarifzeitraum
				ausserhalbTarifzeitraum = true;
   			}
			
         	// reset
			element_hide(errIdH11);

         if (ausserhalbTarifzeitraum) {
                // Hinweis 11
	            //$("#flexMaxJahrVersicherungsbeginn").text(maxJahrVersicherungsbeginn);
	            element_show(errIdH11);
	            div_set_error_class(divId);
                // A.Claus: wird nicht mehr gewünscht
	            //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
	            //cursorResetToVersicherungsBeginn = true;
	            // reset andere Fehler, falls sie gerade aktiv waren
                element_hide(errIdH02);
	            element_hide(errIdH10);
                element_hide(errIdH13);
                element_hide(errIdH22);
				document.getElementsByName("btn_weiter")[0].style.display="none";
                return false;
          }
          
          if (document.kfzAntragForm.datumAnschaffung.value != '') {
              var dateAnschaffung = getString2Date(document.kfzAntragForm.datumAnschaffung.value);

              // check, ob Datum der Zulassung nach dem Versicherungsbeginn liegt
              if (dateAnschaffung.getTime() > dateVersBeginn.getTime()) {
                  // Hinweis 2
                  element_show(errIdH02);
                  div_set_error_class(divId);
                  // A.Claus: wird nicht mehr gewünscht
                  //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                  //cursorResetToAnschaffungsdatum = true;
                  // reset andere Fehler, falls sie gerade aktiv waren
  	              element_hide(errIdH10);
                  element_hide(errIdH11);
  	              element_hide(errIdH13);
  	              element_hide(errIdH22);
                  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                  if (document.getElementById(resetErrIdH02).style.display == 'block') {
                    // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                    element_hide(resetErrIdH02);
                    div_reset_error_class(divIdResetAnschaffung);
                  }
                  return false;
              }

              // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
              if (document.getElementById(resetErrIdH02).style.display == 'block') {
                // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                element_hide(resetErrIdH02);
                div_reset_error_class(divIdResetAnschaffung);
              }

              // check, ob KEIN Versichererwechsel gewünscht
              if (document.kfzAntragForm.einstufungId.value != "U") {

                // check, ob Datum der Zulassung vor dem Versicherungsbeginn liegt
                if (dateAnschaffung.getTime() < dateVersBeginn.getTime()) {
                    // Hinweis 22
                    element_show(errIdH22);
                    div_set_error_class(divId);
                    // A.Claus: wird nicht mehr gewünscht
                    //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                    //cursorResetToAnschaffungsdatum = true;
                    // reset andere Fehler, falls sie gerade aktiv waren
    	              element_hide(errIdH02);
    	              element_hide(errIdH10);
                      element_hide(errIdH11);
    	              element_hide(errIdH13);
                    // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                    if (document.getElementById(resetErrIdH22).style.display == 'block') {
                      // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                      element_hide(resetErrIdH22);
                      div_reset_error_class(divIdResetAnschaffung);
                    }
                    return false;
                }

                // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                if (document.getElementById(resetErrIdH22).style.display == 'block') {
                  // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                  element_hide(resetErrIdH22);
                  div_reset_error_class(divIdResetAnschaffung);
                }
              }
          }

          if (document.kfzAntragForm.datumErstzulassung.value != '') {
              var dateErstzulassung = getString2Date(document.kfzAntragForm.datumErstzulassung.value);

              // check, ob Versicherungsbeginn vor dem Zeitpunkt der Erstzulassung liegt
              if (dateErstzulassung.getTime() > dateVersBeginn.getTime()) {
                  // Hinweis 13
                  element_show(errIdH13);
                  div_set_error_class(divId);
                  // A.Claus: wird nicht mehr gewünscht
                  //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                  //cursorResetToVersicherungsBeginn = true;
                  // reset andere Fehler, falls sie gerade aktiv waren
  	              element_hide(errIdH02);
  	              element_hide(errIdH10);
                  element_hide(errIdH11);
  	              element_hide(errIdH22);
                  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                  if (document.getElementById(resetErrIdH13).style.display == 'block') {
                    // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                    element_hide(resetErrIdH13);
                    div_reset_error_class(divIdResetErstzulassung);
                  }
                  return false;
              }

              // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
              if (document.getElementById(resetErrIdH13).style.display == 'block') {
                // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                element_hide(resetErrIdH13);
                div_reset_error_class(divIdResetErstzulassung);
              }
          }

          div_reset_error_class(divId);
      }
      
      // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
      if (document.getElementById(resetErrIdH02).style.display == 'block') {
        // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
        element_hide(resetErrIdH02);
        if (!isStrutsErrorActive('datumAnschaffung', errorPropertyNames)) {
          div_reset_error_class(divIdResetErstzulassung);
        }
      }
      // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
      if (document.getElementById(resetErrIdH13).style.display == 'block') {
        // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
        element_hide(resetErrIdH13);
        if (!isStrutsErrorActive('datumErstzulassung', errorPropertyNames)) {
          div_reset_error_class(divIdResetErstzulassung);
        }
      }
      // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
      if (document.getElementById(resetErrIdH22).style.display == 'block') {
        // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
        element_hide(resetErrIdH22);
        if (!isStrutsErrorActive('datumAnschaffung', errorPropertyNames)) {
          div_reset_error_class(divIdResetErstzulassung);
        }
      }
      element_hide(errIdH02);
      element_hide(errIdH10);
      element_hide(errIdH11);
      element_hide(errIdH13);
      element_hide(errIdH22);
      if (!isStrutsErrorActive('datumVersicherungsbeginn', errorPropertyNames)) {
          div_reset_error_class(divId);
      }
      return true;
  }
  // Fehler wurde schon durch allgemeine Checkfunktion angezeigt
  // A.Claus: z. Zt. nicht mehr erforderlich
  //cursorResetToVersicherungsBeginn = true;
      
  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
  if (document.getElementById(resetErrIdH02).style.display == 'block') {
    // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
    element_hide(resetErrIdH02);
    if (!isStrutsErrorActive('datumAnschaffung', errorPropertyNames)) {
      div_reset_error_class(divIdResetErstzulassung);
    }
  }
  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
  if (document.getElementById(resetErrIdH13).style.display == 'block') {
    // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
    element_hide(resetErrIdH13);
    if (!isStrutsErrorActive('datumErstzulassung', errorPropertyNames)) {
      div_reset_error_class(divIdResetErstzulassung);
    }
  }
  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
  if (document.getElementById(resetErrIdH22).style.display == 'block') {
    // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
    element_hide(resetErrIdH22);
    if (!isStrutsErrorActive('datumAnschaffung', errorPropertyNames)) {
      div_reset_error_class(divIdResetErstzulassung);
    }
  }
  element_hide(errIdH02);
  element_hide(errIdH10);
  //element_hide(errIdH11);
  element_hide(errIdH13);
  element_hide(errIdH22);
  return false;
}

// returns true wenn unterjähriger Versicherungswechsel aktiv ist
function checkUnterjaehrigerVersicherungswechsel() {

  // wenn der Versicherungsbeginn fehlerhaft ist, soll diese Prüfung nicht durchgeführt werden
  // A.Claus: z. Zt. nicht mehr erforderlich
  //if (cursorResetToVersicherungsBeginn == true)
  //    return false;

  var datumVersicherungsbeginn = document.kfzAntragForm.datumVersicherungsbeginn;

  if (datumVersicherungsbeginn.value != '') {
      var dateVersBeginn = getString2Date(datumVersicherungsbeginn.value);

      if (document.kfzAntragForm.einstufungId.value == "U") {
        //var date0101Folgejahr = new Date('01', '00', getDatumHeute().getFullYear() + 1);
        var date0101Folgejahr = new Date(getDatumHeute().getFullYear() + 1, '00', '01');
        if (dateVersBeginn.getTime() != date0101Folgejahr.getTime()) {
            return true;
        }
      }
  }
  return false;
}


function checkDatumErstzulassung( fieldId, errIdH03, errIdHStart, errIdH17, errIdH13, errIdH01, resetErrIdH01, divIdResetAnschaffung, resetErrIdH13, divIdResetVersicherungsbeginn ) {

  // andernfalls kann hier eine Endlosschleife entstehen, da Datumsfelder voneinander abhängig sind
  // A.Claus: z. Zt. nicht mehr erforderlich
  //if (cursorResetToVersicherungsBeginn == true
  //    || cursorResetToAnschaffungsdatum == true)
  //    return;

  var divId = 'flexDivDatumErstzulassung';

  // A.Claus: z. Zt. nicht mehr erforderlich
  //cursorResetToErstzulassungsdatum = false;

  if (checkDatumsformat(fieldId, errIdH03, divId, errorPropertyNames)) {

      var datumErstzulassung = document.getElementById(fieldId);

      if (datumErstzulassung.value != '') {

          var dateHeute = getDatumHeute();
          var dateErstzulassung = getString2Date(datumErstzulassung.value);

          // check, ob Erstzulassungsdatum vor 1930 liegt
          if (dateErstzulassung.getFullYear() < 1930) {
              element_show(errIdHStart);
              div_set_error_class(divId);
              // A.Claus: wird nicht mehr gewünscht
              //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
              //cursorResetToErstzulassungsdatum = true;
              // reset andere Fehler, falls sie gerade aktiv waren
              element_hide(errIdH17);
              element_hide(errIdH13);
              element_hide(errIdH01);
              return false;
          }

          // check, ob Versichererwechsel gewünscht und Erstzulassungsdatum in der Zukunft liegt
          if (document.kfzAntragForm.einstufungId.value == "U" &&
              dateErstzulassung.getTime() > dateHeute.getTime()) {
              // Hinweis 17
              element_show(errIdH17);
              div_set_error_class(divId);
              // A.Claus: wird nicht mehr gewünscht
              //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
              //cursorResetToErstzulassungsdatum = true;
              // reset andere Fehler, falls sie gerade aktiv waren
              element_hide(errIdHStart);
              element_hide(errIdH13);
              element_hide(errIdH01);
              return false;
          }

          if (document.kfzAntragForm.datumVersicherungsbeginn.value != '') {
              var dateVersBeginn = getString2Date(document.kfzAntragForm.datumVersicherungsbeginn.value);

              // check, ob Versicherungsbeginn vor dem Zeitpunkt der Erstzulassung liegt
              if (dateErstzulassung.getTime() > dateVersBeginn.getTime()) {
                  // Hinweis 13
                  element_show(errIdH13);
                  div_set_error_class(divId);
                  // A.Claus: wird nicht mehr gewünscht
                  //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                  //cursorResetToErstzulassungsdatum = true;
                  // reset andere Fehler, falls sie gerade aktiv waren
                  element_hide(errIdHStart);
                  element_hide(errIdH17);
                  element_hide(errIdH01);
                  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                  if (document.getElementById(resetErrIdH13).style.display == 'block') {
                    // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                    element_hide(resetErrIdH13);
                    div_reset_error_class(divIdResetVersicherungsbeginn);
                  }
                  return false;
              }

              // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
              if (document.getElementById(resetErrIdH13).style.display == 'block') {
                // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                element_hide(resetErrIdH13);
                div_reset_error_class(divIdResetVersicherungsbeginn);
              }
          }

          if (document.kfzAntragForm.datumAnschaffung.value != '') {
              var dateAnschaffung = getString2Date(document.kfzAntragForm.datumAnschaffung.value);

              // check, ob Datum der Zulassung vor dem Zeitpunkt der Erstzulassung liegt
              if (dateAnschaffung.getTime() < dateErstzulassung.getTime()) {
                  // Hinweis 1
                  element_show(errIdH01);
                  div_set_error_class(divId);
                  // A.Claus: wird nicht mehr gewünscht
                  //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                  //cursorResetToAnschaffungsdatum = true;
                  // reset andere Fehler, falls sie gerade aktiv waren
                  element_hide(errIdHStart);
                  element_hide(errIdH13);
                  element_hide(errIdH17);
                  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                  if (document.getElementById(resetErrIdH01).style.display == 'block') {
                    // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                    element_hide(resetErrIdH01);
                    div_reset_error_class(divIdResetAnschaffung);
                  }
                  return false;
              }

              // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
              if (document.getElementById(resetErrIdH01).style.display == 'block') {
                // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                element_hide(resetErrIdH01);
                div_reset_error_class(divIdResetAnschaffung);
              }
          }

          div_reset_error_class(divId);
      }
      
      // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
      if (document.getElementById(resetErrIdH01).style.display == 'block') {
        // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
        element_hide(resetErrIdH01);
        if (!isStrutsErrorActive('datumAnschaffung', errorPropertyNames)) {
          div_reset_error_class(divIdResetAnschaffung);
        }
      }
      // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
      if (document.getElementById(resetErrIdH13).style.display == 'block') {
        // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
        element_hide(resetErrIdH13);
        if (!isStrutsErrorActive('datumVersicherungsbeginn', errorPropertyNames)) {
          div_reset_error_class(divIdResetVersicherungsbeginn);
        }
      }
      element_hide(errIdHStart);
      element_hide(errIdH17);
      element_hide(errIdH13);
      element_hide(errIdH01);
      if (!isStrutsErrorActive('datumErstzulassung', errorPropertyNames)) {
          div_reset_error_class(divId);
      }
      return true;
  }
  // Fehler wurde schon durch allgemeine Checkfunktion angezeigt
  // A.Claus: z. Zt. nicht mehr erforderlich
  //cursorResetToErstzulassungsdatum = true;
      
  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
  if (document.getElementById(resetErrIdH01).style.display == 'block') {
    // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
    element_hide(resetErrIdH01);
    if (!isStrutsErrorActive('datumAnschaffung', errorPropertyNames)) {
      div_reset_error_class(divIdResetAnschaffung);
    }
  }
  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
  if (document.getElementById(resetErrIdH13).style.display == 'block') {
    // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
    element_hide(resetErrIdH13);
    if (!isStrutsErrorActive('datumVersicherungsbeginn', errorPropertyNames)) {
      div_reset_error_class(divIdResetVersicherungsbeginn);
    }
  }
  element_hide(errIdHStart);
  element_hide(errIdH17);
  element_hide(errIdH13);
  element_hide(errIdH01);
  return false;
}

// Anschaffungsdatum = Zulassungsdatum (Text a. d. Oberfläche)
function checkDatumAnschaffung( fieldId, errIdH03, errIdH18, errIdH14, errIdH01, errIdH02, errIdH22, resetErrIdH01, divIdResetErstzulassung, resetErrIdH02, resetErrIdH22, divIdResetVersicherungsbeginn ) {

  // andernfalls kann hier eine Endlosschleife entstehen, da Datumsfelder voneinander abhängig sind
  // A.Claus: z. Zt. nicht mehr erforderlich
  //if (cursorResetToVersicherungsBeginn == true
  //    || cursorResetToErstzulassungsdatum == true)
  //    return;

  var divId = 'flexDivDatumAnschaffung';

  // A.Claus: z. Zt. nicht mehr erforderlich
  //cursorResetToAnschaffungsdatum = false;

  if (checkDatumsformat(fieldId, errIdH03, divId, errorPropertyNames)) {

      var datumAnschaffung = document.getElementById(fieldId);

      if (datumAnschaffung.value != '') {
          var dateHeute = getDatumHeute();
          var dateAnschaffung = getString2Date(datumAnschaffung.value);

          // prüfen, ob Auswahl erfolgt ist
          if (document.kfzAntragForm.einstufungId.value != "") {
            // check, ob Versichererwechsel gewünscht
            if (document.kfzAntragForm.einstufungId.value == "U") {
                // check, ob Zulassungsdatum in der Zukunft liegt
                if (dateAnschaffung.getTime() > dateHeute.getTime()) {
                    // Hinweis 18
                    element_show(errIdH18);
                    div_set_error_class(divId);
                    // A.Claus: wird nicht mehr gewünscht
                    //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                    //cursorResetToAnschaffungsdatum = true;
                    // reset andere Fehler, falls sie gerade aktiv waren
                    element_hide(errIdH14);
                    element_hide(errIdH01);
                    element_hide(errIdH02);
                    element_hide(errIdH22);
                    return false;
                }
            } else {  // kein Versichererwechsel
                // check, ob Zulassungsdatum in der Vergangenheit liegt
                if (dateAnschaffung.getTime() < dateHeute.getTime()) {
                    // Hinweis 14
                    element_show(errIdH14);
                    div_set_error_class(divId);
                    // A.Claus: wird nicht mehr gewünscht
                    //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                    //cursorResetToAnschaffungsdatum = true;
                    // reset andere Fehler, falls sie gerade aktiv waren
                    element_hide(errIdH18);
                    element_hide(errIdH01);
                    element_hide(errIdH02);
                    element_hide(errIdH22);
                    return false;
                }
            }
          }
          if (document.kfzAntragForm.datumErstzulassung.value != '') {
              var dateErstzulassung = getString2Date(document.kfzAntragForm.datumErstzulassung.value);

              // check, ob Datum der Zulassung vor dem Zeitpunkt der Erstzulassung liegt
              if (dateAnschaffung.getTime() < dateErstzulassung.getTime()) {
                  // Hinweis 1
                  element_show(errIdH01);
                  div_set_error_class(divId);
                  // A.Claus: wird nicht mehr gewünscht
                  //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                  //cursorResetToAnschaffungsdatum = true;
                  // reset andere Fehler, falls sie gerade aktiv waren
                  element_hide(errIdH18);
                  element_hide(errIdH14);
                  element_hide(errIdH02);
                  element_hide(errIdH22);
                  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                  if (document.getElementById(resetErrIdH01).style.display == 'block') {
                    // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                    element_hide(resetErrIdH01);
                    div_reset_error_class(divIdResetErstzulassung);
                  }
                  return false;
              }

              // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
              if (document.getElementById(resetErrIdH01).style.display == 'block') {
                // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                element_hide(resetErrIdH01);
                div_reset_error_class(divIdResetErstzulassung);
              }
          }
          if (document.kfzAntragForm.datumVersicherungsbeginn.value != '') {
              var dateVersBeginn = getString2Date(document.kfzAntragForm.datumVersicherungsbeginn.value);

              // check, ob Datum der Zulassung nach dem Versicherungsbeginn liegt
              if (dateAnschaffung.getTime() > dateVersBeginn.getTime()) {
                  // Hinweis 2
                  element_show(errIdH02);
                  div_set_error_class(divId);
                  // A.Claus: wird nicht mehr gewünscht
                  //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                  //cursorResetToAnschaffungsdatum = true;
                  // reset andere Fehler, falls sie gerade aktiv waren
                  element_hide(errIdH18);
                  element_hide(errIdH14);
                  element_hide(errIdH01);
                  element_hide(errIdH22);
                  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                  if (document.getElementById(resetErrIdH02).style.display == 'block') {
                    // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                    element_hide(resetErrIdH02);
                    div_reset_error_class(divIdResetVersicherungsbeginn);
                  }
                  return false;
              }

              // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
              if (document.getElementById(resetErrIdH02).style.display == 'block') {
                // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                element_hide(resetErrIdH02);
                div_reset_error_class(divIdResetVersicherungsbeginn);
              }

              // check, ob KEIN Versichererwechsel gewünscht
              if (document.kfzAntragForm.einstufungId.value != "U") {

                // check, ob Datum der Zulassung vor dem Versicherungsbeginn liegt
                if (dateAnschaffung.getTime() < dateVersBeginn.getTime()) {
                    // Hinweis 22
                    element_show(errIdH22);
                    div_set_error_class(divId);
                    // A.Claus: wird nicht mehr gewünscht
                    //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                    //cursorResetToAnschaffungsdatum = true;
                    // reset andere Fehler, falls sie gerade aktiv waren
                    element_hide(errIdH18);
                    element_hide(errIdH14);
                    element_hide(errIdH01);
                    element_hide(errIdH02);
                    // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                    if (document.getElementById(resetErrIdH22).style.display == 'block') {
                      // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                      element_hide(resetErrIdH22);
                      div_reset_error_class(divIdResetVersicherungsbeginn);
                    }
                    return false;
                }

                // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                if (document.getElementById(resetErrIdH22).style.display == 'block') {
                  // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                  element_hide(resetErrIdH22);
                  div_reset_error_class(divIdResetVersicherungsbeginn);
                }
              }
          }

          div_reset_error_class(divId);
      }
      
      // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
      if (document.getElementById(resetErrIdH01).style.display == 'block') {
        // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
        element_hide(resetErrIdH01);
        if (!isStrutsErrorActive('datumErstzulassung', errorPropertyNames)) {
          div_reset_error_class(divIdResetErstzulassung);
        }
      }
      // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
      if (document.getElementById(resetErrIdH02).style.display == 'block') {
        // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
        element_hide(resetErrIdH02);
        if (!isStrutsErrorActive('datumVersicherungsbeginn', errorPropertyNames)) {
          div_reset_error_class(divIdResetVersicherungsbeginn);
        }
      }
      // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
      if (document.getElementById(resetErrIdH22).style.display == 'block') {
        // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
        element_hide(resetErrIdH22);
        if (!isStrutsErrorActive('datumVersicherungsbeginn', errorPropertyNames)) {
          div_reset_error_class(divIdResetVersicherungsbeginn);
        }
      }
      element_hide(errIdH18);
      element_hide(errIdH14);
      element_hide(errIdH01);
      element_hide(errIdH02);
      element_hide(errIdH22);
      if (!isStrutsErrorActive('datumAnschaffung', errorPropertyNames)) {
          div_reset_error_class(divId);
      }
      return true;
  }
  // Fehler wurde schon durch allgemeine Checkfunktion angezeigt
  // A.Claus: z. Zt. nicht mehr erforderlich
  //cursorResetToAnschaffungsdatum = true;
  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
  if (document.getElementById(resetErrIdH01).style.display == 'block') {
    // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
    element_hide(resetErrIdH01);
    if (!isStrutsErrorActive('datumErstzulassung', errorPropertyNames)) {
      div_reset_error_class(divIdResetErstzulassung);
    }
  }
  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
  if (document.getElementById(resetErrIdH02).style.display == 'block') {
    // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
    element_hide(resetErrIdH02);
    if (!isStrutsErrorActive('datumVersicherungsbeginn', errorPropertyNames)) {
      div_reset_error_class(divIdResetVersicherungsbeginn);
    }
  }
  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
  if (document.getElementById(resetErrIdH22).style.display == 'block') {
    // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
    element_hide(resetErrIdH22);
    if (!isStrutsErrorActive('datumVersicherungsbeginn', errorPropertyNames)) {
      div_reset_error_class(divIdResetVersicherungsbeginn);
    }
  }
  element_hide(errIdH18);
  element_hide(errIdH14);
  element_hide(errIdH01);
  element_hide(errIdH02);
  element_hide(errIdH22);
  return false;
}

function checkFahrleistung( errId ) {

  var divId = 'flexDivFahrleistung';

  if (document.kfzAntragForm.fahrleistung.value != '') {
      if (document.kfzAntragForm.fahrleistung.value.replace(/\./g, '') < 1000) {
          // Hinweis 16
          element_show(errId);
          div_set_error_class(divId);
          // A.Claus: wird nicht mehr gewünscht
          //setTimeout("document.kfzAntragForm.fahrleistung.focus()",1);
          return false
      }
      div_reset_error_class(divId);
  } else {
      // erforderlich wenn:
      // Struts Fehler existiert, letzte JavaScript-Eingabe ok war und die Eingabe danach gelöscht wird
      // -> Error-Style muss wiederhergestellt werden
      if (isStrutsErrorActive('fahrleistung', errorPropertyNames)) {
        div_set_error_class(divId);
      }
  }
  element_hide(errId);
  if (!isStrutsErrorActive('fahrleistung', errorPropertyNames)) {
      div_reset_error_class(divId);
  }
  return true;
}

function checkGeburtsdatum( fieldId, errIdH03, errIdHAlter ) {

  var datumField = document.getElementById(fieldId);
  var divId = 'flexDiv' + datumField.name.substr(0, 1).toUpperCase() + datumField.name.substring(1);

  if (checkDatumsformat(fieldId, errIdH03, divId, errorPropertyNames)) {

      if (datumField.value != '') {

          if (document.kfzAntragForm.datumVersicherungsbeginn.value != '') {
              var geburtsdatum = getString2Date(datumField.value);
              var dateVersBeginn = getString2Date(document.kfzAntragForm.datumVersicherungsbeginn.value);
              var geburtsdatum16J = new Date(dateVersBeginn.getTime());
              var geburtsdatum99J = new Date(dateVersBeginn.getTime());

              geburtsdatum16J.setFullYear(dateVersBeginn.getFullYear() - 16);
              geburtsdatum99J.setFullYear(dateVersBeginn.getFullYear() - 99);
              // check, ob der Nutzer bei Vertragsbeginn zwischen 16 und 99 Jahren ist
              if (geburtsdatum99J.getTime() > geburtsdatum.getTime() ||
                  geburtsdatum16J.getTime() < geburtsdatum.getTime()) {
                  element_show(errIdHAlter);
                  div_set_error_class(divId);
                  // A.Claus: wird nicht mehr gewünscht
                  //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                  return false;
              }
          }

          div_reset_error_class(divId);
      }
      element_hide(errIdHAlter);
      if (!isStrutsErrorActive(datumField.name, errorPropertyNames)) {
          div_reset_error_class(divId);
      }
      return true;
  }
  // Fehler wurde schon durch allgemeine Checkfunktion angezeigt
  element_hide(errIdHAlter);
  return false;
  
  
}



function checkGeburtsdatumPlusCrossCheck( fieldId, fieldIdJuengsterNutzer, fieldIdAeltesterNutzer, errIdH03, errIdHAlter, errIdH19, resetErrIdH19 ) {

  var datumField = document.getElementById(fieldId);
  var datumFieldReset;
  var datumFieldJuengsterNutzer = document.getElementById(fieldIdJuengsterNutzer);
  var datumFieldAeltesterNutzer = document.getElementById(fieldIdAeltesterNutzer);
  var divId;
  var divIdReset;
  var divIdJuengster = 'flexDiv' + datumFieldJuengsterNutzer.name.substr(0, 1).toUpperCase() + datumFieldJuengsterNutzer.name.substring(1);
  var divIdAeltester = 'flexDiv' + datumFieldAeltesterNutzer.name.substr(0, 1).toUpperCase() + datumFieldAeltesterNutzer.name.substring(1);

  datumFieldReset = (fieldId == fieldIdJuengsterNutzer) ? datumFieldAeltesterNutzer : datumFieldJuengsterNutzer;
  divId = (fieldId == fieldIdJuengsterNutzer) ? divIdJuengster : divIdAeltester;
  divIdReset = (fieldId == fieldIdJuengsterNutzer) ? divIdAeltester : divIdJuengster;

  if (checkGeburtsdatum(fieldId, errIdH03, errIdHAlter)) {

      if (datumField.value != '') {

          if (datumFieldJuengsterNutzer.value != ''
              && datumFieldAeltesterNutzer.value != '') {
              var geburtsdatumAeltesterNutzer = getString2Date(datumFieldAeltesterNutzer.value);
              var geburtsdatumJuengsterNutzer = getString2Date(datumFieldJuengsterNutzer.value);

              // check, ob der jüngste Nutzer älter als der älteste ist ;-)
              if (geburtsdatumJuengsterNutzer.getTime() < geburtsdatumAeltesterNutzer.getTime()) {
                  element_show(errIdH19);
                  div_set_error_class(divId);
                  // A.Claus: wird nicht mehr gewünscht
                  //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                  if (document.getElementById(resetErrIdH19).style.display == 'block') {
                    // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                    element_hide(resetErrIdH19);
                    div_reset_error_class(divIdReset);
                  }
                  return false;
              }

              // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
              if (document.getElementById(resetErrIdH19).style.display == 'block') {
                element_hide(resetErrIdH19);
                div_reset_error_class(divIdReset);
              }
          }

          div_reset_error_class(divId);
      } else {
          // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
          if (document.getElementById(resetErrIdH19).style.display == 'block') {
            element_hide(resetErrIdH19);
            if (!isStrutsErrorActive(datumFieldReset.name, errorPropertyNames)) {
              div_reset_error_class(divIdReset);
            }
          }
      }
      element_hide(errIdH19);
      if (!isStrutsErrorActive(datumField.name, errorPropertyNames)) {
          div_reset_error_class(divId);
      }
      return true;
  }
  // Fehler wurde schon durch checkGeburtsdatum-Funktion angezeigt
  element_hide(errIdH19);
  return false;
}


function checkAlter( fieldId, errIdHAlter ) {

  var alterField = document.getElementById(fieldId);
  var divId = 'flexDiv' + alterField.name.substr(0, 1).toUpperCase() + alterField.name.substring(1);

  if (alterField.value != '') {

    var alter = alterField.value;

    // check, ob der Nutzer bei Vertragsbeginn zwischen 16 und 99 Jahren ist
    if (alter < 16 || alter > 99) {
	  element_show(errIdHAlter);
	  div_set_error_class(divId);
	  // A.Claus: wird nicht mehr gewünscht
	  //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
	  return false;
    }
    div_reset_error_class(divId);
  }
  element_hide(errIdHAlter);
  if (!isStrutsErrorActive(alterField.name, errorPropertyNames)) {
      div_reset_error_class(divId);
  }
  return true;
}


function checkAlterPlusCrossCheck( fieldId, fieldIdJuengsterNutzer, fieldIdAeltesterNutzer, errIdHAlter, errIdH19, resetErrIdH19 ) {
  var alterField = document.getElementById(fieldId);
  var alterFieldReset;
  var alterFieldJuengsterNutzer = document.getElementById(fieldIdJuengsterNutzer);
  var alterFieldAeltesterNutzer = document.getElementById(fieldIdAeltesterNutzer);
  var divId;
  var divIdReset;
  var divIdJuengster = 'flexDiv' + alterFieldJuengsterNutzer.name.substr(0, 1).toUpperCase() + alterFieldJuengsterNutzer.name.substring(1);
  var divIdAeltester = 'flexDiv' + alterFieldAeltesterNutzer.name.substr(0, 1).toUpperCase() + alterFieldAeltesterNutzer.name.substring(1);

  alterFieldReset = (fieldId == fieldIdJuengsterNutzer) ? alterFieldAeltesterNutzer : alterFieldJuengsterNutzer;
  divId = (fieldId == fieldIdJuengsterNutzer) ? divIdJuengster : divIdAeltester;
  divIdReset = (fieldId == fieldIdJuengsterNutzer) ? divIdAeltester : divIdJuengster;

  if (checkAlter(fieldId, errIdHAlter)) {

      if (alterField.value != '') {

          if (alterFieldJuengsterNutzer.value != ''
              && alterFieldAeltesterNutzer.value != '') {
              var alterAeltesterNutzer = alterFieldAeltesterNutzer.value;
              var alterJuengsterNutzer = alterFieldJuengsterNutzer.value;

              // check, ob der jüngste Nutzer älter als der älteste ist ;-)
              if (alterJuengsterNutzer > alterAeltesterNutzer) {
                  element_show(errIdH19);
                  div_set_error_class(divId);
                  // A.Claus: wird nicht mehr gewünscht
                  //setTimeout("document.getElementById(\"" + fieldId + "\").focus()",1);
                  // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
                  if (document.getElementById(resetErrIdH19).style.display == 'block') {
                    // gleiche Fehlermeldung ist bereits beim Cross-Check-Feld aktiv -> zurücksetzen
                    element_hide(resetErrIdH19);
                    div_reset_error_class(divIdReset);
                  }
                  return false;
              }

              // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
              if (document.getElementById(resetErrIdH19).style.display == 'block') {
                element_hide(resetErrIdH19);
                div_reset_error_class(divIdReset);
              }
          }

          div_reset_error_class(divId);
      } else {
          // reset evtl. bereits gesetzten Fehler zum Cross-Check-Feld
          if (document.getElementById(resetErrIdH19).style.display == 'block') {
            element_hide(resetErrIdH19);
            if (!isStrutsErrorActive(alterFieldReset.name, errorPropertyNames)) {
              div_reset_error_class(divIdReset);
            }
          }
      }
      element_hide(errIdH19);
      if (!isStrutsErrorActive(alterField.name, errorPropertyNames)) {
          div_reset_error_class(divId);
      }
      return true;
  }
  // Fehler wurde schon durch checkAlter-Funktion angezeigt
  element_hide(errIdH19);
  return false;
}


function checkRV24FahrzeugwechselImAntragAktiv() {
    return (document.kfzAntragForm.aufrufer.value != '2'
            && document.kfzAntragForm.einstufungId.value == 'FW24') ? true : false;
}

function focusFirstFormFieldIfNecessary() {

  if (tabKeyPressed) {
    tabKeyPressed = false;
    focusFirstFormField("kfzAntragForm");
  }
}


// =================================================================================================
// Fahrzeugsuche
// =================================================================================================

function initFahrzeugsuche() {

  document.kfzFahrzeugsucheForm.hersteller.onkeydown = setTabKeyPressed;
  document.kfzFahrzeugsucheForm.fahrzeugBezeichnung.onkeydown = setTabKeyPressed;
  document.kfzFahrzeugsucheForm.baujahr.onkeydown = setTabKeyPressed;

  fillBaujahr();
  switchFieldsHersteller('false');
  $("#fahrzeugsucheergebnis").hide();
  $("#flexBtnUebernehmen").hide();
  $("#flexBtnUebernehmen2").hide();

   $("#flexErrLeistungH01").hide();
  div_reset_error_class('flexDivLeistung');

  $("#flexErrFahrzeugAuswahl").hide();
}

var herstellerGeladen = false;

function fstrim (zeichenkette) {
// Erst führende, dann Abschließende Whitespaces entfernen
// und das Ergebnis dieser Operationen zurückliefern
return zeichenkette.replace (/^\s+/, '').replace (/\s+$/, '');
}

function switchFieldsHersteller( initFields ) {

	// siehe http://www.texotela.co.uk/code/jquery/select/
	if(herstellerGeladen == false) {
		$.getJSON("/direkt/ajax/FahrzeugSuche?f=1&versicherungsBeginn=" + $("novMVersicherungsbeginn").val(),
        	function(data){
			var ot = "";
			var options = '<option value="">bitte wählen</option>';
        		for (var i = 0; i < data.length; i++) {
				ot = data[i][1]; ot = fstrim(ot); ot = ot.toLowerCase();
				if (ot != "alpine (f)"
					&& ot != "alfa lancia (i)" && ot != "alfaromeo alfasud (i)"
					&& ot != "automobilwerk eisenach" && ot != "azlk moskau (su)" && ot != "aro (r)" && ot != "autobianchi (i)" && ot != "bedford (gb)"
					&& ot != "bertone (i)" && ot != "borgward" && ot != "cami (cdn)" && ot != "daimlerchrysler"
					&& ot != "daf (nl)" && ot != "daimler ag" && ot != "envemo" && ot != "fsm (pl)" && ot != "fuji heavy (j)"
					&& ot != "glas" && ot != "hanomag" && ot != "ibc vehicles (gb)"	&& ot != "innocenti (i)"
					&& ot != "intreprinderea (r)" && ot != "iveco" && ot != "kunststoff" && ot != "lamborghini"
					&& ot != "ldv (gb)" && ot != "leyland (gb)" && ot != "lloyd" && ot != "maserati (i)"
					&& ot != "micro compact (ch)" && ot != "morgan (gb)" && ot != "morris (gb)"
					&& ot != "netherlands car" && ot != "pininfarina (i)" && ot != "sachsenring kraftfahrzeugwerk"
					&& ot != "santana (e)" && ot != "tata (ind)" && ot != "toyo kogyo (j)" && ot != "uap (r)"
					&& ot != "uzina mecanica (r)" && ot != "vauxhall, bedford (gb)"	&& ot != "vidal + sohn"
					&& ot != "yugo"	&& ot != "zastava (yu)") {
					options = options + '<option value="' + data[i][0] + '">' + data[i][1] + '</option>';
				}
			}
        		$("#cmbMHerstellerPkw").html(options);
        	});
        herstellerGeladen = true;
	 }

  if (document.kfzFahrzeugsucheForm.hersteller.value == '') {
      // kein Hersteller ausgewählt
      document.kfzFahrzeugsucheForm.fahrzeugBezeichnung.selectedIndex = -1;
	  $("#flexFahrzeugBezeichnung").hide();
      $("#i_modellbezeichnung").hide();
	  if (manualOverride) {
			$('#cmbMHerstellerPkw > option').each( function(index,el) {
				if( $(el).text().toLowerCase() == customHsn.toLowerCase()) {
					document.kfzFahrzeugsucheForm.hersteller.value = el.value;
					$("#flexFahrzeugBezeichnung").show();
					$("#i_modellbezeichnung").show();
					fillFahrzeugBezeichnung();
					document.kfzFahrzeugsucheForm.herstellerAktuell.value = document.kfzFahrzeugsucheForm.hersteller.value;
					return false;
				}
			});
		}
      
  } else {
      // Hersteller ist ausgewählt
      var hersteller = document.kfzFahrzeugsucheForm.hersteller;
      var herstellerAktuell = document.kfzFahrzeugsucheForm.herstellerAktuell;

      $("#flexFahrzeugBezeichnung").show();
      $("#i_modellbezeichnung").show();
      if (hersteller.value != herstellerAktuell.value) {
          // Hersteller hat gewechselt, Neuauswahl ist erforderlich
          // TODO ACLA: Laden erfolgt derzeit 2x (bei onKeyUp und bei OnClick)
          fillFahrzeugBezeichnung();
          document.kfzFahrzeugsucheForm.herstellerAktuell.value = document.kfzFahrzeugsucheForm.hersteller.value;

          // eventuell vorhandene Suchergebnisse stimmen nicht mehr; sie müssen verschwinden
          $("#fahrzeugsucheergebnis").hide();
	        $("#flexBtnUebernehmen").hide();
	        $("#flexBtnUebernehmen2").hide();
      }
  }

  switchFieldsFahrzeugBezeichnung( initFields );
}

function switchFieldsFahrzeugBezeichnung( initFields ) {

  if (document.kfzFahrzeugsucheForm.fahrzeugBezeichnung.value == '') {
      // keine Fahrzeugbezeichnung ausgewählt
      document.kfzFahrzeugsucheForm.leistungsTyp.selectedIndex = 0;
      document.kfzFahrzeugsucheForm.leistungVon.value = '';
      document.kfzFahrzeugsucheForm.leistungBis.value = '';
      document.kfzFahrzeugsucheForm.baujahr.selectedIndex = 0;

       $("#flexLeistungBaujahr").hide();
       $("#flexBtnSuchen").hide();
  } else {
      // Fahrzeugbezeichnung ist ausgewählt
      var fahrzeugBezeichnung = document.kfzFahrzeugsucheForm.fahrzeugBezeichnung;
      var fahrzeugBezeichnungAktuell = document.kfzFahrzeugsucheForm.fahrzeugBezeichnungAktuell;

      $("#flexLeistungBaujahr").show();
      $("#flexBtnSuchen").show();

      if (fahrzeugBezeichnung.value != fahrzeugBezeichnungAktuell.value) {
          // Fahrzeugbezeichnung hat gewechselt, eventuell vorhandene Suchergebnisse stimmen nicht mehr
          $("#fahrzeugsucheergebnis").hide();
          $("#flexBtnUebernehmen").hide();
          $("#flexBtnUebernehmen2").hide();
          document.kfzFahrzeugsucheForm.fahrzeugBezeichnungAktuell.value = document.kfzFahrzeugsucheForm.fahrzeugBezeichnung.value;
      }
  }
  $('._fahrzeugsuche .HideSelect').css({'height':'58em'});
}

function klickFahrzeugeSuchen( errIdH01 ) {
	var versicherungsBeginn = $("novMVersicherungsbeginn").val();
	var hersteller = $("#cmbMHerstellerPkw").val();
	var modell = $("#cmbMModellbezeichnung").val();
	var baujahr = $("#cmbMBaujahr").val();
	var leistung_typ = $("#cmbMLeistung").val();
	var leistung_von = $("#novMLeistung_von").val();
	var leistung_bis = $("#novMLeistung_bis").val();

	if (checkLeistung( errIdH01 ) == false) {
	    // ungültige Spanne bei der Leistung; Fehlerhandling bereits erfolgt
      return;
  }

	$("#btn_suchen").attr("disabled", "true");
	//Suchergebnis zurücksetzen
	$("#fahrzeug_tabelle_body").empty();
	$("#flexAnzahlTreffer").text('...');
    	$.getJSON("/direkt/ajax/FahrzeugSuche", { f: "3", hersteller: hersteller, modell: modell, baujahr: baujahr,
    	leistung_typ: leistung_typ, leistung_von: leistung_von, leistung_bis: leistung_bis,
      versicherungsBeginn: versicherungsBeginn},
         function(data){
		var size = data.length;
		$("#btn_suchen").removeAttr("disabled");
	 	$("#flexAnzahlTreffer").text(size);
		$("#fahrzeugsucheergebnis").show();
          		$.each(data, function(i, val){
				var baujahrx = val.baujahr;
				if (baujahrx.indexOf("-") == -1) {
					baujahrx = "ab " + baujahrx;
				}
				var _class = i % 2 ? "" : "class='even'";
        var lastElement = (size == i + 1) ? true : false;
        var onblurFkt = "focusFirstFahrzeugsucheFormFieldIfNecessary(this, " + i + ", " + lastElement + ");";
				$("<tr " + _class + ">")
				.append("<td class='modell'><div class='radio'><input type='radio' class='radio' tabindex='200' name='ausgewaehltesFahrzeug' id='optKModell_Feld" + i +"' value='" + val.hsn + val.tsn + val.modellezeichnung + "' onblur='" + onblurFkt + "' /><label for='optKModell_Feld" + i +"' id='zeilemodell" + i +"' class='radio'>" + val.modellezeichnung)
				.append("</label></div></td>")
				.append("<td class='ps'>" + val.leistungps + "</td>")
				.append("<td class='kw' id='zeilekw" + i +"'>" + val.leistungkw + "</td>")
				.append("<td class='baujahr'>" + baujahrx + "</td>")
				.append("<td class='hsn' id='zeilehsn" + i +"'>" + val.hsn + "</td>")
				.append("<td class='tsn' id='zeiletsn" + i +"'>" + val.tsn + "</td>")
				.append("<td class='hubraum last'>" + val.hubraum + "</td>")
			      /* wird z. Zt. nicht benötigt
					.append("<td class='typklasseKH'>" + val.typklasseKH + "</td>")
					.append("<td class='typklasseFV'>" + val.typklasseFV + "</td>")
					.append("<td class='typklasseFT'>" + val.typklasseFT + "</td>")
					.append("<td class='fahrzeugHoeherwertig'>" + val.fahrzeugHoeherwertig + "</td>")
				*/
				.append("</tr>")
				.appendTo("#fahrzeug_tabelle_body");
			});
		if (size > 0) {
			$("#flexBtnUebernehmen").show();
			$("#flexBtnUebernehmen2").show();		  
		  for (var j = 0; j < size; j++) {
		    document.kfzFahrzeugsucheForm.ausgewaehltesFahrzeug[j].onkeydown = setTabKeyPressed;
		  }
		  // es soll kein Eintrag vorausgewählt sein
			// $("#optKModell_Feld0").attr("checked","true");
			
		} else {
			$("<tr><td colspan='7'>" + "Die Suchanfrage ergab keine Treffer" + "</td></tr>").appendTo("#fahrzeug_tabelle_body");
		$("#flexBtnUebernehmen").hide();
	        $("#flexBtnUebernehmen2").hide();
		}
          });
    $('._fahrzeugsuche .HideSelect').css({'height':'58em'});
}

function klickHsnTsnUebernehmen() {

    var fahrzeugAuswahl = document.kfzFahrzeugsucheForm.ausgewaehltesFahrzeug;
    var fahrzeugHsnTsn;
    var fahrzeugAusgewaehlt = false;
    var index;
	manualOverride = false;
    if (typeof(fahrzeugAuswahl.length) == 'undefined') {
        // nur ein Element gefunden
        fahrzeugHsnTsn = fahrzeugAuswahl.value;
        fahrzeugAusgewaehlt = true;
        index = 0;
    } else {
        // Liste von Elementen gefunden
        for (var i = 0; i < fahrzeugAuswahl.length; i++) {
            if (fahrzeugAuswahl[i].checked == true) {
                fahrzeugHsnTsn = fahrzeugAuswahl[i].value;
                fahrzeugAusgewaehlt = true;
    	          index = i;
                break;
            }
        }
    }
    if (fahrzeugAusgewaehlt == true) {

	      document.kfzAntragForm.hsn.value = $("#zeilehsn"+index).text();
        document.kfzAntragForm.tsn.value = $("#zeiletsn"+index).text();
	      var text = $("#zeilemodell"+index).text() + ", " + $("#zeilekw"+index).text() + " KW";
	      document.kfzAntragForm.ausgewaehltesFahrzeug.value = text;
      	$("#flexAusgewaehltesFahrzeug").text(text);
      	element_hide("fahrzeugsuche");
      	element_show("fahrzeugergebnis");

        // hide Dialog Fahrzeugsuche
        hideForm('_fahrzeugsuche');
        $("#datMZulassung_auf_mich").focus();
    } else {
        // kein Fahrzeug ausgewählt
        $("#flexErrFahrzeugAuswahl").show();
    }
}

function fillFahrzeugBezeichnung() {

    // immer vorab löschen; erstes Element bleibt stehen
    document.kfzFahrzeugsucheForm.fahrzeugBezeichnung.options.length = 1;

    // http://www.texotela.co.uk/code/jquery/
	if(manualOverride) {
		$("#cmbMModellbezeichnung").ajaxAddOption("/direkt/ajax/FahrzeugSuche?f=2&hersteller=" + $("#cmbMHerstellerPkw").val() + "&versicherungsBeginn=" + $("novMVersicherungsbeginn").val(), "", false,modellCompletionHandler);
    }else {
		$("#cmbMModellbezeichnung").ajaxAddOption("/direkt/ajax/FahrzeugSuche?f=2&hersteller=" + $("#cmbMHerstellerPkw").val() + "&versicherungsBeginn=" + $("novMVersicherungsbeginn").val(), "", false);
	}
}

function modellCompletionHandler(el) {
	if (customTsn) {
		$("#cmbMModellbezeichnung > option").each( function(index,el) {
			if ($(el).text().toLowerCase() == customTsn.toLowerCase()) {
				document.kfzFahrzeugsucheForm.fahrzeugBezeichnung.value = el.value;
				switchFieldsFahrzeugBezeichnung(true);
				return false;
			}
		});
	}
}

function fillBaujahr() {

    var now = new Date();
		var currentYear = now.getFullYear();

		var year = null;
		var counter = 1;  // muss mit 1 starten, erstes Element ist "alle"
    var baujahrSelectBox = document.kfzFahrzeugsucheForm.baujahr;

    // immer mit erstem Element (alle) starten
    baujahrSelectBox.options.length = 1;
		for (var i = 1985; i < currentYear + 1; i++, counter++) {
      neuesBaujahr = new Option(i, i, false, false);
      baujahrSelectBox[baujahrSelectBox.length] = neuesBaujahr;
		}
		baujahrSelectBox.selectedIndex = 0;
}

// Prüft, ob die Spanne bei der Leistung korrekt ist
function checkLeistung( errIdH01 ) {

    var divId = 'flexDivLeistung';

    if (document.kfzFahrzeugsucheForm.leistungVon.value != '' &&
        document.kfzFahrzeugsucheForm.leistungBis.value != '' &&
        parseInt(document.kfzFahrzeugsucheForm.leistungVon.value) >
        parseInt(document.kfzFahrzeugsucheForm.leistungBis.value)) {

        element_show(errIdH01);
        div_set_error_class(divId);
        return false;
    }

    element_hide(errIdH01);
    div_reset_error_class(divId);
    return true;
}

// setzt den Focus auf das erste Feld der Fahrzeugsuche, sofern Tab gedrückt wurde; in Abhängigkeit zur Sichtbarkeit der Felder
function focusFirstFahrzeugsucheFormFieldIfNecessary( field, idx, last ) {

  var setFocus = false;

  if (tabKeyPressed) {
    tabKeyPressed = false;

    if (typeof(idx) == 'undefined') {

      // Behandlung beim Einstieg über Feld "Hersteller"
      if (field.name == 'hersteller') {
        if (document.getElementById('flexFahrzeugBezeichnung').style.display == 'none') {
          setFocus = true;
        }
      }
      // Behandlung beim Einstieg über Feld "Fahrzeugbezeichnung"
      if (field.name == 'fahrzeugBezeichnung') {
        if (document.getElementById('flexLeistungBaujahr').style.display == 'none') {
          setFocus = true;
        }
      }
      // Behandlung beim Einstieg über Feld "Baujahr"
      if (field.name == 'baujahr') {
        if (document.getElementById('flexBtnUebernehmen').style.display == 'none') {
          setFocus = true;
        }
      }
    } else {

      // Behandlung beim Einstieg über ein Feld der Suchtreffer-Liste
      if (field.name == 'ausgewaehltesFahrzeug') {
        if (!ie) {
          // Firefox springt nur aus der Liste, wenn Radio selektiert ist oder letztes Element
          if (field.checked || last) {
            setFocus = true;
          }
        } else {
          // IE springt bei Tab grundsätzlich aus der Liste raus
          setFocus = true;
        }
      }
    }

    if (setFocus) {
      $("#cmbMHerstellerPkw").focus();
    }
  }
}

// setzt den Focus auf das Feld 'Ich möchte' oder 'HSN' der Fahrzeugdaten-Form
function focusFahrzeugdatenFormAfterFahrzeugsuche() {
  var hsn = document.kfzAntragForm.hsn.value;
  var tsn = document.kfzAntragForm.tsn.value;

  if (hsn != '' && hsn.length == 4 &&
      tsn != '' && tsn.length == 3) {
      $("#datMZulassung_auf_mich").focus();
  } else {  // HSN/TSN sind noch nicht vollständig eingegeben
      document.getElementById('novMHersteller-Nr._HSN').focus();
  }
}


// =================================================================================================
// Herstellersuche
// =================================================================================================

var herstellerKradGeladen = false;

function initHerstellersuche() {

  document.kfzHerstellersucheForm.hersteller.onkeydown = setTabKeyPressed;
  document.kfzHerstellersucheForm.hersteller.onblur = focusFirstHerstellersucheFormFieldIfNecessary;

	// siehe http://www.texotela.co.uk/code/jquery/select/
	if(herstellerKradGeladen == false) {
		  herstellerKradGeladen = true;
    	$("#cmbMHerstellerKrad").ajaxAddOption("/direkt/ajax/FahrzeugSuche?f=5&versicherungsBeginn=" + $("novMVersicherungsbeginn").val(), "", false);
	}

  element_hide('flexErrHerstellerAuswahl');
}

function klickHerstellerUebernehmen() {

    var herstellerHSN = document.kfzHerstellersucheForm.hersteller.value;

    if (herstellerHSN != '') {
        var selectedIndex = document.kfzHerstellersucheForm.hersteller.selectedIndex;
        var herstellerName = document.kfzHerstellersucheForm.hersteller[selectedIndex].text;

        document.kfzAntragForm.hsn.value = herstellerHSN;
        document.kfzAntragForm.tsn.value = '';

        document.kfzAntragForm.ausgewaehlterHerstellerName.value = herstellerName;

        document.getElementById('flexFahrzeugHerstellerName').innerHTML =
        document.kfzAntragForm.ausgewaehlterHerstellerName.value;

        element_hide('herstellersuche');
        element_show('herstellerergebnis');

       // hide Dialog Herstellersuche
        hideForm('_herstellersuche');
        focusFahrzeugdatenFormAfterHerstellersuche();
    } else {
        // kein Hersteller ausgewählt
        element_show('flexErrHerstellerAuswahl');
    }
}

// setzt den Focus auf das erste Feld der Herstellersuche, sofern Tab gedrückt wurde
function focusFirstHerstellersucheFormFieldIfNecessary() {

  if (tabKeyPressed) {
    tabKeyPressed = false;
    $("#cmbMHerstellerKrad").focus();
  }
}

// setzt den Focus auf das Feld leistungPS der Fahrzeugdaten-Form
function focusFahrzeugdatenFormAfterHerstellersuche() {
  $("#novMLeistungPS").focus();
}


// =================================================================================================
// Auswahl Fahrzeugschein
// =================================================================================================

function initFahrzeugschein() {

  document.kfzFahrzeugscheinForm.fahrzeugschein_alt_erstzulassung.onkeydown = setTabKeyPressed;
  document.kfzFahrzeugscheinForm.fahrzeugschein_alt_erstzulassung.onblur = focusFirstFahrzeugscheinFormFieldIfNecessary;
  document.kfzFahrzeugscheinForm.fahrzeugschein_neu_erstzulassung.onkeydown = setTabKeyPressed;
  document.kfzFahrzeugscheinForm.fahrzeugschein_neu_erstzulassung.onblur = focusFirstFahrzeugscheinFormFieldIfNecessary;
  $("#errors_fahrzeugschein_auswahl").hide();
}

//zeige alten oder neuen Fahrzeuschein
function klickShowFahrzeugschein() {
	var fahrzeugscheinAltOderNeu = $('input:radio[name=zulassung_type]:checked').val();
	if (fahrzeugscheinAltOderNeu != undefined) {
		$("#errors_fahrzeugschein_auswahl").hide();
		switchStepFahrzeugscheinPanel(fahrzeugscheinAltOderNeu);
	} else {
		$("#errors_fahrzeugschein_auswahl").show();
	}	
}

function klickFahrzeugscheinDatenUebernehmen(fahrzeugscheinAltOderNeu) {

	var plz = $("#fahrzeugschein_" + fahrzeugscheinAltOderNeu + "_plz").val();
  var datumAnschaffung = $("#fahrzeugschein_" + fahrzeugscheinAltOderNeu + "_zulassungsdatum").val();	
  var hsn = $("#fahrzeugschein_" + fahrzeugscheinAltOderNeu + "_hsn").val().substr(0, 4);
  var tsn = $("#fahrzeugschein_" + fahrzeugscheinAltOderNeu + "_tsn").val().substr(0, 3);
  var datumErstzulassung = $("#fahrzeugschein_" + fahrzeugscheinAltOderNeu + "_erstzulassung").val();

  // Fahrzeugdaten-Eingabefelder nur überschreiben, wenn das Feld im Fahrzeugschein gefüllt ist
  if (plz.length > 0) {
	 document.kfzAntragForm.plz.value = plz;
	}
  if (datumAnschaffung.length > 0) {
    document.kfzAntragForm.datumAnschaffung.value = datumAnschaffung;	
	}
  if (hsn.length > 0) {
    document.kfzAntragForm.hsn.value = hsn;
	}
  if (tsn.length > 0) {
    document.kfzAntragForm.tsn.value = tsn;
	}
  if (datumErstzulassung.length > 0) {
    document.kfzAntragForm.datumErstzulassung.value = datumErstzulassung;
	}

  // Eingaben plausibilisieren, ggf. Fahrzeug suchen / erneut anzeigen
  checkHsn( 'flexErrTsnH05' );
  checkTsn( 'flexErrTsnH05', 'flexErrTsnH12' );
  if (document.kfzAntragForm.flexErrTsnH05Style.value == 'display:block;'
      || document.kfzAntragForm.flexErrTsnH12Style.value == 'display:block;') {
      // Sicherstellen, dass HSN und TSN angezeigt werden
      klickHsnTsnDirekteingabe(true);
  }
  
  // Eingaben plausibilisieren
  checkDatumAnschaffung('datMZulassung_auf_mich', 'flexErrDatumAnschaffungH03', 'flexErrDatumAnschaffungH18', 'flexErrDatumAnschaffungH14', 'flexErrDatumAnschaffungH01', 'flexErrDatumAnschaffungH02', 'flexErrDatumAnschaffungH22', 'flexErrDatumErstzulassungH01', 'flexDivDatumErstzulassung', 'flexErrDatumVersicherungsbeginnH02', 'flexErrDatumVersicherungsbeginnH22', 'flexDivDatumVersicherungsbeginn');
  checkDatumErstzulassung('datMErstzulassung', 'flexErrDatumErstzulassungH03', 'flexErrDatumErstzulassungHStart', 'flexErrDatumErstzulassungH17', 'flexErrDatumErstzulassungH13', 'flexErrDatumErstzulassungH01', 'flexErrDatumAnschaffungH01', 'flexDivDatumAnschaffung', 'flexErrDatumVersicherungsbeginnH13', 'flexDivDatumVersicherungsbeginn');  

  if (isNeuerTarif()) {
      switchContentFieldsPlz( true );
  }

	hideForm('_fahrzeugschein');
  focusFahrzeugdatenFormAfterFahrzeugschein();
}

// setzt den Focus auf das erste Feld der Fahrzeugschein-Auswahl, sofern Tab gedrückt wurde
function focusFirstFahrzeugscheinFormFieldIfNecessary() {

  // ... und für die Erstzulassung die Anpasung des Datums nicht vergessen.
  setDateSepCharAndExpandDate(this);
  
  if (tabKeyPressed) {
    tabKeyPressed = false;
    var fahrzeugscheinAltOderNeu = $('input:radio[name=zulassung_type]:checked').val();
    switchKfzscheinInputfield($("#fahrzeugschein_" + fahrzeugscheinAltOderNeu + "_plz_gif"));
  }
}

// setzt den Focus auf das Feld Versicherungsbeginn der Fahrzeugdaten-Form
function focusFahrzeugdatenFormAfterFahrzeugschein() {

	var plz = document.kfzAntragForm.plz.value;
  var zulassungsdatum = document.kfzAntragForm.datumAnschaffung.value;	
  var hsn = document.kfzAntragForm.hsn.value;
  var tsn = document.kfzAntragForm.tsn.value;
  var erstzulassung = document.kfzAntragForm.datumErstzulassung.value;	

  if (hsn != '' && hsn.length == 4 &&
      tsn != '' && tsn.length == 3) {
      if (zulassungsdatum != '' && zulassungsdatum.length == 10) {
        if (erstzulassung != '' && erstzulassung.length == 10) {
          if (isNeuerTarif()) {
            if (plz != '' && plz.length == 5) {
              $("#novMVersicherungsbeginn").focus();
            } else {    // Postleitzahl ist noch nicht vollständig eingegeben
              $("#plzMPostleizahl").focus();
            }
          } else {  // alter Tarif ist aktiv
            $("#novMMein_Kennzeichen_Feld1").focus();
          }
        } else {  // Erstzulassungsdatum ist noch nicht vollständig eingegeben
          $("#datMErstzulassung").focus();
        }
      } else {  // Zulassungsdatum ist noch nicht vollständig eingegeben
        $("#datMZulassung_auf_mich").focus();
      }
      
  } else {  // HSN/TSN sind noch nicht vollständig eingegeben
      if (document.getElementById('flexHsnTsnDirekteingabe').style.display != 'none') {
        document.getElementById('novMHersteller-Nr._HSN').focus();
      } else {
        $("#datMZulassung_auf_mich").focus();
      }
  }
}

//Zeige das gewählte Panel im Fahrzeugschein-Overlay
function switchStepFahrzeugscheinPanel(panel) {
	$("#overlay-fahrzeugschein .fahrzeugschein_panel").hide();
	if (panel == 'overview') $("#overlay-fahrzeugschein_step1").show();
	if (panel == 'neu') {
    $("#overlay-fahrzeugschein_step2_new").show();
    switchKfzscheinInputfield($("#fahrzeugschein_neu_zulassungsdatum_gif"));
    switchKfzscheinInputfield($("#fahrzeugschein_neu_hsn_gif"));
    switchKfzscheinInputfield($("#fahrzeugschein_neu_tsn_gif"));
    switchKfzscheinInputfield($("#fahrzeugschein_neu_erstzulassung_gif"));
    switchKfzscheinInputfield($("#fahrzeugschein_neu_plz_gif"));
  }
	if (panel == 'alt') {
    $("#overlay-fahrzeugschein_step3_old").show();
    switchKfzscheinInputfield($("#fahrzeugschein_alt_zulassungsdatum_gif"));
    switchKfzscheinInputfield($("#fahrzeugschein_alt_hsn_gif"));
    switchKfzscheinInputfield($("#fahrzeugschein_alt_tsn_gif"));
    switchKfzscheinInputfield($("#fahrzeugschein_alt_erstzulassung_gif"));
    switchKfzscheinInputfield($("#fahrzeugschein_alt_plz_gif"));
  }
	
	$("#overlay-fahrzeugschein h2.h_overlay-fahrzeugschein").hide();
	if (panel == 'overview') $("#h_overlay-fahrzeugschein_overview").show();
	if (panel == 'neu') $("#h_overlay-fahrzeugschein_new").show();
	if (panel == 'alt') $("#h_overlay-fahrzeugschein_old").show();
}

// setzt den Focus auf das angeklickte Eingabefeld im Fahrzeugschein
function switchKfzscheinInputfield(el) {
	$(el).hide();
	$(el).next().show().focus();
}


// kopiert den Inhalt der Fahrzeugschein-Felder in die Pendants des anderen Fahrzeugscheines
function synchFahrzeugscheinDaten(quelle, ziel) {

	var plz = $("#fahrzeugschein_" + quelle + "_plz").val();
  var datumAnschaffung = $("#fahrzeugschein_" + quelle + "_zulassungsdatum").val();	
  var hsn = $("#fahrzeugschein_" + quelle + "_hsn").val().substr(0, 4);
  var tsn = $("#fahrzeugschein_" + quelle + "_tsn").val().substr(0, 3);
  var datumErstzulassung = $("#fahrzeugschein_" + quelle + "_erstzulassung").val();

	$("#fahrzeugschein_" + ziel + "_plz").val(plz);
  $("#fahrzeugschein_" + ziel + "_zulassungsdatum").val(datumAnschaffung);	
  $("#fahrzeugschein_" + ziel + "_hsn").val(hsn);
  $("#fahrzeugschein_" + ziel + "_tsn").val(tsn);
  $("#fahrzeugschein_" + ziel + "_erstzulassung").val(datumErstzulassung);
}

$(document).ready(function() {
	   img1 = new Image();
	   img2 = new Image();
	   img1.src = "/direkt/images/rv24-ladevorgang.gif";
	   img2.src = "/direkt/images/layer_overlay.gif";
	if(document.location.hash.length) {
		if (/fahrzeugschein=1/.test(document.location.hash)) {
			klickFahrzeugschein();
			document.kfzAntragForm.cmbKIch_M_oechte.value='U'
			switchFieldsEinstufungId(true);
			showInputTippEinstufungId('U');
		}else if (/[t|h]sn=/.test(document.location.hash)) {
			manualOverride=true;
			klickFahrzeugauswahlAendern();
			window.setTimeout("klickFahrzeugsuche()",1000);
		}
	}
});
