Function.prototype.bind = function(obj) {
    var method = this,
    temp = function() {
        return method.apply(obj, arguments);
    }; 
    return temp;
};

$(document).ready(function() {
	
	/* Ein- und Ausblenden des Sprachen-Overlays */
	$(".langwrap .languages").click(function(){
		$(this).parents(".langwrap").children(".langcontent").toggle();
	});
										 
	/* Hervorheben der Banner auf der Startseite */
		
	$(".start .homebox").bind("mouseenter",function(){	
		$(this).addClass("highlight");
	}).bind("mouseleave",function(){		
		$(this).removeClass("highlight");
	});
													 
	/* Ein- und Ausblenden der Suchtipps */	
	
	$(".tiptab .open").click(function(event){
		event.preventDefault();		
		$(this).parents(".tiptab").addClass("active");
		$(this).parents(".tiptab").children(".close").removeClass("hide");
		$(this).parents(".tiptab").parents(".tipwrap").children(".content").removeClass("hide");
		$(".apowrap").addClass("hide");
		$(".placewrap").addClass("hide");
	});
	
	$(".tiptab .close").click(function(event){
		event.preventDefault();		
		$(this).parents(".tiptab").removeClass("active");
		$(this).addClass("hide");
		$(this).parents(".tiptab").parents(".tipwrap").children(".content").addClass("hide");
		$(".placewrap").removeClass("hide");
		/*$(".IEfix").remove();*/
	});
	
	
	/* Ein- und Ausblenden der Suchtipps in Erweiterter Suche */	
	
	$(".tip .question").click(function(event){
		event.preventDefault();					
		$(".IEfix").remove();
		/* Ausblenden aller anderen evtl. offenen Suchtipps */
		var obj = $(this);		
		if (obj.parents(".tip").children(".tipwrap").hasClass('hide')) {					
			$(".tip a").each(function(i){ 
		    /* schliessen */
				if (!$(this).parents(".tip").children(".tipwrap").hasClass('hide')) {
					$(this).parents(".tip").children(".tipwrap").addClass("hide"); 
				}
			});
		}							
		/* Ausblenden aller anderen evtl. offenen Overlays */
		$(".catitem .choicewrap").each(function(i){
			if (!$(this).hasClass('hide')) {
				$(this).addClass("hide"); 
				$(this).parents(".catitem").children(".minus").addClass("hide");
				$(this).parents(".catitem").children(".plus").removeClass("hide");
			}
		});
	  /* aktuelles Element einblenden */
		$(this).parents(".tip").children(".tipwrap").removeClass("hide"); 
			/* IE6-Trick, um select-Boxen nicht ueber dem Overlay in der Erweiterten Suche liegen zu lassen */
			var height = $(this).parents(".tip").children(".tipwrap").children(".content").height()+12;
			var width = $(this).parents(".tip").children(".tipwrap").children(".content").width()-2;
			$(this).parents(".tip").children(".tipwrap").prepend("<iframe frameborder='0' class='IEfix' style='height:"+height+"px; width:"+width+"px; border:none; position:absolute; top:34px; left:-305px; '></iframe>");
	});
	
	$(".tiptab2 .close").click(function(event){
		event.preventDefault();		
		$(".IEfix").remove();
		$(this).parents(".tiptab2").parents(".tipwrap").addClass("hide");
	});
		
	/* ------------------ mit Ajax LocateMe/GeoIP holen -------------------------------- */
	$("#locateMe").click(function(event){
		var locateMeUrl='GeoIP/?format=xml'; 
		$.get(locateMeUrl, function(data){
			var geoipCity=$(data).find('city').text();
			if (geoipCity !=null && geoipCity!="")
				$("#where").val(geoipCity);
			else
				alert("Ihr Standort konnte nicht ermittelt werden");
		});		
	});		

	/* Ein- und Ausblenden der Top-Kategorie-Overlays in der Erweiterten Suche */
	
	$(".topcat .catitem").bind("mouseenter",function(){																						 
		$(this).css("cursor", "pointer");
	}).bind("mouseleave",function(){		
		$(this).css("cursor", "default");
	});
	
	var xyztop = 0;
	
	$(".topcat .catitem").click(function(event){
		if (xyztop == 0) {				
			$(".IEfix").remove();
			/* Ausblenden aller anderen evtl. offenen Suchtipps*/
			$(".tip a").each(function(i){
				if (!$(this).parents(".tip").children(".tipwrap").hasClass('hide')) {
					$(this).parents(".tip").children(".tipwrap").addClass("hide"); 
				}
			});						
			/* Ausblenden aller anderen evtl. offenen Overlays */
			$(".catitem .choicewrap").each(function(i){
				if (!$(this).hasClass('hide')) {
					$(this).addClass("hide"); 
					$(this).parents(".catitem").children(".minus").addClass("hide");
					$(this).parents(".catitem").children(".plus").removeClass("hide");
				}
			});
			/* Einblenden des Overlays */
			$(this).children(".choicewrap").removeClass("hide");
			/* IE6-Trick, um select-Boxen nicht ueber dem Overlay in der Erweiterten Suche liegen zu lassen */
			var height = $(this).children(".choicewrap").children(".content").height()+5;
			var width = $(this).children(".choicewrap").children(".content").width()-2;
			$(this).children(".choicewrap").prepend("<iframe frameborder='0' class='IEfix' style='height:"+height+"px; width:"+width+"px; border:none; position:absolute; top:3px; left:-4px;'></iframe>");
			$(this).children(".minus").removeClass("hide");
			$(this).children(".plus").addClass("hide");
		}
		xyztop = 1;
	});

	$(".topcat .catitem .choicewrap .content .close").click(function(event){
		event.preventDefault();	
		$(".IEfix").remove();
		$(this).parents(".content").parents(".choicewrap").addClass("hide");
		$(this).parents(".content").parents(".choicewrap").parents(".catitem").children(".minus").addClass("hide");
		$(this).parents(".content").parents(".choicewrap").parents(".catitem").children(".plus").removeClass("hide");
		xyztop = 0;
		event.stopPropagation();
	});
	
	$(".topcat .catitem .minus").click(function(event){
		event.preventDefault();	
		$(".topcat .catitem .choicewrap .content .close").trigger("click");
		xyztop = 0;
		event.stopPropagation();
	});
	
	$(".topcat .catitem .content table input").click(function(event){
		$('.subcat .catitem .choicewrap').empty();
	});

	
	/* ------------------ mit Ajax Sub-Kats holen -------------------------------- */
	$(".topcat .catitem .content .close").click(function(event){
		var grpkey = $("input:radio:checked[name='catgrp']").val();
		if (grpkey != "") {
			var catUrl='Catlist?grpkey=' + grpkey + ".*"; 
			$(document).ready(function(){
				$.ajax({
					type: "GET",
					url: catUrl,
					dataType: "xml",
					success: function(xml) {
					$('.subcat .catitem').empty();	
					var html = 
	                '<img src="img/btn-zoom-out.gif" alt="[ - ]"title="Liste schlie&szlig;en" class="togglebtn minus hide" />' +
	                '<img src="img/btn-zoom-in.gif" alt="[ + ]" title="Kategorie w&auml;hlen" class="togglebtn plus" />' +
					'<span id="subcatHeadline">Ausw&auml;hlen</span><br clear="all" />'+
					'<div class="choicewrap">'+
					'    <div class="content">'+
					'        <a href="#" class="close"><img src="img/btn-g-close.gif" alt="[ x ]" title="Schlie&szlig;en" /></a>'+
					'        <h4>Gewerbliche Kategorie Auswahl</h4>'+
					'           <div class="container">';
					var count1 = 1;
						$(xml).find('subtheme').each(function(){
							html += '<div id="grp' + count1 +'" class="main"><span><img src="img/btn-zoom-out.gif" alt="[-]" title="zuklappen" class="closebtn hide" /><img src="img/btn-zoom-in.gif" alt="[+]" title="aufklappen" class="openbtn" />' + $(this).attr('name') +'</span>';
							html += '<div class="rubricContent">';
							html += '<div class="rubric first"><input type="checkbox" id="cat'+ count1 + '-box0" name="checkAll" value="0" /><label for="cat'+ count1 +'-box0">alle markieren</label></div>';
							var count2 = 1;
							$(this).find('category').each(function(){
								html += '<div class="rubric"><input type="checkbox" id="cat' + count1 + '-box' + count2 + '" name="catkey" value="' + $(this).attr('id') +'|' + $(this).attr('name') + '" /><label for="cat'+ count1 +'-box'+ count2 +'">' + $(this).attr('name') +'</label></div>';
								count2 = count2 + 1;
							});
							html += '</div></div>';
							count1 = count1 + 1;
						});
					html += '</div></div></div>';
					$(".subcat .catitem").removeClass("empty");
					$(".subcat .catitem").append(html);
					/* Textfeld Hauptkategorie belegen */
					var headTxt = "maincat" + $("input:radio:checked[name='catgrp']").val() + "Txt";
					$(".topcat .catitem #topcatHeadline").empty();
					$(".topcat .catitem #topcatHeadline").append($("#"+headTxt).html());
					} //success
				}); //ajax
			});		
		} //endif
		else {
			$('.subcat .catitem').empty();
			$(".subcat .catitem").addClass("empty");
			var html = 
			'<img src="img/btn-zoom-out.gif" alt="[ - ]"title="Liste schlie&szlig;en" class="togglebtn minus hide" />'+
			'<img src="img/btn-zoom-in.gif" alt="[ + ]" title="Kategorie w&auml;hlen" class="togglebtn plus" />'+
			'Ausw&auml;hlen<br clear="all" />' +
			'<div class="choicewrap">'+
			'	<div class="content">'+
			'        <a href="#" class="close"><img src="img/btn-g-close.gif" alt="[ x ]" title="Schlie&szlig;en" /></a>'+
			'        <h4>Gewerbliche Kategorie Auswahl</h4>'+
			'           <p class="cat-msg">Bitte w&auml;hlen Sie erst eine Top-Kategorie!</p>' +
			'	</div>'+
			'</div>';
			$(".subcat .catitem").append(html);
			$(".topcat .catitem #topcatHeadline").empty();
			$(".topcat .catitem #topcatHeadline").append("Bitte w&auml;hlen Sie ...");
		}
		$(this).parents(".catitem").children(".choicewrap").parents(".catitem").children(".minus").addClass("hide");
		$(this).parents(".catitem").children(".choicewrap").parents(".catitem").children(".plus").removeClass("hide");
	});		
	
	/* dito als click-Event beim Button "zur Kategorieauswahl" */
	$(".tosubcat").click(function(event){
		event.preventDefault();	
		$(".topcat .catitem .choicewrap .content .close").trigger("click");
		event.stopPropagation();	
		$(".subcat .catitem").trigger("click");	
		event.stopPropagation();	
	});
	
	/* Ein- und Ausblenden der Sub-Kategorie-Overlays in der Erweiterten Suche */
	
	$(".subcat .catitem").bind("mouseenter",function(){																						 
		$(this).css("cursor", "pointer");
	}).bind("mouseleave",function(){		
		$(this).css("cursor", "default");
	});
	
	var xyzsub = 0;
	
	$(".subcat .catitem").live("click",function(event){
		if (xyzsub == 0) {				
			$(".IEfix").remove();
			/* Ausblenden aller anderen evtl. offenen Suchtipps*/
			$(".tip a").each(function(i){
				if (!$(this).parents(".tip").children(".tipwrap").hasClass('hide')) {
					$(this).parents(".tip").children(".tipwrap").addClass("hide"); 
				}
			});						
			/* Ausblenden aller anderen evtl. offenen Overlays */
			$(".catitem .choicewrap").each(function(i){
				if (!$(this).hasClass('hide')) {
					$(this).addClass("hide"); 
					$(this).parents(".catitem").children(".minus").addClass("hide");
					$(this).parents(".catitem").children(".plus").removeClass("hide");
				}
			});
			/* Einblenden des Overlays */
			$(".subcat .catitem .choicewrap").removeClass("hide");
			/* IE6-Trick, um select-Boxen nicht ueber dem Overlay in der Erweiterten Suche liegen zu lassen */
			var height = $(this).children(".choicewrap").children(".content").height()+5;
			var width = $(this).children(".choicewrap").children(".content").width()-2;
			$(this).children(".choicewrap").prepend("<iframe frameborder='0' class='IEfix' style='height:"+height+"px; width:"+width+"px; border:none; position:absolute; top:3px; left:-4px;'></iframe>");
			$(this).children(".minus").removeClass("hide");
			$(this).children(".plus").addClass("hide");
		}
		xyzsub = 1;
	});

	$(".subcat .catitem .choicewrap .content .close").live("click",function(event){
		event.preventDefault();	
		$(".IEfix").remove();
		$(this).parents(".content").parents(".choicewrap").addClass("hide");
		$(this).parents(".content").parents(".choicewrap").parents(".catitem").children(".minus").addClass("hide");
		$(this).parents(".content").parents(".choicewrap").parents(".catitem").children(".plus").removeClass("hide");
		xyzsub = 0;
		event.stopPropagation();
	});
	
	$(".subcat .catitem .minus").live("click",function(event){
		event.preventDefault();	
		$(".subcat .catitem .choicewrap .content .close").trigger("click");
	});
	
	/* alle Subkategorie-Checkboxen checken */
	$("input[name='checkAll']").live("click",function(){
	      if($(this).attr("checked")){
	        $(this).parents(".rubricContent")
	               .find("input:checkbox")
	               .attr("checked","checked");
	      }
	      else{
	        $(this).parents(".rubricContent")
	               .find("input:checkbox")
	               .attr("checked","");
	      }
	    });

	/* ausgewaehlte Subkategorie in der Headline anzeigen */
	$(".rubric input").live("click",function(event){
		if($(this).attr("checked")){
			var newHeadline = $(this).parents(".rubric").children("label").html();
			var alleMarkieren = $("input[name='checkAll']").parents(".rubric").children("label").html();
			if (newHeadline == alleMarkieren) newHeadline = $(this).parents(".rubric").parents(".main").children("span").text();
			$("#subcatHeadline").empty();
			$("#subcatHeadline").append(newHeadline);
		} else {
			$(".subcat catitem").addClass("empty");
			$("#subcatHeadline").empty();
			$("#subcatHeadline").append("Ausw&auml;hlen");			
		}
	});
	
	
	/* Umschalten der Filter in der Erweiterten Suche */
	$("#check3").click(function(event){
		if($("#check3").is(':checked')){
			$("#check4:checkbox").val(["2,3"]);;
		}
	});
	$("#check4").click(function(event){
		if($("#check4").is(':checked')){
			$("#check3:checkbox").val(["1"]);;
		}
	});
	
	/* Ein- und Ausblenden der Kategorien im Unterkategorie-Overlay der Erweiterten Suche */
	
	$(".container .main span img").bind("mouseenter",function(){																					 
		$(this).css("cursor", "pointer");
	}).bind("mouseleave",function(){		
		$(this).css("cursor", "default");
	});
	
	$(".container .main span img.openbtn").click(function(event){
		$(this).parents("span").parents(".main").removeClass("closed");
		$(this).parents("span").parents(".main").addClass("open");
		$(this).addClass("hide");
		$(this).parents("span").children(".closebtn").removeClass("hide");
	});
	
	$(".container .main span img.closebtn").click(function(event){
		$(this).parents("span").parents(".main").removeClass("open");
		$(this).parents("span").parents(".main").addClass("closed");
		$(this).addClass("hide");
		$(this).parents("span").children(".openbtn").removeClass("hide");
	});
	
	/* Umschalten der Straße/Markante Punkte Eingabe */
	
	$(".change .link1").click(function(event){
		$(this).removeClass("switchlink");
		$(this).parents(".change").children(".link2").addClass("switchlink");
		$(this).parents(".change").children(".similar").removeClass("hide");
		$(this).parents(".change").children("#street").removeClass("hide");
		$(this).parents(".change").children("#landmarks").addClass("hide");
		$(this).parents(".change").children(".notice").addClass("hide");
		$(".change2").removeClass("hide");
	});
	
	$(".change .link2").click(function(event){
		if ($('#place').val()=='' && $('#plz').val()==''){
			$(this).parents(".change").children(".notice").removeClass("hide");
		}
		else{
			var poiUrl='PoiInfo?ort=' + escape($('#place').val()) + '&plz=' + $('#plz').val();
			$.get(poiUrl, function(data){
				$('#landmarks').empty();				
				var html = '';
				$(data).find('poi').each(function(){
					var $entry = $(this);
					var coords = $entry.find('coords');
					html += '<option value="' 
						  + '(' + coords.find('x').text()
						  + '|' + coords.find('y').text()						  
						  + '|' +$entry.find('name').text()
						  + ')">'+ unescape($entry.find('name').text()).replace(/\+/g,' ')
						  + '</option>';
				});//each poi

				if (html == ''){
					$(".change").children(".notice").removeClass("hide");
					$(".change").children(".link2").addClass("switchlink");
					$(".change").children(".similar").removeClass("hide");
					$("#street").removeClass("hide");
					$("#landmarks").addClass("hide");
					$(".change .link2").removeClass("switchlink");
					$(".change2").removeClass("hide");
				}
				else{
					if (document.getElementById('radius').selectedIndex==0) document.getElementById('radius').selectedIndex = 3;
					$("#landmarks").append($(html));
				}
			});//get

			$(this).removeClass("switchlink");
			$(this).parents(".change").children(".link1").addClass("switchlink");
			$(this).parents(".change").children(".similar").addClass("hide");
			$(this).parents(".change").children("#street").addClass("hide");
			$(this).parents(".change").children("#landmarks").removeClass("hide");
			$(this).parents(".change").children(".notice").addClass("hide");
			$(".change2").addClass("hide");
		}
	});	
	
	
	
	/* Ein- und Ausblenden der Overlays im Kartenmenue */
	
	$("li .arrow").click(function(event){
		event.preventDefault();		
		$(this).parents("li").children(".menuewrap").removeClass("hide");
	});
	$(".menuewrap .tab .close").click(function(event){
		event.preventDefault();		
		$(this).parents(".tab").parents(".menuewrap").addClass("hide");
	});
	$(".menuewrap .content .next").click(function(event){
		event.preventDefault();		
		$(this).parents(".content").parents(".menuewrap").addClass("hide");
	});
		
	
	/* Ein- und Ausblenden des Overlays in der Meldung der Trefferliste */
	
	$("#msg-normal .overlay").click(function(event){
		event.preventDefault();		
		$(this).parents("div").children(".alternativwrap").removeClass("hide");
	});
	$(".alternativwrap .alttab .close").click(function(event){
		event.preventDefault();		
		$(this).parents(".alttab").parents(".alternativwrap").addClass("hide");
	});
	
	
	/* Ein- und Ausblenden der Kategorien in der Trefferliste */
	
	$(".cattip .all").click(function(event){
		event.preventDefault();		
		$(this).parents(".cattip").children(".choicewrap").removeClass("hide");
		$(this).parents(".cattip").children(".choicewrap").children(".tiptab").children(".close").removeClass("hide");
		$(".placewrap").addClass("hide");
	});
	
	$(".choicewrap .tiptab .close").click(function(event){
		event.preventDefault();		
		$(this).addClass("hide");
		$(this).parents(".tiptab").parents(".choicewrap").addClass("hide");
		$(".placewrap").removeClass("hide");
	});
	
	
	/* Ein- und Ausblenden des Umkreis-Overlays in der Trefferliste */
	
	$("th .citycenter").click(function(event){
		event.preventDefault();		
		$(this).parents("th").children(".radiuswrap").removeClass("hide");
		$(this).parents("th").children(".radiuswrap").children(".content").children(".cc-hl").removeClass("hide");
		$(this).parents("th").children(".radiuswrap").children(".content").children(".ad-hl").addClass("hide");
		$(this).parents("th").children(".radiuswrap").children(".content").children("div").children("#radius-street").addClass("hide");
		$(this).parents("th").children(".radiuswrap").children(".content").children("div").children("#radius-nr").addClass("hide");
	});
	
	$("th .address").click(function(event){
		event.preventDefault();		
		$(this).parents("th").children(".radiuswrap").removeClass("hide");
		$(this).parents("th").children(".radiuswrap").children(".content").children(".cc-hl").addClass("hide");
		$(this).parents("th").children(".radiuswrap").children(".content").children(".ad-hl").removeClass("hide");
		$(this).parents("th").children(".radiuswrap").children(".content").children("div").children("#radius-street").removeClass("hide");
		$(this).parents("th").children(".radiuswrap").children(".content").children("div").children("#radius-nr").removeClass("hide");
	});
	
	$(".radiuswrap .content .close").click(function(event){
		event.preventDefault();		
		$(this).parents(".content").parents(".radiuswrap").addClass("hide");
	});
	
	/* Ein- und Ausblenden der Ortsauswahl */
	
	$(".placewrap .box .btn").click(function(event){
		$(this).parents(".box").parents(".placewrap").children(".content").toggle();
	});
			
	/* Ein- und Ausblenden des Meinungsformulars in der Trefferliste */
	
	$(".quest .right .open").click(function(event){
		$(this).parents(".right").parents(".quest").children(".more").removeClass("hide");
		$(this).parents(".right").parents(".quest").parents("#opinion").children(".descr").children(".more").removeClass("hide");
	});
	$(".quest .more .send").click(function(event){
		event.preventDefault();
		$(this).parents(".more").addClass("hide");
		$(this).parents(".more").parents(".quest").parents("#opinion").children(".descr").children(".more").addClass("hide");
		document.forms.a12003.submit();
	});
	
	
	/* Highlighten der Trefferlisten-Eintraege bei Hover */
	
	$(".entry").bind("mouseenter",function(){	
		$(this).addClass("bg-hover");
	}).bind("mouseleave",function(){		
		$(this).removeClass("bg-hover");
	});
	
	
	/* Ein- und Ausblenden der Detailvorschau in der Trefferliste */
	
	$(".entry").bind("mouseenter", function(e){
		if (!this.timer){	
			this.openPreview = function(){
				$(this).children().children(".dtl-preview").removeClass("hide");
				$(this).children().children().children(".col1").children(".short").addClass("hide");
				$(this).children().children().children(".col1").children(".long").removeClass("hide");
				// CR 5623 Update der Detailvoransichten
				showMiniMap($(this).children().children(".dtl-preview").attr("id").replace("i",""));
			};
			this.timer = setTimeout(this.openPreview.bind(this), 800);	
			
	}
	});
	
	$(".entry").bind("mouseleave", function(e){
		if (this.timer){
			clearTimeout(this.timer);
			this.timer=false;
		}
		$(this).children().children(".dtl-preview").addClass("hide");
		$(this).children().children().children(".col1").children(".short").removeClass("hide");
		$(this).children().children().children(".col1").children(".long").addClass("hide");
	});
	
	
	/* Ein- und Ausblenden des Weiterleiten-Overlays in der Trefferliste */
	
	$(".tools .last .send").bind("mouseenter" , function(event){
		event.preventDefault();
		$(this).parents(".last").children(".sendwrap").removeClass("hide");
	});
	
	$(".sendwrap .content").bind("mouseleave", function(event){
		event.preventDefault();
		$(this).parents(".sendwrap").addClass("hide");
	});
	
	/* Hervorheben der Service- und Downloadeintraege */
		
	$(".service-container .block-left, .service-container .block-right").bind("mouseenter",function(){	
		$(this).addClass("highlight");
	}).bind("mouseleave",function(){		
		$(this).removeClass("highlight");
	});
	
	
	/* Ein- und Ausblenden der Nutzungshinweise der Apotheken-Notdienste */
	
	$(".aponet").click(function(event){
		event.preventDefault();
		$(this).parents("li").children(".apowrap").removeClass("hide");
		$(".tipwrap").children(".content").addClass("hide");
		$(".tipwrap").children(".tiptab").removeClass("active");
		$(".tipwrap").children(".tiptab").children(".close").addClass("hide");
	});
	
	$(".apowrap .content .close").click(function(event){
		event.preventDefault();
		$(this).parents(".content").parents(".apowrap").addClass("hide");
	});
	
	//allow only numeric values, backspace, arrows, brackets, etc. in inverse search input field
	$("#searchbox #number").bind("keypress", function(event){
		var cehtml = navigator.userAgent.toLowerCase().match("ce-html") ? true : false;
		if (!cehtml) {
			try {
				var unicode = event.charCode ? event.charCode : event.keyCode;
				if (unicode == 8 || unicode == 32  || unicode == 35  || unicode == 36
					|| unicode == 37  || unicode == 39 || unicode == 40 || unicode == 41
					|| unicode == 43 || (unicode >= 45 && unicode <= 57) || unicode == 127) {
					return true;
				} else {
					return false;
				} 
			} catch (e) {
				return true;
			}
		} else  return true;
	});
	
	

});
