var map, manager;
var centerLatitude = 48.19800212, centerLongitude = 15.76196289, startZoom = 8;
var ziele = [];
var TopAusflugsziele=[];
var TopAusflugszieleText=[];
var qs; // querystring

var Router;// = new GDirections();
var RouterPoly;
var RouterAddr = [];  //adrresen für router
//GEvent.addListener(Router, "load", onGDirectionsLoad);
//GEvent.addListener(Router, "error", function(msg){alert(msg)});

function RouterStarten(lat, lng, startaddr){
	//Router.clear()
	document.getElementById("Route").innerHTML = "calculating Route...";
	if(RouterPoly)  map.removeOverlay(RouterPoly);
	RouterAddr=[];
	RouterAddr.push(startaddr);
	RouterAddr.push(lat + "," + lng);
	Router.loadFromWaypoints(RouterAddr, {"getPolyline":true, "getSteps":true});

}

function onGDirectionsLoad(){ 
	document.getElementById("Route").innerHTML = "";
	RouterPoly = Router.getPolyline()
	map.addOverlay(RouterPoly);
	document.getElementById("Route").innerHTML = '<div class="step">Your Startingaddress: '+ RouterAddr[0] +'</div>';
	var  a = Router.getNumRoutes()
	 for (i=0; i<a; i++){
	 	var r = Router.getRoute(i)
		for (j=0; j<r.getNumSteps(); j++) {
			var stepel = document.createElement("div");
			stepel.className = "step";
			stepel.innerHTML = r.getStep(j).getDescriptionHtml();
			stepel.LatLng  = r.getStep(j).getLatLng();
			stepel.onclick = function(e){map.setZoom(15); map.panTo(this.LatLng)};
			stepel.onmouseover = function(e){this.className += " over"};
			stepel.onmouseout = function(e){this.className = "step"};
			
			document.getElementById("Route").appendChild(stepel);
		}
	 }
	
	self.location.href='#RouteTop'
	 
}
		
		

function MerkerInfoWindow(){
	var marker  = arguments[0]
	var tab = (arguments.length>0)?arguments[1]:0;
	if(marker.isHidden()) marker.show();
	var tabs = []
	tabs.push(new GInfoWindowTab("Info", TopAusflugszieleText[marker.nummer]));
	textR = 'Please insert  <br>your Startingaddress:<div style="padding-top:5px;"><input type="text" name="adresse" onchange="RouterStarten('+marker.getLatLng().lat()+','+marker.getLatLng().lng()+',this.value)" /> <a href="#RouteTop">calculating Route</a></div>'
	//tabs.push(new GInfoWindowTab("Route", textR));
	marker.openInfoWindowTabsHtml(tabs,{selectedTab:tab});
	return false;
}

function createMarkerClickHandler(marker, text) {
	return function() { MerkerInfoWindow(marker)};
}


//function infoBallon(i){TopAusflugsziele[i].openInfoWindow(TopAusflugszieleText[i]);}

function createMarker(pointData) {
	if (pointData.latitude){
		var latlng = new GLatLng(pointData.latitude, pointData.longitude);
		var icon = new GIcon();
		
		
			
		icon.image = 'img/karte-icon-1.png';
		icon.shadow = 'img/karte/schatten.png';
		icon.iconSize = new GSize(23, 23);
		//icon.shadowSize = new GSize(65, 60);
		icon.iconAnchor = new GPoint(13, 43);
		icon.infoWindowAnchor = new GPoint(17, 7);
		opts = {"icon": icon,"clickable": true,"draggable":true};
		var marker = new GMarker(latlng, opts);
		if(marker){
			marker.nummer = parseInt(pointData.nummer)
			marker.kat = parseInt(pointData.kat)
			marker.disableDragging()
			
			var txt1 = '<div class="blase kat-1"><h1>' + pointData.name + '</h1>' + pointData.kontakt + '<br><a href="default.asp?tt=CONVENT_E_R2&amp;betrid=' + pointData.mcfid + '&amp;th=' + pointData.typ +'" ><br>more Information&nbsp;&raquo;</a></div>';
			GEvent.addListener(marker, "mouseover", function() {
     	 marker.setImage('img/karte-icon-2.png');
			});
			GEvent.addListener(marker, "mouseout", function() {
      	marker.setImage('img/karte-icon-1.png');
      });  
			var handler = createMarkerClickHandler(marker, txt1);
			GEvent.addListener(marker, "click", handler);
			TopAusflugsziele[marker.nummer] = marker;
			map.addOverlay(TopAusflugsziele[marker.nummer] );
			TopAusflugsziele[marker.nummer].hide();
			TopAusflugszieleText[marker.nummer] = txt1;
		}
		return marker;
	}
}

