﻿/* JavaScript-Datei fuer den ELW-Abfallkalender */

$(document).ready(
	function() {
		
		// KEMWEB: Update der Ausnahmen:
		$.get("/cgi-elw/street_exceptions.php");
		 
		// Initialisierung fuer das Autocomplete der Strassennamen
		var streets;
		var url = "/cgi-elw/trash_calendar.cgi?action=get_streets";
		jQuery.get( url, function (result) {
			var all_streets = result;
			streets = all_streets.split("|");
			streets.pop();

			$("#auto_street").autocomplete(streets);
			$("#auto_street").val("Straße");
			$("#preloader_streets").hide();
			$("#auto_street").removeAttr("disabled");
			$("#housenumbers").removeAttr("disabled");

			// Initialisierung der Selectbox fuer die Kalenderwochen
			var url = "/cgi-elw/trash_calendar.cgi?action=get_calendarweeks";
			jQuery.get( url, function (result) {
				var calendarweeks = result;
				calendarweeks = calendarweeks.split("|");
				calendarweeks.pop();
				calendarweeks.pop();

				for (i = 0; i < calendarweeks.length; i++) {
					calendarweeks[i].replace(/^(.+)---(.+)---(.+)$/, "");
					var date1 = RegExp.$1;
					var date2 = RegExp.$2;
					var week = RegExp.$3;

					// Datum 1 umformatieren
					date1.replace(/^(.*)-(.*)-(.*)$/, "");
					var day1 = RegExp.$3;
					var month1 = RegExp.$2;
					var year1 = RegExp.$1;

					// Datum 2 umformatieren
					date2.replace(/^(.*)-(.*)-(.*)$/, "");
					var day2 = RegExp.$3;
					var month2 = RegExp.$2;
					var year2 = RegExp.$1;

					var new_option = new Option(day1 + "." + month1 + ". - " + day2 + "." + month2 + ". KW " + week + " " + year1, date1 + "|" + date2, false, false);
					document.weeks.calendar_weeks.options[document.weeks.calendar_weeks.length] = new_option;
				}
				$("#preloader_calendarweeks").hide();
				$("#calendar_weeks").removeAttr("disabled");
			});
		});

		$("#auto_street").focus(
			function() {
				if ($(this).val() == "Straße") {
					$(this).val("");
				}
				// Hausnummern-Selectbox leeren
				document.address.housenumbers.length = 1;
			}
		);

		$("#auto_street").blur(
			function() {
				var street_existing = 0;
				// Timeout, damit die autocomplete-Funktion den Namen ins Feld setzen kann
				window.setTimeout(function() {
  				// Hausnummern-Selectbox leeren
  				document.address.housenumbers.length = 1;

					for (i = 0; i < streets.length; i++) {
						if (streets[i] == $("#auto_street").val()) {
							street_existing = 1;
						}
					}

					if (street_existing) {
						$("#street_error_msg").slideUp();
						var housenumbers;
						$("#housenumbers").attr("disabled", "true");
						$("#housenumbers option:first").text("");
						$("#preloader_housenumbers").show();
            
            // falls der Strassennamen ein Komma enthaelt, ist das ein zusammengesetzter String aus Strasse und Stadtteil
            // das muss wieder getrennt werden, damit die zugehoerigen Hausnummer ermittelt werden koennen
            var street = $("#auto_street").val();
            var city = "";
            var street_city = street.split(", ");
            if (street_city.length > 1) {
              street = street_city[0];
              city = street_city[1];
            }
            
						var url = "/cgi-elw/trash_calendar.cgi?action=get_housenumbers&street=" + escape(street) + "&city=" + escape(city);
						jQuery.get( url, function (result) {
							var all_housenumbers = result;
							housenumbers = all_housenumbers.split("|");
							housenumbers.pop();
							housenumbers.sort(numsort);
		
							for (i = 0; i < housenumbers.length; i++) {
								housenumbers[i].replace(/^(.+)---(.+)$/, "");
								var option_text = RegExp.$1;
								var option_value = RegExp.$2;
		
								var new_option = new Option(option_text, option_value, false, false);
								document.address.housenumbers.options[document.address.housenumbers.length] = new_option;
							}

							$("#housenumbers").removeAttr("disabled");
							$("#housenumbers option:first").text("Hausnr.");
							$("#preloader_housenumbers").hide();
							$("#housenumbers").focus();
						});
					} else {
						$("#street_error_msg").slideDown();
						$("#street_error_msg b").text($("#auto_street").val())
					}
				}, 500);
			}
		);

		// Hilfsfunktion zum Sortieren
		function numsort(a, b) {
			// Werte reinigen: Buchstaben rausfiltern
			a.replace(/^(\d+).*/, "");
			a = parseInt(RegExp.$1);
			b.replace(/^(\d+).*/, "");
			b = parseInt(RegExp.$1);
			return a - b;
		}

		$("#show_weeks").click(
			function() {
				var obj_id = $("#housenumbers").val();
				if( obj_id == "Hausnr." ) {
					$("#trash_error_msg").slideDown();
				} else {
					$("#trash_error_msg").slideUp();
					// Strasse und Hausnummer deaktivieren
					$("#auto_street").attr("disabled", "true");
					$("#housenumbers").attr("disabled", "true");
					// PDF-Ladebalken einblenden
					$("#preloader_pdf").show();
					// Button ausblenden
					$(this).hide();
					
					// PDF erzeugen
					var now = new Date();
					var year = now.getYear();
					if (year < 999) year += 1900;
					var url = "/cgi-elw/trash_calendar_pdf.cgi?obj_id=" + obj_id + "&year=" + year;

					// Jahreshaelfte ermitteln
					var month = now.getMonth();
					var param = "";
					// falls aktuelle die zweiter Jahreshaelfte ist, dann einen Param erzeugen
					if (month > 5) {
						param = "#page=2";
					}

					jQuery.get( url, function (result) {
            // falls keine Termine vorhanden sind, dann eine Hinweismeldung darstellen
            if (result == "NOK") {
              // Hinweis-Meldung mit Strasse und Hausnummer ergaenzen
              $("#no_dates span b").text($("#auto_street").val() + " " + $("#housenumbers option:selected").text());
              // Hinweis-Meldung einblenden
              $("#no_dates").slideDown();
            } else {
  						// href des Links setzen
  						$("#pdf_current_year").attr("href", "/fileadmin/cache/ELW_" + year + "_" + obj_id + ".pdf" + param);
  						// Box zum Jahreskalender (PDF und Link) einblenden
  						$("#year_links").slideDown();
  						// Kalenderwochen-Box einblenden
  						$("#weeks_search").slideDown();
              // Termine der aktuellen Woche anzeigen
              $("#show_dates").click();
            }

            // Ladebalken ausblenden
            $("#preloader_pdf").hide();
            // "Adresse aendern"-Link einblenden
            $("#edit_street").show();
            // Focus setzen
            $("#edit_street").focus();
					});
				}
				return false;
			}
		);

		$("#edit_street").click(
			function() {
        // Hinweis-Meldung ausblenden
        $("#no_dates").slideUp();
				// PDF und Listenansicht ausblenden
				$("#year_links").slideUp();
				// Kalenderwochen-Auswahl ausblenden
				$("#weeks_search").slideUp();
				// Ergebnis-Tabelle ausblenden
				$("#current_week").slideUp(1500);
				// Strasse und Hausnummer aktivieren
				$("#auto_street").removeAttr("disabled");
				$("#housenumbers").removeAttr("disabled");

				// Fokus in das Strassen-Feld setzen
				//$("#auto_street").focus();
				// Hausnummern-Selectbox leeren
				//document.address.housenumbers.length = 1;
				// "Adresse aendern"-Link ausblenden
				$(this).hide();
				// Suchen-Button anzeigen
				$("#show_weeks").show();
				// Ergebnis-Tabelle leeren (nur die Icons entfernen)
				$("td.icons").each(function(){
					$(this).html("");
				});
				return false;
			}
		);

		$("#plain_current_year").click(
			function() {
				var street = $("#auto_street").val();
				var obj_id = $("#housenumbers").val();
				// falls keine Hausnummer ausgewaehlt wurde
				if ( obj_id == "Hausnr." ) {
					$("#show_weeks").trigger("click");
				} else {
					var url = "/index.php?id=165&street=" + escape(street) + "&obj_id=" + obj_id;
					window.open(url, "plain_year");
				}
				return false;
			}
		);

		$("#show_dates").click(
			function() {
				if( $("#housenumbers").val() == "Hausnr." ) {
					$("#trash_error_msg").slideDown();
				} else {
					$("#preloader_calendarweeks").show();
					$("#calendar_weeks").attr("disabled", "true");
					$("#trash_error_msg").slideUp();
					var obj_id = $("#housenumbers").val();
					var week = $("#calendar_weeks").val();
					var url = "/cgi-elw/trash_calendar.cgi?action=get_dates&obj_id=" + obj_id + "&week=" + week;

					jQuery.get( url, function (result) {
						$("#trash_dates").html(result);
						$("#current_week").slideDown(1500);
						$("#preloader_calendarweeks").hide();
						$("#calendar_weeks").removeAttr("disabled");
					});
				}
				return false;
			}
		);
	}
);
