﻿/*** JavaScript Reisbank Webseite ***/

// Bugfix fuer IEx bei Hintergrund-Bildern
try {
	document.execCommand('BackgroundImageCache', false, true);
} catch (e) {}

jQuery.noConflict();

var standard_search_text = "Suche";
var location_search_text = "Ort oder PLZ";
var cashpoint_text = "Geldautomaten-Nr.";
var email_regex = /^.+\@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})$/;

// Pagingbar fuer die Startseite generieren
function generate_pagingbar() {
  var pagingbar_html = "";
  var counter = 1;

  // erstes Bild sichtbar machen
  jQuery("#home_teaser img:eq(0)").css("display", "block");

  // fuer jedes vorhandene Bild einen Button erstellen
  jQuery("#home_teaser img").each(
    function() {
        pagingbar_html += '<a id="page_' + counter + '" href="#"></a>';
        counter++;
    }
  );
  // alle erstellen Buttons als HTML in das DIV hinzufuegen
  jQuery("#pagingbar").html(pagingbar_html);
  // ersten Anker mit class current versehen
  jQuery("#pagingbar a:eq(0)").addClass("current");
}

// Startseite: Rotation des Bildbanners
var start_banner_timer;
var start_banner_interval = 5000;
function start_banner_roation() {
	var index = jQuery("#pagingbar a").index( jQuery("#pagingbar a.current") );
	var new_index = (index + 1) % jQuery("#pagingbar a").length;
	jQuery("#pagingbar a:eq(" + new_index + ")").trigger("click");
	
	start_banner_timer = window.setTimeout("start_banner_roation()", start_banner_interval);
}

// Portal-Teaser beim Laden anpassen
function prepare_portal_teaser() {
  // Ersten Portalseiten-Teaser mit 2 CSS-Klassen versehen, damit dieser ausgeklappt erscheint
  jQuery(".portal_teaser:eq(0)").addClass("first current");
  // Icons ab dem 2. Teaser verkleinern
  jQuery(".portal_teaser_icon img").each(function() {
    if(!jQuery(this).parent().parent().parent().hasClass("first")) {
      jQuery(this).css({
        width: "60px",
        height: "52px"
      });
    }
  });
}