function GrenzeLaden(){
	var aj = new Ajax();
	aj.url = "js/noegrenze.js";
	aj.onSuccess = function(txt){eval(txt);};
	aj.onError = function(msg){};
	aj.doRequest();
}

function KarteInit() {
	
	if(!map){
		map = new GMap(document.getElementById("karte"));
		GEvent.addListener(map, "load", function(){
			//var BlaseRE = /taid=(\d{1,2})/g;
			//BlaseTest = BlaseRE.exec(window.location.search);
			//if(BlaseTest) window.setTimeout("infoBallon(" + BlaseTest[1]+ ")", 5000)
			
			window.setTimeout("GrenzeLaden()", 2000)
		});
		map.addControl(new GLargeMapControl());
		map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
		map.addControl(new GMapTypeControl());
		map.enableContinuousZoom()
		map.enableDoubleClickZoom();
		
		Router = new GDirections();
		GEvent.addListener(Router, "load", onGDirectionsLoad);
		GEvent.addListener(Router, "error", function(err){
			//alert(err.toString())
			switch(Router.getStatus().code){
				case 601:
					alert("No Adresse");
					break;
				case 602:
					alert("Die angegebene Adresse konnte leider nicht gefunden werden. Dies kann daran liegen, dass die Adresse relativ neu oder eventuell unvollständig bzw. falsch ist.\nTipp: Falls Sie nur den Ortsnamen verwendet haben, ergänzen Sie diesen bitte durch die PLZ.");
					break;
				
				default:
					alert("Error: " + Router.getStatus().code);
					break;
			}

		
		
		});
	}
	manager = new GMarkerManager(map);
	var batch = [];
	for(m in ziele) if(m) { batch.push(createMarker(ziele[m]));}
	//manager.addMarkers(batch, 1);
	//manager.refresh();
	//for(m in ziele) { 
		// ich muss die zerstörungen abfangen, die durch ds Prototype bibliothek entstanden sind!
		//if(typeof(ziele[m])=="object") createMarker(ziele[m]);
		
	//}
	
	
	KarteMenuStarten();
	
}


function KarteMenuStarten(){
	var fertig = false;
	if (qs.contains("route")){
		showMarker([parseInt(qs.get("route"))]);
		MerkerInfoWindow(TopAusflugsziele[parseInt(qs.get("route"))],1) 
		fertig = true
	}
	if (qs.contains("ziel")){
		showMarker([parseInt(qs.get("ziel"))]);
		MerkerInfoWindow(TopAusflugsziele[parseInt(qs.get("ziel"))],0) 
		fertig = true
	}
	if (qs.contains("thema")){
	//alert(qs.get("thema"));
		document.getElementById("checkbox" + qs.get("thema")).click();
		fertig = true
	}
	if (!fertig) 
		for(var i=1;i<=5; i++){
			if(document.getElementById("checkbox" + i)){
				if (document.getElementById("checkbox" + i).checked != true){
					document.getElementById("checkbox" + i).click();
				}
				ShowHideKat(document.getElementById("checkbox" + i).value, document.getElementById("checkbox" + i).checked)
			}
		}
}

function KarteLaden(){
	
	qs = new Querystring();
	
	
	var aj = new Ajax();
	aj.url = "karteajax.asp";
	aj.params = "data=ja";
	var a = /kat=(\d{1})/g;
	var b = a.exec(window.location.search);
	if(b) aj.params += "&" + b[0];
	aj.onSuccess = function(txt){eval(txt);KarteInit();};
	aj.onError = function(msg){alert(this.url + this.params + msg);};
	aj.doRequest();
}

function ShowHideKat(kat, show){
	for(i in TopAusflugsziele) {
		if (TopAusflugsziele[i].kat ==  kat){
			if(show) TopAusflugsziele[i].show();
			else TopAusflugsziele[i].hide();
		}
	}
}

function showMarker(index){
	TopAusflugsziele[index].show();
	document.getElementById("checkbox" + TopAusflugsziele[index].kat).checked = true;
	checkMenu(document.getElementById("checkbox" + TopAusflugsziele[index].kat), false)
}


window.onunload = GUnload;
window.onload = KarteLaden;


