﻿// Bugfix fuer IEx bei Hintergrund-Bildern
try {
	document.execCommand('BackgroundImageCache', false, true);
} catch (e) {}

// Werte fuer die Schriftvergroesserung
var h3_font_size = new Array("15px", "17px", "19px", "21px");
var font_size = new Array("12px", "14px", "16px", "18px");
var font_size_fileinfo = new Array("11px", "13px", "15px", "17px");
var line_height = new Array("18px", "21px", "24px", "27px");
var line_height_rightcol = new Array("20px", "22px", "24px", "26px");

jQuery(document).ready(function() {
	// Allgemeine Funktionen
	
  // Links auf PDF-Dateien mit target="_blank" versehen oder ganz entfernen, falls kein href gesetzt ist
  jQuery("a").each(
    function() {
      if (jQuery(this).attr("href") != undefined) {
        if ( jQuery(this).attr("href").search(/\.pdf$/) != -1 ) {
          jQuery(this).attr("target", "_blank");
        }
        if ( jQuery(this).attr("href") == "" ) {
          jQuery(this).remove();
        }
      }
    }
  );
  
  // Breadcrumb von letzter schliessender Klammer befreien, wenn die aktuelle Seite nicht aufgefuerht ist ( das passiert bei Seiten die im typo3 versteckt sind)
  if(jQuery(".breadcrumb").length) {
    jQuery(".breadcrumb").html( jQuery(".breadcrumb").html().replace(/ &gt; $/, "") );
  }
  
  // leere Beschreibungtexte von Downloads: Tags entfernen
  jQuery(".additional_information").each(
    function() {
      if ( jQuery(this).text() == "" ) {
          jQuery(this).remove();
      }
    }
  );
  
	// Schriftgroessen-Veraenderung
	var size_pos = 0;
	var max_pos = font_size.length - 1;
	
	// Schrift vergroessern
	jQuery("#fontplus").click(function() {
		size_pos++;
		if (size_pos > max_pos) {
			size_pos = max_pos;
		}
    
    change_font_size(size_pos);
	});
	
	// Schrift verkleinern
	jQuery("#fontminus").click(function() {
		size_pos--;
		if (size_pos < 0) {
			size_pos = 0;
		}
    
    change_font_size(size_pos);
  });
	
	// Suche
	jQuery(".suche").focus(function() {
		if(jQuery(this).val() == "Ihr Suchbegriff") {
			jQuery(this).val("");
		}
	});
	
	jQuery(".suche").blur(function() {
		if(jQuery(this).val() == "") {
			jQuery(this).val("Ihr Suchbegriff");
		}
	});
	
	// Hauptnavigation
	jQuery("#navi_container .active").each(function() {
		var prev_id = "#" + get_prev_id(jQuery(this).attr("id"));
		jQuery(prev_id).css("background-position", "0px -74px");
	});
	
	// id der vorherigen Navigationselements ermitteln
	function get_prev_id(id) {
		var reg = /\d/;
		return "navi_" + String(parseInt(reg.exec(id)) - 1);
	}
	
	// id des naechsten Navigationselements ermitteln
	function get_next_id(id) {
		var reg = /\d/;
		return "navi_" + String(parseInt(reg.exec(id)) + 1);
	}
	
	jQuery(".navi").hover(
		function() {
			jQuery(".navi").css("background-position", "0px 0px");
			var prev_id = "#" + get_prev_id(jQuery(this).attr("id"));
			jQuery(this).css("background-position", "0px -37px");
			if (jQuery(this).attr("id") != "navi_1") {
				jQuery(prev_id).css("background-position", "0px -74px");
			}
		},
		
		function() {
			// Aktives Navigationselement wieder anzeigen
			// und Hover-Element ausblenden
			var active_id = "#" + jQuery("#navi_container .active:first").attr("id");
			var prev_active_id = "#" + get_prev_id(active_id);
			jQuery(prev_active_id).css("background-position","0px -74px");
			jQuery(active_id).css("background-position","0px -37px");
			
			var the_id = "#" + jQuery(this).attr("id");
			var prev_id = "#" + get_prev_id(the_id);
			var next_id = "#" + get_next_id(the_id);
			if (!(jQuery(the_id).hasClass("active")) && !(jQuery(prev_id).hasClass("active")) && !(jQuery(next_id).hasClass("active"))) {
				jQuery(this).css("background-position","0px 0px");
				jQuery(prev_id).css("background-position","0px 0px");
			} else if (jQuery(prev_id).hasClass("active")) {
				jQuery(this).css("background-position","0px 0px");
			} else if (jQuery(next_id).hasClass("active")) {
				jQuery(prev_id).css("background-position","0px 0px");
			}
		}
	);
	
  // Teaserseiten: CSS-Klassen korrigieren
  jQuery(".teasers").children("div").each(
    function() {
      var index = jQuery(".teasers").children("div").index( jQuery(this) );
      if ( index % 2 == 0 ) {
          jQuery(this).addClass("teaser_2_col_left").removeClass("teaser_2_col_right");
      }
    }
  );
  
  // Publikationen: Link zum Warenkorb korrigieren (typo3 setzt unnoetiges "fileadmin/templates/" davor
  jQuery(".to_cart_link").each(
    function() {
      jQuery(this).attr("href", jQuery(this).attr("href").replace(/fileadmin\/templates\//, "") );
    }
  );
  
  // Publikationen - leere select entfernen
  jQuery(".download_language").each(
    function() {
      if (jQuery(this).html() == "") {
        jQuery(this).remove();
      } else if (jQuery(this).children("option").length == 1) {
        jQuery(this).hide();
      }
    }
  );
  // Publikationen - Download-Link entfernen, falls keine Datei vorhanden ist
  jQuery(".download_link").each(
    function() {
      if(jQuery(this).parent().children("select").length == 0) {
        jQuery(this).parent().remove();
      }
    }
  );
  // Warenkorb-Zeile entfernen, wenn das Flag fuer den Warenkorb nicht gesetzt ist
  jQuery(".order_link_container span").each(
    function() {
      if( jQuery(this).html() == "" ) {
        jQuery(this).parent().remove();
      }
    }
  );
  // Publikationen - href des Download-Links beim Klicken mit dem value der entsprechenden Selectbox (der Sprache) setzen
  jQuery(".download_link").click(
    function() {
      jQuery(this).attr( "href", jQuery(this).parent().children(".download_language").val() );
    }
  );
   
	// Termine Schadstoffmobil
	if(document.getElementById("date_table")) {
		jQuery("#date_table").load("/cgi-elw/schadstoffmobil.php?ort=");
		
		jQuery("#location").blur(function() {
			var selected_location = jQuery(this).val();
			jQuery("#date_table").load("/cgi-elw/schadstoffmobil.php?ort=" + escape(selected_location));
		});
    
		jQuery("#termin_button").click(function() {
			jQuery("#location").blur();
		});
	}
	
	// Abfall-ABC
	jQuery(".letter_listing ul").each(function() {
		jQuery(this).children("li:even").each(function() {
			jQuery(this).addClass("odd");
		});
	});
	
	jQuery(".letter_listing ul").each(function() {
		jQuery(this).children("li:odd").each(function() {
			jQuery(this).addClass("even");
		});
	});
	
	jQuery(".letter_listing ul").each(function() {
		if (jQuery(this).children("li").length % 2 == 0) {
			jQuery(this).children("li:last").each(function() {
				jQuery(this).addClass("last_line");
			});
		}
	});
	
	jQuery("#az_display_A").show();
	jQuery("#az_A").addClass("active_letter");
  
	jQuery("#alphabet a").click(function() {
		var letter = jQuery.trim(jQuery(this).html());
		jQuery("#alphabet a").removeClass("active_letter");
		jQuery(this).addClass("active_letter");
		jQuery(".letter_listing").hide();
		jQuery("#az_display_" + letter).show();
		return false;
	});
	
	jQuery("#abc_forward").click(function() {
		var active_letter_link = "#" + jQuery(".active_letter").attr("id");
		if (active_letter_link != "#az_Z") {
			var active_letter = jQuery.trim(jQuery(active_letter_link).html());
			var active_letter_display = jQuery("#az_display_" + active_letter);
			
			var next_letter_link = "#" + jQuery(".active_letter").parent().next().children("a").attr("id");
			var next_letter = jQuery.trim(jQuery(next_letter_link).html());
			var next_letter_display = jQuery("#az_display_" + next_letter);
			
			active_letter_display.hide();
			next_letter_display.show();
			jQuery(active_letter_link).removeClass("active_letter");
			jQuery(next_letter_link).addClass("active_letter");
		}
		
		return false;
	});
	
	jQuery("#abc_back").click(function() {
		var active_letter_link = "#" + jQuery(".active_letter").attr("id");
		if (active_letter_link != "#az_A") {
			var active_letter = jQuery.trim(jQuery(active_letter_link).html());
			var active_letter_display = jQuery("#az_display_" + active_letter);
			
			var next_letter_link = "#" + jQuery(".active_letter").parent().prev().children("a").attr("id");
			var next_letter = jQuery.trim(jQuery(next_letter_link).html());
			var next_letter_display = jQuery("#az_display_" + next_letter);
			
			active_letter_display.hide();
			next_letter_display.show();
			jQuery(active_letter_link).removeClass("active_letter");
			jQuery(next_letter_link).addClass("active_letter");
		}
		
		return false;
	});
	
	// Strassenreinigungskalender
	if(document.getElementById("auto_clean")) {
		var clean_streets;
		var url = "/cgi-elw/strassenreinigung.cgi?action=get_streets";
		jQuery.get( url, function (result) {
			var all_streets = result;
			clean_streets = all_streets.split("|");
			jQuery("#auto_clean").autocomplete(clean_streets);
			jQuery("#auto_clean").val("Straße");
			jQuery("#auto_clean").removeAttr("disabled");
			jQuery("#preloader_streets_cleaner").hide();
		});
		
		jQuery("#auto_clean").focus(function() {
			if (jQuery(this).val() == "Straße") {
				jQuery(this).val("");
			}
		});
		
		jQuery("#streetcleaner_search").click(function() {
			var exist = 0;
			// Strasse ueberpruefen
			for (i=0; i<clean_streets.length; i++) {
				if ( jQuery("#auto_clean").val() == clean_streets[i] ) {
					exist = 1;
				}
			}
			
			if (exist) {
				// Fehlermeldung ausbleden
				jQuery("#streetscleaner_error_msg").slideUp();
				// Textfeld deaktivieren
				jQuery("#auto_clean").attr("disabled", "true");
				// Suchen-Button ausblenden
				jQuery("#streetcleaner_search").hide();
				// Editier-Button einblenden
				jQuery("#streetcleaner_edit").show();
				// Ladebalken fuer die Strassenabschnitte werden geladen
				jQuery("#preloader_streetparts").show();
				
				var streetparts = new Array;
				var url = "/cgi-elw/strassenreinigung.cgi?action=get_streetparts&street=" + escape(jQuery("#auto_clean").val());
				jQuery.get( url, function (result) {
					var all_streets = result;
					streetparts = all_streets.split("|");
					jQuery("#streetparts_select").html("");
					for(var i = 0; i < streetparts.length; i++) {
						var street_name = "gesamte Straße";
						if (streetparts[i] != "") {
							street_name = streetparts[i];
						}
						//jQuery("#streetparts_select").append("<option value=" + streetparts[i] + ">" + streetparts[i] + "</option>");
						var new_option = new Option(street_name, streetparts[i], false, false);
						document.streetcleaner.streetparts_select.options[document.streetcleaner.streetparts_select.length] = new_option;
						// DIV mit den Strassenabschnitten einblenden
					}
					jQuery("#preloader_streetparts").hide();
					// Ergebnis-Tabelle einblenden
					jQuery("#streetcleaner_select").slideDown();
				});
			} else {
				// Fehlermeldung einbleden
				jQuery("#streetscleaner_error_msg b").text( jQuery("#auto_clean").val() );
				jQuery("#streetscleaner_error_msg").slideDown();
				jQuery("#auto_clean").focus();
			}
			
			return false;
		});
		
		jQuery("#streetcleaner_edit").click(function() {
			// Ergebnis-Tabelle ausblenden
			jQuery("#streetcleaner_table").slideUp(1000);
			// Textfeld aktivieren
			jQuery("#auto_clean").removeAttr("disabled");
			// Editier-Button ausblenden
			jQuery("#streetcleaner_edit").hide();
			// Suchen-Button einblenden
			jQuery("#streetcleaner_search").show();
			// Strassenabschnitte ausblenden
			jQuery("#streetcleaner_select").slideUp();
			// Strassenabschnitte-Selectbox leeren
			document.streetcleaner.streetparts_select.length = 1;
			
			return false;
		});
		
		jQuery("#streetcleaner_dates").click(function() {
			var street = jQuery("#auto_clean").val();
			var streetpart = jQuery("#streetparts_select").val();
			
			var url = "/cgi-elw/strassenreinigung.cgi?action=get_dates&street=" + escape(street) + "&section=" + escape(streetpart);
			
			jQuery.get( url, function (result) {
				jQuery("#streetcleaner_table").html(result);
				jQuery("#streetcleaner_table").slideDown(1000);
			});
			
			return false;
		});
	}
  
  /* Downloadbereich */
  var download_timeout;
  jQuery(".in_cart_link").click(
    function() {
      // Hinweismeldungen ausblenden
      jQuery("#cart_errormsg").slideUp();
      jQuery("#cart_success").slideUp();

      window.clearTimeout(download_timeout);
      jQuery(this).parent().parent().parent().next("div.download_success").slideDown();
      jQuery(".to_cart_link").show();
      
      download_timeout = window.setTimeout(function() {
        jQuery(".download_success").slideUp();
      }, 5000);
      
      // Warenkorb aktualisieren
      // falls der Warenkorb noch leer ist, dann die Zeile "Der Warenkorb ist leer." ausblenden
      if( jQuery("#cart tr").length == 2 ) {
        jQuery("#cart tr:eq(1)").hide();
      }

      // Sprache der Publikation ermitteln
      var selected_language = "";
      if ( jQuery(this).prev().hasClass("download_language") ) {
        selected_language = " (" + jQuery(this).prev("select").val() + ")";
      }
      
      // pruefen, ob das Produkt schon im Warenkorb ist 
      var download_name = jQuery(this).parent().parent().children("div").children("h4").text() + selected_language;
      var excist = 0;
      jQuery(".product_input").each(
        function() {
          if ( jQuery(this).attr("title") == download_name ) {
            // index des inputs merken und value um eins erhoehen
            jQuery(this).val( parseInt(jQuery(this).val()) + 1 );
            excist = 1;
          }
        }
      );
      
      // falls das Produkt noch nicht im Warenkorb ist, dann hinzufuegen
      if (!excist) {
        var myTr = jQuery('<tr></tr>').appendTo("#cart table");
        jQuery('<td><input class="product_input" type="text" name="bestellung" value="1" title="' + download_name + '" /></td><td>' + download_name + '</td><td><a class="del_cart_product" href="">l&ouml;schen</a></td>').appendTo(myTr);
        /* Loeschen-Link mit Funktion versehen */
        myTr.find('a.del_cart_product').bind("click", myTr,
          function(e) {
            e.data.remove();
            update_cart_td();
            // falls der Warenkorb nach dem Loeschen leer ist, dann die Zeile "Der Warenkorb ist leer." einblenden
            if( jQuery("#cart tr").length == 2 ) {
              jQuery("#cart tr:eq(1)").show();
            }
            return false;
          }
        );

        // Blur-Funktion fuer inputs
        myTr.find(".product_input").bind("blur",
          function() {
            jQuery(this).val( jQuery(this).val().replace(/\D/g, "") );
          }
        );

      }
      
      // Zebrastreifen-Muster aktualisieren
      update_cart_td();
      return false;
    }
  );
  
  // Publikationen-Meldungen ausblenden/zuruecksetzen
  jQuery("#download_contact input, #download_contact select, #download_contact textarea").focus(
    function() {
      jQuery("#cart_success").slideUp();
      jQuery(this).removeClass("error").parent().children("label").removeClass("error");
    }
  );
  
  jQuery("#cart_submit").click(
    function() {
      var cart_error = 0;
      // Validierung des Warenkorbs
      
      // Warenkorb leer?
      if ( jQuery("#cart tr").length == 2 ) {
        jQuery("#cart_errormsg").text("Ihr Warenkorb ist leer.").slideDown();
        cart_error++;
      }
      // Warenkorb enthaelt Elemente mit der Anzahl = 0
      jQuery(".product_input").each(
        function() {
          if ( jQuery(this).val() == 0 ) {
            jQuery("#cart_errormsg").html("Ihr Warenkorb enthält Publikationen mit der Anzahl = 0.<br />Bitte tragen Sie eine Anzahl ein oder löschen Sie diese.").slideDown();
            cart_error++;
          }
        }
      );
      
      // Validierung jetzt abbrechen, falls schon Fehler bestehen
      if (cart_error) {
        return false;
      }
      
      // Validierung der Userdaten
      var required_fields = new Array("vorname", "nachname", "strasse", "hausnummer", "plz", "ort");
      //var required_emails = new Array("liame");
      var required_emails = new Array();
      var bot_field = "email";
      
      // normale Pflichtfelder
      for (var i in required_fields) {
        if (jQuery("#" + required_fields[i]).val() == "") {
          jQuery("#" + required_fields[i]).addClass("error").parent().children("label").addClass("error");
          cart_error++;
        }
      }
      
      // E-Mail Pflichtfelder
      for (var i in required_emails) {
    		var email_regex = /^[a-zA-Z0-9\-\.\_]+\@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})$/;

        if (jQuery("#" + required_emails[i]).val().search(email_regex) == -1) {
          jQuery("#" + required_emails[i]).addClass("error").parent().children("label").addClass("error");
          cart_error++;
        }
      }

      // Fehlermeldung oder Formular abschicken
      if (cart_error) {
        jQuery("#cart_errormsg").html("Bitte f&uuml;llen Sie alle Pflichtfelder korrekt aus.").slideDown();
      } else {
        // Warenkorb in ein hidden-field im form ueberfuehren
        var total_order = "";
        jQuery(".product_input").each(
          function() {
            total_order = total_order + jQuery(this).val() + "x " + jQuery(this).attr("title") + "\n";
          }
        );
        jQuery("#bestellungen_gesamt").val(total_order);
  			// URL mit den angehaengten Parametern erzeugen
  			var url = "/cgi-elw/email.cgi?" + $("#download_contact form").serialize() + "&bot_field=" + bot_field;
  			jQuery.get( url, function (result) {
  				if (result == "OK") {
            jQuery("#cart_errormsg").slideUp();
            jQuery("#cart_success").slideDown();
            jQuery(".del_cart_product").each(
              function() {
                jQuery(this).trigger("click");
              }
            );
            jQuery("#download_contact input, #download_contact select, #download_contact textarea").val("");
  				} else {
            // Skriptfehler
  				}
  			});
      }
      
      return false;
    }
  );
  
  /* CSS-Klassen der TD-Tags neusetzen */
  function update_cart_td() {
    jQuery("#cart tr").removeClass("odd").removeClass("even")
    jQuery("#cart tr:odd").addClass("odd");
    jQuery("#cart tr:even").addClass("even");
  }
  
  /* Abfallbehaelter */
  jQuery("#waste_bin_type a").click(
    function() {
      // Index des angeklickten Typs ermitteln
      var index = jQuery("#waste_bin_type a").index( jQuery(this) );
      jQuery("#waste_bin_type a").removeClass("current");
      jQuery(this).addClass("current");
      
      // zugehoerige Tabelle anzeigen
      jQuery(".waste_bin_type").hide();
      jQuery(".waste_bin_type:eq(" + index +")").show();
    }
  );
  
  jQuery(".waste_bin .show_infos").toggle(
    function() {
      jQuery(this).text("Infos ausblenden");
      jQuery(this).parent().parent().next().show();
      return false;
    },
    function() {
      jQuery(this).text("Infos einblenden");
      jQuery(this).parent().parent().next().hide();
      return false;
    }
  );
  
  /* Suche (indexed_search) */
  jQuery("#tx-indexedsearch-searchbox-button-submit").hover(
    function() {
      jQuery(this).addClass("hover");
    },
    function() {
      jQuery(this).removeClass("hover");
    }
  );
  /* Suche, erweitert */
  if ( jQuery(".tx-indexedsearch-search-for").length ) {
    // fieldset verbreitern
    jQuery(".tx-indexedsearch-searchbox fieldset").css("width", "404px");
    // Suchfeld verbreitern
    jQuery("#tx-indexedsearch-searchbox-sword").css("width", "245px");
    // Link zur normalen Suche platzieren
    jQuery(".tx-indexedsearch-searchbox p").addClass("link_to_normal_search");
  }
  
  // Layout anpassen
  jQuery(".browsebox li a").each(
    function() {
      if ( jQuery(this).text().search(/Zur/) != -1 ) {
          jQuery(this).text("vorherige").parent().css({
            "background": "url(/fileadmin/images/pfeil_zurueck.gif) no-repeat 0px 5px",
            "padding-left": "14px",
            "padding-right": "10px"
          });
      } else if ( jQuery(this).text().search(/chste/) != -1 ) {
          jQuery(this).text("nächste").parent().css({
            "background": "url(/fileadmin/images/pfeil_mehrlink.gif) no-repeat right 5px",
            "padding-left": "10px",
            "padding-right": "14px"
          });
      }
    }
  );
  
  // erste Seitennummer mit einer CSS-Klasse zur Weiterverarbeitung versehen (fuer die obere und unter Navi getrennt)
  jQuery(".browsebox").each(
    function() {
      jQuery(this).find("li a:contains('Seite'):first").addClass("first_number");
    }
  );

  // Textlinks veraendern (Wort "Seite" entfernen)
  jQuery(".browsebox li a:contains('Seite')").each(
  	function() {
      jQuery(this).text( jQuery(this).text().replace(/Seite /, "") );
      // Trennzeichen zwischen die Seitennummern setzen
      if ( !jQuery(this).hasClass("first_number") ) {
        jQuery(this).before("<span>|</span>");
      }
  	}
  );
});

function change_font_size(size_pos) {
  // Schriftgroesse
  jQuery("#right_content #content_text h2, #right_content #content_text h3, #right_bar h2, #right_col #infos h2, #right_col .imageheadline, #news h3, #news h3 a").css("font-size", h3_font_size[size_pos]);
  jQuery("#content_text, #right_content #content_text h4, #right_bar, #right_content #right_bar h4, #right_content #right_bar #downloads li, #right_content #right_bar #service li, #news .newstext").css("font-size", font_size[size_pos]);
  jQuery(".fileinfo, #right_content #right_bar .times, #news .subtext").css("font-size", font_size_fileinfo[size_pos]);
  
  // Zeilenhoehe
  jQuery("#right_content #content_text #article, #right_content #content_text .teaser_text, #right_content #content_text .text, #right_content #content_text ul li, #right_content #right_bar .address").css("line-height", line_height[size_pos]);
  jQuery(".fileinfo, #right_content #right_bar .times, #right_content #right_bar h4").css("line-height", line_height_rightcol[size_pos]);
}