jQuery(document).ready(
  function() {
    // von typo3 geloeschte ALT-Attr setzen
    jQuery(".detail_icon img").attr("alt", "");
    jQuery(".content_bg img").attr("alt", "");
    // nicht-geladene Bilder ausblenden
    if ( jQuery(".detail_icon img").attr("src") == "" ) {
      jQuery(".detail_icon img").hide();
    }
    if ( jQuery(".content_bg img").attr("src") == "" ) {
      jQuery(".content_bg img").hide();
    }
    // Schriftgroessen-Einstellung
    var font_sizes = new Array("12px", "14px", "16px");
    var font_sizes_td = new Array("11px", "13px", "15px");
    var line_heights = new Array("18px", "20px", "22px");
    var line_heights_td = new Array("14px", "16px", "18px");

    jQuery("#font_size a").click(
      function() {
        // Markierung setzen
        jQuery("#font_size a").removeClass("current");
        jQuery(this).addClass("current");

        // Groesse ermitteln
        var size = jQuery(this).attr("id").replace(/font_/, "");

        //Schriftgroesse anpassen
        jQuery("#content, #content h3").css({
          "font-size": font_sizes[size],
          "line-height": line_heights[size]
        });
        jQuery("#content th, #content td").css({
          "font-size": font_sizes_td[size],
          "line-height": line_heights_td[size]
        });
        return false;
      }
    );

    // Suchfeld leeren
    jQuery("#search_text").focus(
      function() {
        if(jQuery(this).val() == standard_search_text) {
          jQuery(this).val("");
        }
        return false;
      }
    );
    // Suchfeld fuellen
    jQuery("#search_text").blur(
      function() {
        if(jQuery(this).val() == "") {
          jQuery(this).val(standard_search_text);
        }
        return false;
      }
    );

    // Standort-Suche leeren
    jQuery("#location_search_text, #location").focus(
      function() {
        if(jQuery(this).val() == location_search_text || jQuery(this).val() == cashpoint_text) {
          jQuery(this).val("");
        }
        return false;
      }
    );
    // Standort-Suche fuellen
    jQuery("#location_search_text, #location").blur(
      function() {
        if (jQuery(this).val() == "" && jQuery("#select_type input:checked").val() != "3") {
          jQuery(this).val(location_search_text);
        } else if (jQuery(this).val() == "") {
          jQuery(this).val(cashpoint_text);
        }
        return false;
      }
    );

    // Pagingbar / grosses Teaserbild
    jQuery("#pagingbar a").click(
      function() {
        // Doppelklick abfangen
        if(jQuery("#home_teaser .inner:animated").length != 0) {
          return false;
        } else {
          // ID des Buttons fuer den anzuzeigenden Teaser verwenden
          var id = jQuery(this).attr("id").replace(/page_/, "");
          jQuery("#home_teaser .inner.current").fadeOut(1000).removeClass("current");
          jQuery("#home_teaser img:eq(" + --id + ")").fadeIn(1000).addClass("current");

          jQuery("#pagingbar a").removeClass("current");
          jQuery(this).addClass("current");
        }
        return false;
      }
    );
    
    // Startseite: Rotation starten
    if (jQuery("#pagingbar").length) {
      start_banner_timer = window.setTimeout("start_banner_roation()", start_banner_interval);
    }

    jQuery(".portal_teaser").mouseover(
      function() {
        // Doppelklick abfangen
        if(jQuery(".portal_teaser div:animated").length != 0) {
          return false;
        } else {
          // nur ausfuehren, wenn das nicht der aktuelle Teaser ist
          if(!jQuery(this).hasClass("current")) {
            // 1. aktuellen Teaser einklappen
            // Text-Bereich verkleinern
            jQuery(".portal_teaser.current .preview").animate({
              height: "36px"
            });
            // mehr-Pfeil anzeigen
            jQuery(".portal_teaser.current .preview .arrow").css("display", "inline");
            // Icon links verkleinern
            jQuery(".current .portal_teaser_icon img").animate({
              width: "60px",
              height: "52px"
            });
            // Icon-Container verkleinern
            jQuery(".portal_teaser.current .portal_teaser_icon").animate({
              height: "52px"
            });

            // CSS-Klasse "current" tauschen
            jQuery(".portal_teaser.current").removeClass("current");
            jQuery(this).addClass("current");

            // 2. neuen Teaser ausklappen
            // Text-Bereich vergroessern
            jQuery(".portal_teaser.current .preview").animate({
              height: "120px"
            });
            // mehr-Pfeil ausblenden
            jQuery(".portal_teaser.current .preview .arrow").css("display", "none");
            // Icon-Container vergroessern
            jQuery(".portal_teaser.current .portal_teaser_icon").animate({
              height: "135px"
            });
            // Icon links vergroessern
            jQuery(".current .portal_teaser_icon img").animate({
              width: "155px",
              height: "135px"
            });
          }
        }
      }
    );

    // Hover bei li der subsubnavi
    jQuery("#subsubnavi li").hover(
      function() {
        // einige CSS-Klassen ausschliessen
        if (!jQuery(this).hasClass("left") && !jQuery(this).hasClass("current") && !jQuery(this).hasClass("right")) {
          jQuery(this).css("background-position", "0px -20px");
        }
      },
      function() {
        if (!jQuery(this).hasClass("current")) {
          jQuery(this).css("background-position", "0px 0px");
        }
      }
    );

    // Hover bei contactdata_submit, content_location_submit
    jQuery("#contactdata_submit, #content_location_submit").hover(
      function() {
        jQuery(this).css("background-position", "0px -20px");
      },
      function() {
        jQuery(this).css("background-position", "0px 0px");
      }
    );

    // Kontakformular-Felder leeren
    jQuery("#contactdata select, input, #contactdata textarea").focus(
      function() {
        jQuery(this).removeClass("input_error");
        if(jQuery(this).val() == jQuery(this).attr("title")) {
          jQuery(this).val("");
        }
        return false;
      }
    );
    // Kontakformular-Felder fuellen und initialisieren
    jQuery("#contactdata input, #contactdata textarea").blur(
      function() {
        if(jQuery(this).val() == "") {
          jQuery(this).val( jQuery(this).attr("title") );
        }
        return false;
      }
    ).blur();
    
    // Kontaktformular: Klick auf Anrede
    jQuery("#contactdata_salutation_id a").click(
      function() {
        jQuery("#contactdata_salutation_id a").removeClass("active");
        jQuery(this).addClass("active").prev().trigger("click");
      }
    );
    
    // Radion-Button initialisieren
    var contactdata_salutation_index = jQuery("#contactdata_salutation_id input").index( jQuery("#contactdata_salutation_id input:checked") );
    jQuery("#contactdata_salutation_id a:eq(" + contactdata_salutation_index + ")").trigger("click");
    
    // Kontaktformular: Klick zur NL-Anmeldung
    jQuery("#contactdata_subscribe_to_newsletter").click(
      function() {
        if ( jQuery(this).children("input").attr("checked") == true ) {
          jQuery(this).removeClass("active").children("input").attr("checked", false);
        } else {
          jQuery(this).addClass("active").children("input").attr("checked", true);
        }
      }
    );
    
    // Kontaktformular: Validierung
    jQuery("#contactdata").submit(
      function() {
        var error_msg = "";
        jQuery("#contactdata input.text, #contactdata textarea").focus();
        // Pflichtfelder pruefen
        var required_fields = new Array("#contactdata_type_id", "#contactdata_name", "#contactdata_email", "#contactdata_message");
        for(i=0; i<required_fields.length; i++) {
          jQuery(required_fields[i]).removeClass("input_error");
          if (jQuery(required_fields[i]).val() == "") {
            jQuery(required_fields[i]).addClass("input_error");
            error_msg = "Bitte füllen Sie alle Pflichtfelder aus.<br />";
          }
        }
        
        // E-Mail-Validierung
        var check_email = jQuery("#contactdata_email").val().search(email_regex);
        if (check_email == -1) {
          jQuery("#contactdata_email").addClass("input_error");
          error_msg += "Bitte tragen Sie eine gültige E-Mail-Adresse ein.<br />";
        }
        
        // Fehlerbehandlung
        if (error_msg != "") {
          jQuery("#contactdata input.text, #contactdata textarea").blur();
          jQuery("#contactdata_error").html(error_msg).slideDown();
          return false;
        }
        
        return true;
      }
    );

    // Flag fuer die Ausklapp-Subsub-Navi
    var mouseover_navi2 = 0;
    var mouseover_navi3 = 0;

    // Ausklapp-Subsub-Navigation initialisieren
    if ( jQuery("#subnavi_all div ul li").length ) {
      // 1. LI aus allen UL entfernen, da typo3 hier den Navipunkt der Oberkategorie einsetzt
      jQuery("#subnavi_all ul").each(
        function() {
          jQuery(this).children("li:first").remove();
        }
      );

      // Ausklapp-Subsub-Navi nur ausfuehren, wenn jetzt noch LI-Tags vorhanden sind
      if ( jQuery("#subnavi_all div ul li").length ) {
        // Border links beim ersten Unterpunkt einfuegen
        jQuery("#subnavi_all ul:first").css("border-left", "1px solid #FFFFFF");
        
        // Breiten der einzelnen Punkte anhand der zugehoerigen Navigations-Bilder der 2. Ebene festlegen
        var count_navi2 = jQuery("#subnavi ul li").length;
        for(i = 0; i < count_navi2; i++) {
          var new_width = (jQuery("#subnavi ul li:eq(" + i + ")").width() - 1);
          // beim letzten Punkt noch einen Pixel abziehen
          if ((count_navi2-1) == i) {
            new_width--;
          }
          jQuery("#subnavi_all ul:eq(" + i + ")").width( new_width + "px" );
          jQuery("#subnavi_all ul:eq(" + i + ") li a").width( (new_width-16) + "px" );
        }
        
        // Hoehe der Box anhand des Unterpunkts mit den meisten Punkten festlegen
        var max_height = 0;
        jQuery("#subnavi_all ul").each(
          function() {
            if (max_height < jQuery(this).height()) {
              max_height = jQuery(this).height();
            }
          }
        );
        max_height += 10;
        jQuery("#subnavi_all ul").height(max_height + "px");
        
        // Navi verstecken
        jQuery("#subnavi_all").hide();
        
        // Hover innerhalb
        jQuery("#subnavi_all ul").hover(
          function() {
            jQuery(this).addClass("current");
          },
          function() {
            jQuery(this).removeClass("current");
          }
        );
        
        // Navi Ebene 2
        jQuery("#subnavi ul li").mouseover(
          function() {
            jQuery("#subnavi_all").slideDown();
            jQuery("#subnavi_shadow").slideUp();
            jQuery("#portal_shadow").slideUp();
            mouseover_navi2 = 1;
          }
        );
        jQuery("#subnavi ul li").mouseout(
          function() {
            mouseover_navi2 = 0;
            window.setTimeout(function() {
              if (!mouseover_navi2 && !mouseover_navi3) {
                hide_navi3();
              }
            }, 500);
          }
        );

        // komplette Navi der 3. Ebene
        jQuery("#subnavi_all").mouseover(
          function() {
            mouseover_navi3 = 1;
          }
        );
        jQuery("#subnavi_all").mouseleave(
          function() {
            mouseover_navi3 = 0;
            window.setTimeout(function() {
              if (!mouseover_navi2 && !mouseover_navi3) {
                hide_navi3();
              }
            }, 500);
          }
        );
        
        function hide_navi3() {
          jQuery("#subnavi_all").slideUp();
  		    jQuery("#subnavi_shadow").slideDown();
          jQuery("#portal_shadow").slideDown();
          mouseover_navi2 = 0;
          mouseover_navi3 = 0;
        }
      } else {
        jQuery("#subnavi_all").hide();
      }
      
    }
    
    // Datei-Downloads mit Icons versehen
    if ( jQuery(".csc-uploads").length ) {
      jQuery(".csc-uploads p").each(
        function() {
          // Dateiname ermitteln
          var filename = jQuery(this).children("a").attr("href");
          // Standard-Icon setzen
          var icon = "datei_download_v1.gif";
          // Image zur entsprechenden Dateiendung waehlen
          if ( filename.search(/\.doc/) != -1 ) {
            icon = "doc_download.gif";
          } else if ( filename.search(/\.pdf/) != -1 ) {
            icon = "pdf_download.gif";
          } else if ( filename.search(/\.ppt/) != -1 ) {
            icon = "ppt_download.gif";
          } else if ( filename.search(/\.xls/) != -1 ) {
            icon = "xls_download.gif";
          }
          
          var new_content = '<img src="/fileadmin/images/download/' + icon + '" width="35" height="38" alt="Download" /><br />';
          
          // Anker klonen, damit in den 1. Anker das Image eingefügt werden kann
          jQuery(this).children("a").clone().prependTo(jQuery(this));
          // Bild in den 1. Anker einfuegen
          jQuery(this).children("a:first").html(new_content);
          // CSS-Klasse zur Kennzeichnung fuer externen Link in 2. Anker einfuegen
          jQuery(this).children("a:eq(1)").addClass("extern");
        }
      );
    }
    
    // Standortsuche: Auswahl des Such-Typs (Radio-Buttons)
    jQuery("#select_type span").click(
      function() {
        // Radio-Button markieren
        jQuery(this).children("input").attr("checked", "true");
        // beide Radio-Button-Bilder zuruecksetzen
        jQuery("#select_type img").attr("src", "/fileadmin/images/radiobutton_inaktiv.gif");
        // angeklickte Auswahl mit aktiven Radio-Button-Bild versehen
        jQuery(this).children("img").attr("src", "/fileadmin/images/radiobutton_aktiv.gif");
        
        // Text aendern, je nach Typ
        if ( jQuery("#select_type span").index( jQuery(this) ) == 2 ) {
          jQuery("#location").val( cashpoint_text );
        } else {
          if ( jQuery("#location").val() == cashpoint_text ) {
            jQuery("#location").val( location_search_text );
          }
        }
      }
    );
    // Standard "Geschaeftsstelle" auswaehlen
    jQuery("#select_type span:eq(0)").trigger("click");
    
    // Stellenangebot: Langbeschreibung ausklappen
    jQuery(".job_offer_more").click(
      function() {
        jQuery(this).parent().parent().parent().children("div.job_offer_long").slideDown(1000);
        redo_sifr();
        jQuery(this).parent().parent().parent().children("a.job_offer_close").css("display", "block");
        jQuery(this).hide();
      }
    );
    // Stellenangebot: Langbeschreibung einklappen
    jQuery(".job_offer_close").click(
      function() {
        jQuery(this).parent().children("div.job_offer_long").slideUp(1000, function(){
          jQuery(this).parent().children("div.job_offer_short").children("div").children("img.job_offer_more").show();
        });
        jQuery(this).hide();
        return false;
      }
    );
    
    // Waehrungsrechner/Sortenbestellung (Sorten/Schecks): Betragsfeld
    var currency_amount_text = "Betrag eingeben (ohne Kommastelle)";
    if (jQuery("#currency_amount").val() == "") {
      jQuery("#currency_amount").val( currency_amount_text );
    }
    if (jQuery("#cheque_amount").val() == "") {
      jQuery("#cheque_amount").val( currency_amount_text );
    }
    jQuery("#currency_amount, #cheque_amount").focus(
      function() {
        if(jQuery(this).val() == currency_amount_text) {
          jQuery(this).val("");
        }
        return false;
      }
    );
    jQuery("#currency_amount, #cheque_amount").blur(
      function() {
        if(jQuery(this).val() == "") {
          jQuery(this).val(currency_amount_text);
        }
        return false;
      }
    );
    
    // Waehrungsrechner: Validierung beim Abschicken
    jQuery("#currency_converter_form").submit(
      function() {
        // Pruefung, ob Quell- und Zielwaehrung ausgewaehlt wurden und ob unterschiedliche Laender/Waehrungen gewaehlt wurden
        if ( jQuery("#sourcecountry_id").val() == "" || jQuery("#targetcountry_id").val() == "" ) {
          jQuery("#currency_converter_errors").text("Bitte füllen Sie sowohl Quell- als auch Zielwährung aus.").slideDown();
          return false;
        } else if ( jQuery("#sourcecountry_id").val() == jQuery("#targetcountry_id").val() ) {
          jQuery("#currency_converter_errors").text("Bitte wählen Sie unterschiedliche Quell- und Zielwährung aus.").slideDown();
          return false;
        } else if ( jQuery("#currency_amount").val() == "" || jQuery("#currency_amount").val() == currency_amount_text ) {
          jQuery("#currency_converter_errors").text("Bitte tragen Sie einen gültigen Betrag ein.").slideDown();
          return false;
        } else {
          //jQuery("#currency_converter_errors").slideUp();
        }
      }
    );
    
    // Sortenshop: Seite Produktauswahl, Seite Lieferart --- Laenderinfos: Detailseite
    jQuery("#order_currency_header, #order_cheque_header, #reservation_header, #order_home_header, .country_section .header").hover(
      function() {
        if (jQuery(this).hasClass("active")) {
          jQuery(this).addClass("active_hover");
        } else {
          jQuery(this).addClass("hover");
        }
      },
      function() {
        jQuery(this).removeClass("hover").removeClass("active_hover");
      }
    );
    jQuery("#order_currency_header, #order_cheque_header").click(
      function() {
        if ( jQuery(this).hasClass("active") ) {
          jQuery(this).removeClass("active").removeClass("active_hover");
          jQuery(this).next().slideUp();
          jQuery(this).next().next().slideUp();
        } else {
          jQuery(this).addClass("active").removeClass("hover");
          jQuery(this).next().slideDown();
          jQuery(this).next().next().slideDown();
          redo_sifr();
        }
      }
    );
    
    // Sortenshop: Sortenliste erweitern mit "Bitte waehlen"
    jQuery("#currency_id").html( "<option value=\"\">Bitte wählen</option>" + jQuery("#currency_id").html() );
    
    // Sortenshop: Stueckelung
    jQuery(".currency_splitting").click(
      function() {
        jQuery(".currency_splitting").removeClass("currency_splitting_active");
        jQuery(this).addClass("currency_splitting_active");
        var index = jQuery(".currency_splitting").index( jQuery(this) );
        jQuery("#currency_denomination").val( (index+1) );
        return false;
      }
    );
    // Klick auf das markierte ausloesen, falls noch nichts im input-Feld definiert ist
    if ( jQuery("#currency_denomination").val() == "" ) {
      jQuery(".currency_splitting_active").trigger("click");
    }
    
    // Sortenshop: Sorten zum Warenkorb hinzufuegen
    jQuery("#shop_currency_submit").click(
      function() {
        var error = 1;
        // Validierung der Auswahl/Eingabe
        if ( jQuery("#currency_id").val() == "" ) {
          jQuery("#order_currency_body_error").text("Bitte wählen Sie ein Produkt aus.").slideDown();
        } else if ( jQuery("#currency_amount").val() == "" || jQuery("#currency_amount").val() == currency_amount_text ) {
          jQuery("#order_currency_body_error").text("Bitte geben Sie einen Betrag ein.").slideDown();
        } else if ( jQuery("#currency_denomination").val() != "1" && jQuery("#currency_denomination").val() != "2" && jQuery("#currency_denomination").val() != "3" ) {
          jQuery("#order_currency_body_error").text("Bitte wählen Sie eine Stückelung aus.").slideDown();
        } else {
          error = 0;
          jQuery("#order_currency_body_error").slideUp();
        }
        
        // Bei fehlerfreier Eingabe in den Warenkorb legen
        if (!error) {
          setOrderAction(
            'add_item_to_cart',
            1,
            jQuery("#currency_id").val(),
            jQuery("#currency_amount").val(),
            jQuery("#currency_denomination").val()
          );
        }
      }
    );
    
    // Sortenshop: Scheckliste erweitern mit "Bitte waehlen"
    jQuery("#cheque_id").html( "<option value=\"\">Bitte wählen</option>" + jQuery("#cheque_id").html() );

    // Sortenshop: Schecks zum Warenkorb hinzufuegen
    jQuery("#shop_cheque_submit").click(
      function() {
        var error = 1;
        // Validierung der Auswahl/Eingabe
        if ( jQuery("#cheque_id").val() == "" ) {
          jQuery("#order_cheque_body_error").text("Bitte wählen Sie ein Produkt aus.").slideDown();
        } else if ( jQuery("#cheque_amount").val() == "" || jQuery("#cheque_amount").val() == currency_amount_text ) {
          jQuery("#order_cheque_body_error").text("Bitte geben Sie einen Betrag ein.").slideDown();
        } else {
          error = 0;
          jQuery("#order_cheque_body_error").slideUp();
        }
        
        // Bei fehlerfreier Eingabe in den Warenkorb legen
        if (!error) {
          setOrderAction(
            'add_item_to_cart',
            2,
            jQuery("#cheque_id").val(),
            jQuery("#cheque_amount").val(),
            1
          );
        }
      }
    );
    
    // Sortenshop, Warenkorb: Produkt entfernen
    jQuery(".delete_product").click(
      function() {
        var item_data = jQuery(this).attr("id").split("_");
        setOrderAction(
          'remove_item_from_cart',
          item_data[1],
          item_data[2],
          0,
          0
        );
      }
    );

    // Sortenshop, Warenkorb: Produkt aktualisieren
    jQuery(".update_product").click(
      function() {
        var item_data = jQuery(this).attr("id").split("_");
        setOrderAction(
          'update_item_in_cart',
          item_data[1],
          item_data[2],
          jQuery("#amount_" + item_data[1] + "_" + item_data[2]).val(),
          0
        );
      }
    );

    // Sortenshop: 1. Produktzeile im Warenkorb mit einer CSS-Klasse erweitern
    jQuery(".currency_shop_cart td.functions:eq(0)").parent().addClass("first");

    // Sortenshop: Warenkorb leeren
    jQuery("#delete_cart").click(
      function() {
        setOrderAction(
          'clear_cart',
          0,
          0,
          0,
          0
        );
      }
    );

    // Sortenshop: Lieferart
    jQuery("#reservation_header").click(
      function() {
        jQuery("#delivery_type_error").slideUp();
        jQuery("#delivery_type").val(1);
        jQuery("#reservation_header span").show();
        jQuery("#reservation_body").slideDown();
        jQuery("#order_home_body").slideUp();
        jQuery("#order_home_header span").hide();
        redo_sifr();
      }
    );
    jQuery("#order_home_header").click(
      function() {
        jQuery("#delivery_type_error").slideUp();
        jQuery("#delivery_type").val(2);
        jQuery("#order_home_header span").show();
        jQuery("#order_home_body").slideDown();
        jQuery("#reservation_body").slideUp();
        jQuery("#reservation_header span").hide();
        redo_sifr();
      }
    );
    
    // Sortenshop: Standortauswahl
    jQuery("#preorderdata_pickup_agency_id").focus(
      function() {
        jQuery(this).removeClass("input_error");
      }
    );
    
    // focus/blur-Funktionen fuer alle Felder der Formulare
    jQuery("#reservation_body input, #reservation_body textarea, #order_home_body input, #order_home_body textarea").focus(
      function() {
        jQuery(this).removeClass("input_error");
        if( jQuery(this).val() == jQuery(this).attr("title") ) {
          jQuery(this).val( "" );
        }
      }
    );
    jQuery("#reservation_body input, #reservation_body textarea, #order_home_body input, #order_home_body textarea").blur(
      function() {
        if( jQuery(this).val() == "" ) {
          jQuery(this).val( jQuery(this).attr("title") );
        }
      }
    );
    // alle Felder beim Laden der Seite mit Standardtexten versehen
    jQuery("#reservation_body input, #reservation_body textarea, #order_home_body input, #order_home_body textarea").blur();
    
    // Sortenshop: Lieferart: Checkboxen AGB
    jQuery("#order_home_agb").toggle(
      function() {
        jQuery( "#deliverydata_accepted_agb" ).val("1");
        jQuery(this).addClass("order_home_checkbox_checked");
      },
      function() {
        jQuery( "#deliverydata_accepted_agb" ).val("");
        jQuery(this).removeClass("order_home_checkbox_checked");
      }
    );
    // Checkbox setzen, falls der Wert schon vorhanden ist
    if ( jQuery( "#deliverydata_accepted_agb" ).val() == "1" ) {
      jQuery("#order_home_agb").addClass("order_home_checkbox_checked");
    }
    
    // Sortenshop: eine der bei Lieferarten aufklappen, falls schon eine gesetzt ist
    if ( jQuery("#delivery_type").val() == "1" ) {
      jQuery("#reservation_header").trigger("click");
    } else if ( jQuery("#delivery_type").val() == "2" ) {
      jQuery("#order_home_header").trigger("click");
    }
    
    // Sortenshop: Lieferart abschicken
    jQuery(".button_to_order_check").click(
      function() {
        var error = 0;
        var error_msg = "";
        // Reservierung gewaehlt
        if (jQuery("#delivery_type").val() == "1") {
          // Pruefung des Standort-Feldes
          if ( jQuery("#preorderdata_pickup_agency_id").val() == "" ) {
            error_msg = "Bitte wählen Sie einen Standort aus.<br />";
            jQuery("#preorderdata_pickup_agency_id").addClass("input_error");
          }
          // alle Felder in focus setzen, damit die Standardwerte entfernt werden (falls vorhanden)
          jQuery("#reservation_body input, #reservation_body textarea").focus();
          var required_res = new Array("preorderdata_pickup_date", "preorderdata_firstname", "preorderdata_name", "preorderdata_email", "preorderdata_phone");
          
          // Pflichtfelder ueberpruefen
          jQuery("#reservation_body input, #reservation_body textarea").each(
            function() {
              for(i=0; i<required_res.length; i++) {
                if ( jQuery(this).attr("name") == required_res[i] ) {
                  if ( jQuery(this).val() == "" || jQuery(this).val().replace(/\s/g, "") == "" ) {
                    jQuery(this).addClass("input_error").val("");
                    error++;
                  } else if ( required_res[i] == "preorderdata_email" ) {
                    // E-Mail-Validierung
                    var check_email = jQuery(this).val().search(email_regex);
                    if (check_email == -1) {
                      jQuery(this).addClass("input_error");
                      error_msg += "Bitte tragen Sie eine gültige E-Mail-Adresse ein.<br />";
                    }
                  }
                }
              }
            }
          );
          
          if (error) {
            error_msg += "Bitte füllen Sie alle Pflichtfelder aus.<br />";
          }
          
          // Fehlermeldung setzen, falls vorhanden
          if (error_msg != "") {
            jQuery("#reservation_body_error").html( error_msg ).slideDown();
            jQuery("#reservation_body input, #reservation_body textarea").blur();
          } else {
            jQuery("#reservation_body_error").html("").hide();
            document.frm_lieferart.submit();
          }
        }
        // Lieferung nach Hause gewaehlt
        else if (jQuery("#delivery_type").val() == "2") {
          // alle Felder in focus setzen, damit die Standardwerte entfernt werden (falls vorhanden)
          jQuery("#order_home_body input, #order_home_body textarea").focus();
          var required_res = new Array("deliverydata_firstname", "deliverydata_name", "deliverydata_street", "deliverydata_postcode", "deliverydata_city", "deliverydata_email", "deliverydata_phone");
          
          // Pflichtfelder ueberpruefen
          jQuery("#order_home_body input, #order_home_body textarea").each(
            function() {
              for(i=0; i<required_res.length; i++) {
                if ( jQuery(this).attr("name") == required_res[i] ) {
                  if ( jQuery(this).val() == "" ) {
                    jQuery(this).addClass("input_error");
                    error++;
                  } else if ( required_res[i] == "deliverydata_email" ) {
                    // E-Mail-Validierung
                    var check_email = jQuery(this).val().search(email_regex);
                    if (check_email == -1) {
                      jQuery(this).addClass("input_error");
                      error_msg += "Bitte tragen Sie eine gültige E-Mail-Adresse ein.<br />";
                    }
                  }
                }
              }
            }
          );
          
          if (error) {
            error_msg += "Bitte füllen Sie alle Pflichtfelder aus.<br />";
          }
          
          // AGB pruefen
          if ( jQuery("#deliverydata_accepted_agb").val() != 1 ) {
            error_msg += "Bitte akzeptieren Sie unsere AGB.<br />";
          }
          
          // Fehlermeldung setzen, falls vorhanden
          if (error_msg != "") {
            jQuery("#order_home_body_error").html( error_msg ).slideDown();
            jQuery("#order_home_body input, #order_home_body textarea").blur();
          } else {
            jQuery("#order_home_body_error").html("").hide();
            document.frm_lieferart.submit();
          }
        }
        // keine der beiden Lieferarten gewaehlt
        else {
          jQuery("#delivery_type_error").text("Bitte wählen Sie entweder \"Reservierung\" oder \"Lieferung\" aus.").slideDown();
        }
        return false;
      }
    );

    // Sortenshop: 1. Produktzeile im Warenkorb mit einer CSS-Klasse erweitern
    jQuery(".currency_shop_cart tr:eq(1)").addClass("first");
    
    // Laenderinfos: Hover "Infos anzeigen"-Button
    jQuery(".show_country_infos").hover(
      function() {
        jQuery(this).addClass("show_country_infos_hover");
      },
      function() {
        jQuery(this).removeClass("show_country_infos_hover");
      }
    );

    // ausgewaehlter Laender-ID ermitteln und Land aufrufen
    jQuery("#show_country_form").submit(
      function() {
        var id = "";
        for (i=0; i<country_names.length; i++) {
          if ( country_names[i] == jQuery("#select_country").val() ) {
            id = country_ids[i];
            break;
          }
        }
        if (id == "") {
          jQuery("#select_country_errors").slideDown();
        } else {
          location.href = "/cgi-reisebank/laenderinfos.cgi/" + jQuery("#select_country").val() + "?code=" + id;
        }
        return false;
      }
    );
    
    // Laenderinfos Detailseite: alle header ausblenden
    jQuery(".country_section .header").hide();
    
    // Laenderinfos Detailseite: 1. Sections anzeigen
    jQuery(".country_section:eq(0) .header").addClass("active").show().next("div.data").show();
    
    // Laenderinfos Detailseite: header auf-/zuklappen
    jQuery(".country_section .header").click(
      function() {
        if ( jQuery(this).hasClass("active") ) {
          jQuery(this).removeClass("active").removeClass("active_hover");
          jQuery(this).next().slideUp();
        } else {
          jQuery(this).addClass("active").removeClass("hover");
          jQuery(this).next().slideDown();
          redo_sifr();
        }
        return false;
      }
    );
    
    // Laenderinfos: Selectbox am Start fuellen
    if ( jQuery("#select_country_middle select").length > 0 ) {
      var country_id = location.search.search(/code=(...)/);
      country_id = RegExp.$1;
      
 			var url = "/laenderinfos/list";
      jQuery.get( url, function (result) {
        var countries = result.split("|");
        var countries_html = "";
        
        for (i=0; i<countries.length; i++) {
          // Unterscheidung zwischen Start optgroup, Ende optgroup, Landinfo
          if (countries[i] == "[") {
            countries_html += '<optgroup label="Regionen">';
          } else if (countries[i] == "]") {
            countries_html += '</optgroup>';
          } else {
            // Options für die Selectbox erstellen: 1. Wert = ID des Standorts, 2. Wert = Text
            var country_data = countries[i].split("=");
            
            var selected = "";

            // diese Option als selected markieren, falls dies das aktuelle Land ist
            if ( country_id == country_data[0] ) {
              selected = " selected";
            }
            
            countries_html += '<option value="' + country_data[0] + '"' + selected + '>' + country_data[1] + '</option>';
          }
        }
        
        // erzeugtes HTML mit option und optgroup in die Selectbox einfuegen
        jQuery("#select_country_middle select").html(countries_html);
      });
    }
    
    // Laenderinfos: Selectbox der Laender/Regionen
    jQuery("#select_country_middle select, #select_province").change(
      function() {
        var country_id = encodeURI( jQuery(this).val() );
        var country_name = encodeURI( jQuery(this).find(":selected").text() );
        location.href = "/cgi-reisebank/laenderinfos.cgi/" + country_name + "?code=" + country_id;
      }
    );
    
    // Laenderinfos: Themen-Links
    jQuery("#topics a").click(
      function() {
        if ( jQuery(this).hasClass("active") ) {
          jQuery(this).removeClass("active");
        } else {
          jQuery(this).addClass("active");
        }
        return false;
      }
    );
    
    // Laenderinfos: Themen-Links
    jQuery("#select_all a").click(
      function() {
        if ( jQuery(this).hasClass("active") ) {
          jQuery(this).removeClass("active");
          // alle Themen demarkieren
          jQuery("#topics a").each(
            function() {
              if ( jQuery(this).hasClass("active") ) {
                jQuery(this).trigger("click");
              }
            }
          );
        } else {
          jQuery(this).addClass("active");
          // alle Themen markieren
          jQuery("#topics a").each(
            function() {
              if ( !jQuery(this).hasClass("active") ) {
                jQuery(this).trigger("click");
              }
            }
          );
        }
        return false;
      }
    );
    
    // Laenderinfos: "Themen anzeigen"
    jQuery("#show_topics").click(
      function() {
        jQuery("#topics a").each(
          function() {
            var index = jQuery("#topics a").index( jQuery(this) );
            
            // pruefen, ob das Thema angehakt ist
            if ( jQuery(this).hasClass("active") ) {
              // pruefen, ob das Thema nicht sichtbar ist
              if ( jQuery(".country_section:eq(" + index + ") .header").css("display") == "none" ) {
                jQuery(".country_section:eq(" + index + ") .header").show();
              } else {
                // zuklappen falls es aufgeklappt ist
                jQuery(".country_section:eq(" + index + ") .data").hide().prev().removeClass("active");
              }
              // dem Content-DIV danach noch eine CSS-Klasse fuer print.css geben
              jQuery(".country_section:eq(" + index + ") .data").addClass("printable");
            } else {
              jQuery(".country_section:eq(" + index + ") .data").hide().removeClass("printable").prev().removeClass("active").hide();
            }
          }
        );
        
        // sifr der header generieren
        redo_sifr_country();
        
        // falls nur ein Thema gewaehlt wurde, dann dieses gleich aufklappen
        if ( jQuery(".header:visible").length == 1 ) {
          jQuery(".header:visible").trigger("click");
        }
        
        return false;
      }
    );

    // Laenderinfos: "Miniguide erstellen"
    jQuery("#create_miniguide").click(
      function() {
        // alle gewaehlten Themen anzeigen
        jQuery("#show_topics").trigger("click");
        
        // anschliessend die Seite ausdrucken
        window.setTimeout(function() {
          window.print();
        }, 500);
        
        return false;
      }
    );

    // Laenderinfos: Formatierung der aus XML generierten Inhalte
    jQuery(".country_section .data table").each(
      function() {
        jQuery(this).removeAttr("border");
      }
    );
    
    // Laenderinfos: Verlinkungen mit target "_blank" versehen
    jQuery(".country_section .data a").each(
      function() {
        jQuery(this).attr("target", "_blank");
      }
    );
  }
);

