



var isOpen=false;
var boxpolys = null;
var toggleCheck = 0;
var directions = null;
var routeBoxer = null;
var distance = null; // km
var directionsRenderer = null;
var directionService = null;
var data = null;
var tempdata = null;
var fetchedIds=[];
var styles = [[{
  url: '../images/people35.png',
  height: 35,
  width: 35,
  opt_anchor: [16, 0],
  opt_textColor: '#ff00ff',
  opt_textSize: 10
}, {
  url: '../images/people45.png',
  height: 45,
  width: 45,
  opt_anchor: [24, 0],
  opt_textColor: '#ff0000',
  opt_textSize: 11
}, {
  url: '../images/people55.png',
  height: 55,
  width: 55,
  opt_anchor: [32, 0],
  opt_textSize: 12
}], [{
  url: '../images/conv30.png',
  height: 27,
  width: 30,
  anchor: [3, 0],
  textColor: '#ff00ff',
  opt_textSize: 10
}, {
  url: '../images/conv40.png',
  height: 36,
  width: 40,
  opt_anchor: [6, 0],
  opt_textColor: '#ff0000',
  opt_textSize: 11
}, {
  url: '../images/conv50.png',
  width: 50,
  height: 45,
  opt_anchor: [8, 0],
  opt_textSize: 12
}], [{
  url: '../images/heart30.png',
  height: 26,
  width: 30,
  opt_anchor: [4, 0],
  opt_textColor: '#ff00ff',
  opt_textSize: 10
}, {
  url: '../images/heart40.png',
  height: 35,
  width: 40,
  opt_anchor: [8, 0],
  opt_textColor: '#ff0000',
  opt_textSize: 11
}, {
  url: '../images/heart50.png',
  width: 50,
  height: 44,
  opt_anchor: [12, 0],
  opt_textSize: 12
}]];
var data;
var markerClusterer = null;
var markerClusterer2 = null;
var markers = [];
var markersBig = [];
var map = null;
var map_big = null;
var temptitle;
var imageUrl = 'http://chart.apis.google.com/chart?cht=mm&chs=24x32&' +
    'chco=FFFFFF,008CFF,000000&ext=.png';

function loadInfoWindow(id,title,position){
	
	if($('#dialog').dialog('isOpen')==true){
		$('#dialog').dialog('destroy');
		//$('#dialog').dialog({title:title,show:'fade',position:position});
	}else{
		
	}
	temptitle=title;
	$.ajax({
		  url: '/fileadmin/scripts/getAusflug.php?id='+id,
		  method:'GET',
		  success: function(output) {
			
		  $('#dialog').dialog({title:temptitle,show:'fade',position:position});
			$('#dialog').html(output);
			$('#dialog').show();
		  },
		  error: function(error){
			  alert(error);
		  }
	
		});	
}



function displayMarkersSmall() {
  if (markerClusterer) {
    markerClusterer.clearMarkers();
  }
	markers=[];
  
  
  var markerImage = new google.maps.MarkerImage(imageUrl,
    new google.maps.Size(24, 32));
		
  for (var i = 0; i < data.length; ++i) {
	  
    var latLng = new google.maps.LatLng(data[i].latitude,
        data[i].longitude);
    var marker = new google.maps.Marker({
     position: latLng,
     draggable: false,
     icon: markerImage,	 
     id:data[i].id,
     title:data[i].name
    });
    
    markers.push(marker);
    google.maps.event.addListener(markers[markers.length-1], 'click', function(e) {
    	
		
	  });
  }

  var zoom = -1;
  var size = -1;
  var style = -1;
  zoom = zoom == -1 ? null : zoom;
  size = size == -1 ? null : size;
  style = style == -1 ? null: style;
size=45;
  markerClusterer = new MarkerClusterer(map, markers, {
    maxZoom: zoom,
    gridSize: size,
    styles: styles[style]
  });
  
}
function generateSearchMap(datas){
	
	data=datas;
	if(null!=markerClusterer){
		markerClusterer.clearMarkers();
	}
	marker=[];
	if(null!=markerClusterer2){
		markerClusterer2.clearMarkers();	
	}
	markersBig=[];
	
	if(typeof datas.size!="undefined"){	
		refreshMap();    
	}else{	
		displayMarkersBig();
	}
	
	
}

