
var mapNeedInit = true;
var routeStart = null;
var markers = [];

function filterMap(date) {

	//console.log('filterMap ' + date);
	
	for(var d in markers)
	{
		for( var marker in markers[d] )
		{
			markers[d][marker].setVisible(d == date);
		}
	}
}

function onShowMap() {
	
	if( !mapNeedInit ) return;
	mapNeedInit = false;
	
    var myLatlng = new google.maps.LatLng(52.258071, 5.185547);
	var myOptions = {
		zoom: 7,
		center: myLatlng,
		panControl: true,
		zoomControl: true,
		zoomControlOptions: {
			style: google.maps.ZoomControlStyle.SMALL
		},
		scaleControl: true,
		streetViewControl:false,
		mapTypeControl:false,
		mapTypeId: google.maps.MapTypeId.TERRAIN
	}
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
    var geocoder = new google.maps.Geocoder();
	var infowindow = new google.maps.InfoWindow();			

	var i = 0;
	foreachFarm(function(o){
	
		if( o.lat.length ) {
			addMarker(o, map, infowindow);
			//setTimeout(function() {
			//	addMarker(o, map, infowindow);
			//}, i * 100);
			++i;
		}
		
	});
	
	$('#search-button').click(function(){
		
		//map.setZoom(7);
		
		$('#info-window').hide();
		
		geocoder.geocode(
			{'address': $('#search-input').val() + ', nederland'},
			function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {
				
					routeStart = results[0].formatted_address;
					
					var loc = results[0].geometry.location;
					map.panTo(loc);
					map.setZoom(8);
					
				} else {
					//alert("Geocode was not successful for the following reason: " + status);
				}
			});
		
	});
  
}

function addMarker(o, map, infowindow)
{
	var myLatlng = new google.maps.LatLng(o.lat, o.lng);
	
	var marker = new google.maps.Marker({
		position: myLatlng, 
		map: map, 
		//animation: google.maps.Animation.DROP,
		title:o.name,
		icon: new google.maps.MarkerImage(
			'img/icon1.png',
			//(o.date == '9 april 2011') ? 'img/icon2.png' : 'img/icon1.png',
			new google.maps.Size(20, 20), // size
			new google.maps.Point(0,0),   // origin
			new google.maps.Point(9, 7)) // anchor
	});

	if( markers[o.date] == null ) markers[o.date] = [marker];
	else markers[o.date][markers[o.date].length] = marker;
	
	google.maps.event.addListener(marker, 'click', function() {	
		
		$('#info-window .name').text(o.name);
		$('#info-window .address').text(o.address);
		$('#info-window .city').text(o.city);
		$('#info-window .date').text(o.date);
		$('#info-window .extra').html(o.extra);
		$('#info-window').show();
		if( routeStart == null )
			$('#info-window .google').attr('href', 'http://maps.google.nl/maps?q=' + escape(o.address) + ',' + o.zip );
		else
			$('#info-window .google').attr('href', 'http://maps.google.nl/maps?saddr=' + escape(routeStart) + '&daddr=' + escape(o.address) + ',' + o.zip );
		
		//infowindow.setContent($('#info-window').html());
		//infowindow.open(map,marker);
		
	});	
}

function foreachFarm(cb)
{
	$("#farm-list li").each(function(){
	
		var o = new Object();
		o.li = this;
		o.lat = $(".lat", this).text();
		o.lng = $(".lng", this).text();
		o.name = $(".name", this).text();
		o.city = $(".city", this).text();
		o.address = $(".address", this).text();	
		o.date = '13 juni 2011';//$(".date", this).text();	
		o.zip = $(".zip", this).text();	
		o.extra = $(".extra", this).html();
		
		cb(o);

	});
}
