/* German initialisation for the jQuery UI date picker plugin. */
/* Written by Milian Wolff (mail@milianw.de). */
jQuery( function($) {
	$.datepicker.regional['de'] = {
		closeText :'schließen',
		prevText :'&#x3c;zurück',
		nextText :'Vor&#x3e;',
		currentText :'heute',
		monthNames : [ 'Januar', 'Februar', 'M&auml;rz', 'April', 'Mai', 'Juni',
				'Juli', 'August', 'September', 'Oktober', 'November',
				'Dezember' ],
		monthNamesShort : [ 'Jan', 'Feb', 'M&auml;r', 'Apr', 'Mai', 'Jun', 'Jul',
				'Aug', 'Sep', 'Okt', 'Nov', 'Dez' ],
		dayNames : [ 'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag',
				'Freitag', 'Samstag' ],
		dayNamesShort : [ 'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
		dayNamesMin : [ 'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
		weekHeader :'Wo',
		dateFormat :'dd.mm.yy',
		firstDay :1,
		isRTL :false,
		showMonthAfterYear :false,
		yearSuffix :''
	};
	$.datepicker.setDefaults($.datepicker.regional['de']);
});

//get get parameters as json
$.extend({
  getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
      hash = hashes[i].split('=');
      vars.push(hash[0]);
      vars[hash[0]] = hash[1];
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  }
});

jQuery.fn.getCheckboxVal = function(){ 
    var vals = []; 
    var i = 0; 
    this.each(function(){ 
        vals[i++] = jQuery(this).val(); 
    }); 
    return vals; 
} 

var dp_von;
var dp_bis;
var plz_liste = getCity("6");



function add_zero(num) {
	if(num < 10) {
		return "0" + num;
	} else {
		return "" + num;
	}
}

function getCity(zip) {
	var result = [];
	var location_data;
	var rx = /\d+/;
	var req_url = "/cms/tourismussuite/de/plzOrtSuche.html?aktion=suchen&land=1&plz=" + zip;
	if(!rx.test(zip)) {
		req_url = "/cms/tourismussuite/de/plzOrtSuche.html?aktion=suchen&land=1&ort=" + zip;
	}
	var loc_str = jQuery.get(req_url,
			function(data) {
				location_data = eval("(" + data + ")");
				
				jQuery.each(location_data, function(key, val) {
					var plzort = key + " " + val;
					result.push(plzort);
				});
			}
	);
	
	return (result.sort());
}


function displayLayer(obj, evt) {
	// obj.css("top", evt.clientY);
	// obj.css("left", evt.clientX);
	obj.fadeIn();
}

function saveLayerState(obj) {
	var inputs_checked = obj.find("input:checked");
	var layer_checked = [];
	jQuery.each(inputs_checked, function(i, el) {
		layer_checked.push($(el).attr("id"));
	});
	return layer_checked;
}

function hideOtherLayers() {
	$(".frm_button_cancel").each( function() {
		if ($(this).parents(".suche_layer").css("display") == "block") {
			$(this).trigger("click");
		}
	});
}

function saveShortSearchToCookie() {
	var wann_vals = $("#suche_wann_layer input[name='direktwahl']:checked").getCheckboxVal().join(",");
	var was_vals = $("#suche_was_layer input[name='kategorie']:checked").getCheckboxVal().join(",");
	var wo_vals = $("#suche_wo_layer input[name='bezirk']:checked").getCheckboxVal().join(",");
	var umkreis_vals = $("#suche_umkreis_layer input[name='umkreis']:checked").getCheckboxVal().join(",");
	
	document.cookie = "wann=" + wann_vals + ";expires=Sat Dec 31 2022 00:00:00 GMT+0100";
	document.cookie = "was=" + was_vals + ";expires=Sat Dec 31 2022 00:00:00 GMT+0100";
	document.cookie = "wo=" + wo_vals + ";expires=Sat Dec 31 2022 00:00:00 GMT+0100";
	document.cookie = "umkreis=" + umkreis_vals + ";expires=Sat Dec 31 2022 00:00:00 GMT+0100";
	
}

function saveLongSearchToCookie() {
	saveShortSearchToCookie();
	
	var datum_von_val = $("#datum1").val();
	var datum_bis_val = $("#datum2").val();
	var stichwort_val = $("#stichwort").val();
	var plz_von_val = $("#plz_von").val();
	var plz_bis_val = $("#plz_bis").val();
	var use_cookie = $("#setcookie_long").attr("checked");
	
	document.cookie = "datum_von=" + datum_von_val + ";expires=Sat Dec 31 2022 00:00:00 GMT+0100";
	document.cookie = "datum_bis=" + datum_bis_val + ";expires=Sat Dec 31 2022 00:00:00 GMT+0100";
	document.cookie = "stichwort=" + stichwort_val + ";expires=Sat Dec 31 2022 00:00:00 GMT+0100";
	document.cookie = "plz_von=" + plz_von_val + ";expires=Sat Dec 31 2022 00:00:00 GMT+0100";
	document.cookie = "plz_bis=" + plz_bis_val + ";expires=Sat Dec 31 2022 00:00:00 GMT+0100";
	document.cookie = "use_cookie=" + use_cookie + ";expires=Sat Dec 31 2022 00:00:00 GMT+0100";
}

function deleteShortSearchCookies() {
	document.cookie = "wann=nope";
	document.cookie = "was=nope";
	document.cookie = "wo=nope";
	document.cookie = "umkreis=nope";
}

function deleteLongSearchCookies() {
	deleteShortSearchCookies();
	document.cookie = "datum_von=nope";
	document.cookie = "datum_bis=nope";
	document.cookie = "stichwort=nope";
	document.cookie = "plz_von=nope";
	document.cookie = "plz_bis=nope";
	document.cookie = "use_cookie=nope";
}

function getCookie(c_name) {
	if (document.cookie.length>0) {
	  c_start=document.cookie.indexOf(c_name + "=");
	  if (c_start!=-1) {
		    c_start=c_start + c_name.length+1;
		    c_end=document.cookie.indexOf(";",c_start);
		    if (c_end==-1) c_end=document.cookie.length;
		    return unescape(document.cookie.substring(c_start,c_end));
	    }
	  }
	return "";
}

function getSavedCookies() {
	var wann_vals = getCookie("wann");
	var was_vals = getCookie("was");
	var wo_vals = getCookie("wo");
	var umkreis_vals = getCookie("umkreis");
	var datum_von_val = getCookie("datum_von");
	var datum_bis_val = getCookie("datum_bis");
	var stichwort_val = getCookie("stichwort");
	var plz_von_val = getCookie("plz_von");
	var plz_bis_val = getCookie("plz_bis");
	var use_cookie = getCookie("use_cookie");
	
	if(wann_vals != "nope" && wann_vals != "") {
		setVals("dir", wann_vals);
		$("#suche_wann_layer .frm_button_select").trigger("click");
	}
	
	if(was_vals != "nope" && was_vals != "") {
		$("#suche_was_layer .alle").attr("checked", false);
		setVals("kat", was_vals);
		$("#suche_was_layer .frm_button_select").trigger("click");
	}
	
	if(wo_vals != "nope" && wo_vals != "") {
		$("#suche_wo_layer .alle").attr("checked", false);
		setVals("reg", wo_vals);
		$("#suche_wo_layer .frm_button_select").trigger("click");
	}
	
	if(umkreis_vals != "nope" && umkreis_vals != "") {
		setVals("umkreis", umkreis_vals);
		$("#suche_umkreis_layer .frm_button_select").trigger("click");
	}
	
	if(datum_von_val != "nope" && datum_von_val != "") {
		var datum_von = new Date(parseInt(datum_von_val, 10));
		dp_von.datepicker('setDate', datum_von);
		$("#datum1").val(datum_von_val);
		$("#datum_von").val(add_zero(datum_von.getDate()) + "." + add_zero(datum_von.getMonth() + 1) + "." + datum_von.getFullYear());
		$("#setcookie_long").attr("checked", true);
		$("#suche_wann").attr("disabled", true);
		$("#suche_wann_layer input").attr("disabled", true);
		$("#suche_wann").css("background-color", "#D6D6D6");
	}
	
	if(datum_bis_val != "nope" && datum_bis_val != "") {
		var datum_bis = new Date(parseInt(datum_bis_val, 10));
		dp_bis.datepicker('setDate', datum_bis);
		$("#datum2").val(datum_bis_val);
		$("#datum_bis").val(add_zero(datum_bis.getDate()) + "." + add_zero(datum_bis.getMonth() + 1) + "." + datum_bis.getFullYear());
		$("#setcookie_long").attr("checked", true);
		$("#suche_wann").attr("disabled", true);
		$("#suche_wann_layer input").attr("disabled", true);
		$("#suche_wann").css("background-color", "#D6D6D6");
	}
	
	if(stichwort_val != "nope" && stichwort_val != "") {
		$("#stichwort").val(stichwort_val);
		$("#setcookie_long").attr("checked", true);
	}
	
	if(plz_von_val != "nope" && plz_von_val != "") {
		$("#plz_von").val(plz_von_val);
		$("#setcookie_long").attr("checked", true);
	}
	
	if(plz_bis_val != "nope" && plz_bis_val != "") {
		$("#plz_bis").val(plz_bis_val);
		$("#setcookie_long").attr("checked", true);
	}
	
	if(use_cookie != "nope" && use_cookie != "") {
		$("#setcookie_long").attr("checked", true);
	}
}

function setVals(field, vals) {
	if(vals != "" && vals != undefined && vals != "nope") {
		var vals_arr = vals.split(",");
		jQuery.each(vals_arr, function(index, val) {
			$("#" + field + "_" + val).attr("checked", true);
		});
		$("#setcookie").attr("checked", true);
	}
}

var layer_state = [];
var today = new Date();
var tomorrow = new Date(today.getTime() + 86400000);

$(document).ready( function() {
	$(".suche_region_kategorie #kat_0").addClass("alle");

	// Wochentag auswerten und vorbelegen
		var weekday = today.getDay();
		if (weekday >= 2 && weekday <= 4) {
			$("#dir_1").trigger("click");
			$("#suche_wann").val($("#dir_1_hidden").val());
		} else if (weekday == 5 || weekday == 6) {
			$("#dir_5").trigger("click");
			$("#suche_wann").val($("#dir_5_hidden").val());
		} else if (weekday == 1) {
			$("#dir_3").trigger("click");
			$("#suche_wann").val($("#dir_3_hidden").val());
		} else if (weekday == 0) {
			$("#dir_4").trigger("click");
			$("#suche_wann").val($("#dir_4_hidden").val());
		}

		// Andere Felder vorbelegen
		var alle_kategorien = $("#kat_0_hidden").val();
		$("#suche_was").val(alle_kategorien);

		var alle_orte = $("#reg_0_hidden").val();
		$("#suche_wo").val(alle_orte);
		$("#suche_umkreis").attr("disabled", true);
		$("#suche_umkreis_layer input").attr("disabled", true);
		$("#suche_umkreis").css("background-color", "#d6d6d6");
		

		$("#suche_umkreis_layer #umkreis_5").trigger("click");
		var umkreis = $("#umkreis_5_hidden").val();
		$("#suche_umkreis").val(umkreis);

		// Checkbox-Behandlung
		$(".suche_layer input:checkbox")
				.click( function() {
					if (!$(this).hasClass("alle")) {
						// Wenn etwas anderes als "Alle ..." gewaehlt, "Alle
						// ..." abwaehlen
						$(this).parents(".suche_layer").find("input.alle")
								.attr("checked", false);
					} else {
						// Wenn "Alle ..." gewaehlt, alle anderen abwaehlen
						$(this).parents(".suche_layer").find(
								"input:checkbox[class!='alle']").attr(
								"checked", false);
					}
				});

		// Such-Layer anzeigen
		$("#suche_wann").click( function(e) {
			hideOtherLayers();
			layer_state = saveLayerState($("#suche_wann_layer"));
			displayLayer($("#suche_wann_layer"), e);
		});

		$("#suche_was").click( function(e) {
			hideOtherLayers();
			layer_state = saveLayerState($("#suche_was_layer"));
			displayLayer($("#suche_was_layer"), e);
		});

		$("#suche_wo").click( function(e) {
			hideOtherLayers();
			layer_state = saveLayerState($("#suche_wo_layer"));
			displayLayer($("#suche_wo_layer"), e);
		});

		$("#suche_umkreis").click( function(e) {
			hideOtherLayers();
			layer_state = saveLayerState($("#suche_umkreis_layer"));
			displayLayer($("#suche_umkreis_layer"), e);
		});

		// Buttons in Layer
		$(".frm_button_cancel").click( function() {
			var layer = $(this).parents(".suche_layer")
			layer.fadeOut();
			// Auswahl loeschen
				layer.find("input").attr("checked", false);
				jQuery.each(layer_state, function(i, id) {
					$("#" + id).attr("checked", true);
				});
				return false;
			});

		$(".frm_button_select").click( function() {
			var layer = $(this).parents(".suche_layer");
			var field = $("#" + layer.attr("id").replace(/_layer/, ""));
			layer.fadeOut();

			var selected_inputs = layer.find("input:checked");
			var selected_vals = [];
			jQuery.each(selected_inputs, ( function(i, el) {
				el = $(el).attr("id") + "_hidden";
				selected_vals.push($("#" + el).val());
			}));
			
			// Wenn nichts gewaehlt, "Alle ..." auswaehlen
			if(selected_inputs.length == 0) {
				var alle_id = $(this).parents(".suche_layer").find(".alle").attr("id");
				$("#" + alle_id).attr("checked", true);
				selected_vals.push($("#" + alle_id + "_hidden").val());
			}
			
			var selected_vals_string = selected_vals.join(", ");
			field.val(selected_vals_string);
			if($("#setcookie").attr("checked")) {
				saveShortSearchToCookie();
			}
			
			// Wenn bei Regionssuche "Alle Regionen" oder mehr als eine Region gewaehlt, Umkreissuche deaktivieren
			if($(this).parents("#suche_wo_layer").length != 0) {
				if(selected_vals.length > 1 || selected_vals[0] == "Alle Regionen") {
					$("#suche_umkreis").attr("disabled", true);
					$("#suche_umkreis_layer input").attr("disabled", true);
					$("#suche_umkreis").css("background-color", "#d6d6d6");
				} else {
					$("#suche_umkreis").attr("disabled", false);
					$("#suche_umkreis_layer input").attr("disabled", false);
					$("#suche_umkreis").css("background-color", "#ffffff");
				}
			}
			
			return false;
		});

		dp_von = $("#suche_von").datepicker(
				{
					minDate: today,
					numberOfMonths: 3,
					onSelect: function() {
						var next_day = new Date($(this).datepicker('getDate').getTime() + 86400000);
						dp_bis.datepicker('setDate', next_day);
						dp_bis.datepicker('option', 'minDate', next_day);
						$("#suche_wann").attr("disabled", true);
						$("#suche_wann_layer input").attr("disabled", true);
						$("#suche_wann").css("background-color", "#D6D6D6");

						$("#datum1").val($(this).datepicker('getDate').getTime());
						$("#datum2").val(dp_bis.datepicker('getDate').getTime());
						if($("#setcookie_long").attr("checked")) {
							saveLongSearchToCookie();
						}
					}
				});
		//dp_von.datepicker('setDate', today);
		dp_bis = $("#suche_bis").datepicker({
			minDate: today,
			numberOfMonths: 3,
			onSelect: function() {
				$("#datum2").val($(this).datepicker('getDate').getTime());
			}
		});
		//dp_bis.datepicker('setDate', tomorrow);
		
		$("#setcookie").click(function() {
			if($(this).attr("checked") == true) {
				saveShortSearchToCookie();
			} else {
				deleteShortSearchCookies();
			}
		});
		
		$("#setcookie_long").click(function() {
			if($(this).attr("checked") == true) {
				saveLongSearchToCookie();
			} else {
				deleteLongSearchCookies();
			}
		});
		
		$("#frm_button_submit").click(function() {
			saveLongSearchToCookie();
		});
		
		$("#stichwort, #plz_von, #plz_bis").change(function() {
			if($("#setcookie_long").attr("checked")) {
				saveLongSearchToCookie();
			}
		});
		
		$("#plz_von, #plz_bis").focus(function() {
			if($(this).val() == "PLZ" || $(this).val() == "ZIP") {
				$(this).val("");
			}
		});
		
		$("#plz_von, #plz_bis").autocomplete({
			source: plz_liste,
			minLength: 2,
			select: function(event, ui) {
				ui.item.value = ui.item.value.split(" ")[0];
			}
		});
		
		$("#plz_von, #plz_bis").keydown(function() {
			if($(this).val().length == 1) {
				plz_liste = getCity($(this).val().substring(0,1));
				$("#plz_von").autocomplete('option', 'source', plz_liste);
				$("#plz_bis").autocomplete('option', 'source', plz_liste);
			}
		});
		
		$(".seitebl > a").click(function () {
			saveLongSearchToCookie();
		});
		
		$("#suche_von").blur(function() {
			var next_day = new Date($(this).datepicker('getDate').getTime() + 86400000);
      dp_bis.datepicker('setDate', next_day);
      dp_bis.datepicker('option', 'minDate', next_day);
      $("#suche_wann").attr("disabled", true);
      $("#suche_wann_layer input").attr("disabled", true);
      $("#suche_wann").css("background-color", "#D6D6D6");

      $("#datum1").val($(this).datepicker('getDate').getTime());
      $("#datum2").val(dp_bis.datepicker('getDate').getTime());
			saveLongSearchToCookie();
		});
		
		$("#suche_bis").blur(function() {
			$("#datum2").val($(this).datepicker('getDate').getTime());
		});
		
		var clearedEmail = false
		
		$("[name=email]").click(function() {
			if(!clearedEmail) {
				$(this).val("");
				clearedEmail = true;
			}
		});
		
		getSavedCookies();
		
		var use_cookie = getCookie("use_cookie");
		if (use_cookie != "true") {
			deleteLongSearchCookies();
			$("#setcookie_long").attr("checked", false)
			$("#setcookie").attr("checked", false)
		};
		
		/*
		 * $("#content").click(function(e) {
		 * if(!$(e.currentTarget).hasClass("fake_select")) {
		 * $(".suche_layer").hide(); } });
		 */
	});