function refreshMap() {
  if (markerClusterer2) {
    markerClusterer2.clearMarkers();
  }
	markersBig=[];
  
  
  var markerImage = new google.maps.MarkerImage(imageUrl,
    new google.maps.Size(24, 32));
		
  for (var i = 0; i < data.size; ++i) {
	  
    var latLng = new google.maps.LatLng(data.entries[i].latitude,
        data.entries[i].longitude);
    var marker = new google.maps.Marker({
     position: latLng,
     draggable: false,
     icon: markerImage,
     id:data.entries[i].id,
     title:data.entries[i].titel
    });
    
    markersBig.push(marker);
    google.maps.event.addListener(markersBig[markersBig.length-1], 'click', function(e) {
    	
		 loadInfoWindow(this.id,this.title,[e.clientX,e.clientY]);
	  });
  }

  var zoom = -1;
  var size = -1;
  var style = -1;
  zoom = zoom == -1 ? null : zoom;
  size = size == -1 ? null : size;
  style = style == -1 ? null: style;
size=45;
  markerClusterer2 = new MarkerClusterer(map_big, markersBig, {
    maxZoom: zoom,
    gridSize: size,
    styles: styles[style]
  });
}


function activateSearch(){
	if(null!=markerClusterer){
	markerClusterer.clearMarkers();		
	markerClusterer2.clearMarkers();	
	}
	marker=[];
		$.getJSON('/fileadmin/scripts/getData.php',$("#selectForm").serialize(),function(datas){		
			var data=datas;				
			map.setCenter(new google.maps.LatLng(51.4402, 7.3361));
			map.setZoom(8);
			if(null!=directionsRenderer){
			directionsRenderer.setMap(null);
			}
			generateSearchMap(datas);	
		});
}

function displayMarkersBig() {
  if (markerClusterer2) {
    markerClusterer2.clearMarkers();
  }
markersBig=[];
  
  
  var markerImage = new google.maps.MarkerImage(imageUrl,
    new google.maps.Size(24, 32));
		
  for (var i = 0; i < data.length; ++i) {
	  data[i].latitude=parseFloat(data[i].latitude);
    var latLng = new google.maps.LatLng(
		data[i].latitude,		
        data[i].longitude);		
    var marker = new google.maps.Marker({
     position: latLng,
     draggable: false,
     icon: markerImage,	 
     id:data[i].id,
     title:data[i].name 
    });
    
    markersBig.push(marker);
    google.maps.event.addListener(markersBig[markersBig.length-1], 'click', function(e) {
    	
		 loadInfoWindow(this.id,this.title,[e.clientX,e.clientY]);
	  });
  }
	if(data.length==1){		
		map_big.setCenter(new google.maps.LatLng(
		data[0].latitude,		
        data[0].longitude));
	}
  var zoom = -1;
  var size = -1;
  var style = -1;
  zoom = zoom == -1 ? null : zoom;
  size = size == -1 ? null : size;
  style = style == -1 ? null: style;
size=45;
  markerClusterer2 = new MarkerClusterer(map_big, markersBig, {
    maxZoom: zoom,
    gridSize: size,
    styles: styles[style]
  });
}
function getParameterByName( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return decodeURIComponent(results[1].replace(/\+/g, " "));
}
function alternateDisplay(){

			  var zoom = -1;
		  var size = -1;
		  var style = -1;
		  zoom = zoom == -1 ? null : zoom;
		  size = size == -1 ? null : size;
		  style = style == -1 ? null: style;
		size=45;
		 markerClusterer2 = new MarkerClusterer(map_big, markersBig, {
		maxZoom: zoom,
		gridSize: size,
		styles: styles[style]
		});
		activateSearch();
}