// Diese Funktion wird im Sortenshop nochmal aufgerufen, da die sifr-header in den zugeklappten Divs nicht generiert werden
function redo_sifr() {
  sIFR.replace(reisebank, {
  	selector: 'h3'
  	,css: [
  		'.sIFR-root { font-size: 15px; color: #004494; }',
  		'a { color: #004494; text-decoration: none; }',
  		'a:hover { color: #004494; }'
  	],
  	wmode: 'transparent',
    tuneHeight: -5
  });
}

// sifr nochmal aufrufen, speziell fuer die Laenderinfos
function redo_sifr_country() {
  sIFR.replace(reisebank, {
  	selector: 'h3.country_infos'
  	,css: [
  		'.sIFR-root { font-size: 15px; color: #004494; text-transform: uppercase; }',
  		'a { color: #004494; text-decoration: none; }',
  		'a:hover { color: #004494; }'
  	],
  	wmode: 'transparent',
    tuneHeight: -5
  });
}

// Sortenshop-Navi in die linke Spalte setzen
function setShopNavi() {
  jQuery(".detail_icon").html( jQuery("#shop_navi").html() );
  jQuery("#shop_navi").remove();
}

// Bilder bei den Laenderinfos in die rechte Spalte setzen
function setCountryImages() {
  jQuery("#right_col_banner").html( jQuery("#country_images").html() );
  jQuery("#country_images").remove();
}

