
/* Google Maps */

var maps = new Array();
var mapCounter = 0;
var geocoder;
var markerArray = new Array();
var infoArray = new Array();

function loadRouteMap()
{
  var map = new GMap2(document.getElementById("routemap"));
  map.setCenter(new GLatLng(52.2723384, 8.0469024), 9);

  directions = new GDirections(map, document.getElementById("directionsResult"));
  $('a.calcRoute').click(function(){
  		start = $('#start').val();
  		ziel = $('#ziel').val();	
		if(start.length > 0 && ziel.length > 0)
		{
      		directions.load("from: " + start + " to: " + ziel,  { "locale": "de_DE" });
		}					
  });
}

function displayRadius()
{
	
}

function loadRadiusMap()
{
	$('.tx-adressbuch-pi1-radius form').submit(function(e){
		return false;
	});
     
	$('.tx-adressbuch-pi1-radius').keydown(function(e){
     if (e.keyCode == 13) {
		 $('a.searchRadius').click();
         return false;
     }
   });

   	geocoder = new google.maps.Geocoder();
	$('a.searchRadius').click(function()
	{
		word = $('#word').val();
		address = $('#address').val();		
		radius = $('#radius').val();

		if(word.length > 3 && address.length > 3)
		{
	
			geocoder.geocode( { 'address': address}, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {
					if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
		
						$.each(markerArray,function(){
							this.set_map(null);							
						});
						$.each(infoArray,function(){
							this.close();						
						});
						markerArray = new Array();							
						infoArray = new Array();		
						
						var lng = results[0].geometry.location.lng();
						var lat = results[0].geometry.location.lat();
						xajax_searchByRadius(word, address, radius, lat, lng);	
						map.set_center(results[0].geometry.location);
						map.set_zoom(14-radius);		
					} else {
						alert("Kein Ort mit diesem Namen gefunden");
					}
				} else {
				  alert("Kein Ort mit diesem Namen gefunden");
				}
			 });	
		}
	});
	
    var latlng = new google.maps.LatLng(52.2723384, 8.0469024);
    var myOptions = {
      zoom: 9,
      center: latlng,	  
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

	map = new google.maps.Map(document.getElementById('radiusmap'), myOptions);
}

function processRadiusData(xml)
{
	var parsedXML = parseXML(xml);
	$(parsedXML).find('marker').each(function(){
		var data = $(this);	

		var lng = parseFloat(data.attr('lng'));
		var lat = parseFloat(data.attr('lat'));

		createToggleMarker(new google.maps.LatLng(lat, lng),map,data.attr('name'),data.attr('info'));							
	});
}

function parseXML( xml ) { 
	if( window.ActiveXObject && window.GetObject ) { 
    	var dom = new ActiveXObject( 'Microsoft.XMLDOM' ); 
        dom.loadXML( xml ); 
        return dom; 
    } 
    if( window.DOMParser ) 
    	return new DOMParser().parseFromString( xml, 'text/xml' ); 
    throw new Error( 'No XML parser available' ); 
} 




function loadBigMap()
{
    var latlng = new google.maps.LatLng(52.2723384, 8.0469024);
    var myOptions = {
      zoom: 9,
      center: latlng,	  
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

	var map = new google.maps.Map(document.getElementById('bigmap'), myOptions);

	for(var i in maps)
	{
		createToggleMarker(new google.maps.LatLng(maps[i].latlng.lat, maps[i].latlng.lng),map,maps[i].name,maps[i].info);	
	}	
}


function loadDetailMap(position, name, id, html) {


	var latlng = new google.maps.LatLng(position.lat, position.lng);

    var myOptions = {
      zoom: 15,
      center: latlng,	  
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById(id), myOptions);
	
	createMarker(latlng,map,name,'');
	$('#'+id).css('visibility','visible');
	$('.map').css('visibility','visible').show();	
}



function loadMaps()
{
	if(mapCounter < maps.length)
	{
		loadSmallMap(maps[mapCounter].latlng, maps[mapCounter].name, maps[mapCounter].id);
	}
}


function loadSmallMap(position, name, id) 
{
	var latlng = new google.maps.LatLng(position.lat, position.lng);

    var myOptions = {
      zoom: 13,
      center: latlng,	  
	  disableDefaultUI: true,
	  draggable: false,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

	var map = new google.maps.Map(document.getElementById(id), myOptions);

	createMarker(latlng,map,name,'');
	$('#'+id).css('visibility','visible');
	google.maps.event.addListener(map,'tilesloaded', function(event){ 
		$('.smallmap>div').show();															  
		$('.smallmap>div div').hide();
		$('.smallmap>div div:first-child').show();		
		$('.smallmap>div div:first-child div').show();				
	});
	
	mapCounter++;
	loadMaps();
}


function createMarker(position, map, title, html) {

	if(html != '')
	{
		var info = new google.maps.InfoWindow({
			position: position,
			content: html
		});
		info.open(map);
	}
	else
	{
		var marker = new google.maps.Marker({
			position: position,
			map: map,
			title: title,
			icon: "/fileadmin/tpl/img/marker.png",
			shadow: "/fileadmin/tpl/img/shadow50.png"	
		});		
	} 
}

function createToggleMarker(position, map, title, html) {

	if(html != '')
	{
		var info = new google.maps.InfoWindow({
			position: position,
			content: html
		});
		
		var marker = new google.maps.Marker({
			position: position,
			map: map,
			title: title,
			clickable:true,
			icon: "/fileadmin/tpl/img/marker.png",
			shadow: "/fileadmin/tpl/img/shadow50.png"		
		});	
		
		google.maps.event.addListener(marker,'click', function(event){ 
			info.open(map); 
			map.set_center(event.latLng);
			map.set_zoom(12);
		});
		
		markerArray.push(marker);	
		infoArray.push(info);			
	}
	else
	{
		var marker = new google.maps.Marker({
			position: position,
			map: map,
			title: title,
			icon: "/fileadmin/tpl/img/marker.png",
			shadow: "/fileadmin/tpl/img/shadow50.png"			
		});		
		markerArray.push(marker);			
	}
}