/*************************************************************************/
var directionService;
var directionsRenderer;
var boxpolys = null;
var fetchedIds=[];
function routeIt(){

	var startAddress=$('#streetstart').val();
	var startCity=$('#citystart').val();
	var destAddress=$('#streettarget').val();
	var destCity=$('#citytarget').val();
	
	if(startAddress!=""){
		startCity+=", "+startAddress;
	}
	
	if(destAddress!=""){
		destCity+=", "+destAddress;
	}
	
	markerClusterer2.clearMarkers();
	 if(directionService==null){
     directionService = new google.maps.DirectionsService();
	 }
	 if(directionsRenderer==null){
     directionsRenderer = new google.maps.DirectionsRenderer({ map: map_big });  
	 }
	 routeBoxer = new RouteBoxer();	 
     distance = 2* 1.609344;
	 
	  var request = {
    		 origin: startCity,
			 destination: destCity,
    	     travelMode: google.maps.DirectionsTravelMode.DRIVING
		}
    directionsRenderer.setPanel(document.getElementById("RouteResults"));
    	      // Make the directions request
    	      directionService.route(request, function(result, status) {
    	        if (status == google.maps.DirectionsStatus.OK) {
    	          directionsRenderer.setDirections(result);
    	          
    	          // Box around the overview path of the first route
    	          var path = result.routes[0].overview_path;
    	          var boxes = routeBoxer.box(path, distance);
					drawBoxes(boxes);
				  //displayRouteInfo(result);
    	        } else {
    	          alert("Es tut uns leid! Die Addresse wurde nicht gefunden. Bitte kontrollieren Sie Ihre Angaben.");
    	        }
    	      }); 
}



function displayEntriesInBox(box){
	northEast=box.getNorthEast();
	southWest=box.getSouthWest();
	var markerImage = new google.maps.MarkerImage(imageUrl,
	new google.maps.Size(24, 32));
	
	for (var i = 0; i < data.size; ++i) {
		if( (data.entries[i].latitude<northEast.lat() &&
			data.entries[i].latitude>southWest.lat()) &&
			(data.entries[i].longitude<northEast.lng() &&
			data.entries[i].longitude>southWest.lng())){
			var latLng = new google.maps.LatLng(data.entries[i].latitude,
			data.entries[i].longitude);
			var marker = new google.maps.Marker({
				position:latLng,
				draggable: false,
				icon:markerImage,
				id:data.entries[i].id,
				title:data.entries[i].titel
			});
			fetchedIds.push(data.entries[i].id);
			markersBig.push(marker);
			google.maps.event.addListener(markersBig[markersBig.length-1], 'click', function(e) {
			loadInfoWindow(this.id,this.title,[e.clientX,e.clientY]);					
			});			
		}
			
	}
	
	
}


function drawBoxes(boxes) {
    boxpolys = new Array(boxes.length);
	markersBig=[];
	  if (markerClusterer) {
    markerClusterer.clearMarkers();
  }
    for (var i = 0; i < boxes.length; i++) {
      /*boxpolys[i] = new google.maps.Rectangle({
        bounds: boxes[i],
        fillOpacity: 0,
        strokeOpacity: 1.0,
        strokeColor: '#ff0000',
        strokeWeight: 1,
        map: map_big
      });	  */
		displayEntriesInBox(boxes[i]);
    }
	
	
	var zoom = -1;
	var size = -1;
	var style = -1;
	zoom = zoom == -1 ? null : zoom;
	size = size == -1 ? null : size;
	style = style == -1 ? null: style;
	
	markerClusterer2 = new MarkerClusterer(map_big, markersBig, {
	maxZoom: zoom,
	gridSize: size,
	styles: styles[style]
	});
	
	fillBoxWithIds();
  }