// Hoehe von "right_col" anpassen, wenn "detail_icon" groesser ist
function setRightColHeight() {
  if ( jQuery("#right_col").height() < jQuery(".detail_icon").height() ) {
    jQuery("#right_col").height( jQuery(".detail_icon").height() + "px" );
  }
}

// Laenderinfos: autocomplete fuer die Laenderauswahl vorbereiten
var country_ids = new Array();
var country_names = new Array();
function init_country_info() {
  var url = "/laenderinfos/list";
  jQuery.get( url, function (result) {
    var countries = result.split("|");
    var is_subcountries = 0;
    var parent_name;
    
    for (i=0; i<countries.length; i++) {
      // Unterscheidung zwischen Start optgroup, Ende optgroup, Landinfo
      if (countries[i] == "[") {
        // Flag fuer Regionen/Provinzen setzen
        is_subcountries = 1;
      } else if (countries[i] == "]") {
        // Flag fuer Regionen/Provinzen entfernen
        is_subcountries = 0;
      } else {
        // Options für die Selectbox erstellen: 1. Wert = ID des Standorts, 2. Wert = Text
        var country_data = countries[i].split("=");
        
        
        if (is_subcountries) {
          // Name des letzten Landes vor die Region/Provinz setzen
          country_data[1] = parent_name + " / " + country_data[1];
        } else {
          // Name des letzten Landes ueberschreiben, wenn dies keine Region/Provinz ist
          parent_name = country_data[1];
        }

        country_ids.push(country_data[0]);
        country_names.push(country_data[1]);
      }
    }
    
    // autocomplete-Plugin initialisieren
    jQuery("#select_country").autocomplete(country_names);
  });
}

// Sortenshop: Formular Seite 1 abschicken
function setOrderAction(action, type, id, amount, denomination) {
  document.frm_order.order_action.value      = action;
  document.frm_order.item_type.value         = type;
  document.frm_order.item_id.value           = id;
  document.frm_order.item_amount.value       = amount;
  document.frm_order.item_denomination.value = denomination;
  // IEx-Bugfix
  window.setTimeout(function() {
    document.frm_order.submit();
  }, 100);
}