/********************************************************************************/
function init(){
  map = new google.maps.Map(document.getElementById('karte'), {
    zoom: 6,
    center: new google.maps.LatLng(51.4402, 7.3361),
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    disableDefaultUI:true
  });
  map_big = new google.maps.Map(document.getElementById('bigMap'), {
    zoom: 8,
    center: new google.maps.LatLng(51.4402, 7.3361),
    mapTypeId: google.maps.MapTypeId.TERRAIN,
    disableDefaultUI:false
  });
  
  
   
  var tempdata=data;
$('div#selectTargets').hide();
$("a#mapOpenCat").click(function(e){
	e.preventDefault();
	$('div#selectTargets').html('').load('/fileadmin/templates/ajax/form.php').fadeIn();
});
$("a#routeIt").click(function(e){
	e.preventDefault();
	$('div#selectTargets').fadeOut();
	$.getScript("/fileadmin/templates/js/route.js",function(){
		$('.aufmacherTop').html('').load('/fileadmin/templates/ajax/route.php').fadeIn();
	});

	
});
$("a#currentTarget").click(function(e){

	e.preventDefault();
	generateSearchMap(tempdata);  
	$('div#selectTargets').fadeOut();
	/*$('.aufmacherTop').html('');*/
});

$('a#f01').click(function(){
	if($(this).val()=="Suche"){
		$(this).val('');
	}
});
$('#openMap').click(function(){
if(isOpen==false){	
inputHasFocus=true;
		if($("#mapSlide").hasClass("inactive")){			
			isOpen=true;
			$("#mapSlide").css("display","none").css("position","static");
			$("#mapSlide").animate({height:"toggle"},"slow",null,function(){        		        		
				$("#mapSlide").removeClass("inactive");     
				if(data!=null){
					
					displayMarkersBig();
				}else{
					alternateDisplay();
				}
			});
					
		}
		}
});
  
$('#kartenansicht').click(function(){		
inputHasFocus=true;
	if(isOpen==false){
		if($("#mapSlide").hasClass("inactive")){						
			isOpen=true;
			$("#mapSlide").css("display","none").css("position","static");
			$("#mapSlide").animate({height:"toggle"},"slow",null,function(){        		        		
				$("#mapSlide").removeClass("inactive");     
				if(data!=null){
					displayMarkersBig();
				}else{
					alternateDisplay();
				}
			});
					
		}
	}
});  

    $('#planerlink').click(function(e){	
	inputHasFocus=true;
	e.preventDefault();
	if(isOpen==false){
		if($("#mapSlide").hasClass("inactive")){			
		isOpen=true;
			$("#mapSlide").css("display","none").css("position","static");
			$("#mapSlide").animate({height:"toggle"},"slow",null,function(){        		        		
				$("#mapSlide").removeClass("inactive");     
				if(data!=null){
					displayMarkersBig();
				}else{
					alternateDisplay();
				}
			});
					
		}}
}); 
  if(data!=null){
  
	displayMarkersSmall(); 
  }
  
  
  if(getParameterByName("showPlaner")=="1"){
  inputHasFocus=true;
		if(isOpen==false){
			if($("#mapSlide").hasClass("inactive")){			
			isOpen=true;
				$("#mapSlide").css("display","none").css("position","static");
				$("#mapSlide").animate({height:"toggle"},"slow",null,function(){        		        		
					$("#mapSlide").removeClass("inactive");     
					
					  var zoom = -1;
					  var size = -1;
					  var style = -1;
					  zoom = zoom == -1 ? null : zoom;
					  size = size == -1 ? null : size;
					  style = style == -1 ? null: style;
					size=45;
					 markerClusterer2 = new MarkerClusterer(map_big, markersBig, {
					maxZoom: zoom,
					gridSize: size,
					styles: styles[style]
					});
					activateSearch();
				});
						
			}}
  }


  
}
	
 $(document).ready(function() {
init();

$('a#toggleSelect').click(function(e){
	inputHasFocus=true;
	return false;
		  e.preventDefault();
		  e.stopPropagation();
		  
		  if(toggleCheck==1){
			$(':checkbox').attr('checked',1);
			toggleCheck=0;
		  }else{
			$(':checkbox').attr('checked',0);
			toggleCheck=1;
		  }	  

	});
});
var toggleCheck=0;
function toggleSelect(){
  	  inputHasFocus=true;
		  if(toggleCheck==1){
			$(':checkbox').attr('checked',1);
			toggleCheck=0;
		  }else{
			$(':checkbox').attr('checked',0);
			toggleCheck=1;
		  }	  
return false;
}




