var map;

var new_address_data;

google.maps.Map.prototype.markers = new Array();

google.maps.Map.prototype.addMarker = function(marker) {
    this.markers[this.markers.length] = marker;
};

google.maps.Map.prototype.getMarkers = function() {
    return this.markers
};

google.maps.Map.prototype.clearMarkers = function() {
    for(var i=0; i<this.markers.length; i++){
        this.markers[i].setMap(null);
    }
    this.markers = new Array();
};

function show_address(address_to_find){
	var myLatlng;
	var geocoder = new google.maps.Geocoder();
	geocoder.geocode({address: address_to_find},
		function(results, status) {
	        if (status == google.maps.GeocoderStatus.OK) {

		       	new_address_data = results[0].formatted_address.split(", ");
		       	
	        	$("#update_data_from_google").click(function(results){
		        	
		        	var street = new_address_data[0].split(" ")[0];
		        	var number = new_address_data[0].split(" ")[1];
	
		        	var zip = new_address_data[1].split(" ")[0];
		        	var city = new_address_data[1].split(" ")[1];
		        	
					if(street != '' && number != '' && zip != '' && city != ''){
						$("#RestaurantAddressStreetName").val(street);
						$("#RestaurantAddressStreetNumber").val(number);
				
						$("#RestaurantAddressZip").val(zip);
						$("#RestaurantAddressCity").val(city);
	
					}
				});

				var new_lat = results[0].geometry.location.lat();
	        	var new_lng = results[0].geometry.location.lng();
				
				
				var myLatlng = new google.maps.LatLng(new_lat,new_lng);
	        
				info = '';				
				title = '';
		
				
				if(!marker_list[myLatlng.lat()+"-"+myLatlng.lng()]){
					map.clearMarkers();
					
					map.addMarker(createMarker(myLatlng, map, title, info, false, false));
				}

				
	        	map.setCenter(myLatlng);
	        	map.setZoom(15);
	        	
	        	
/*		        	$.ajax({
					type: "GET",
					url: '/restaurants/update_bounds/'+restaurantlist[0].id+'/'+new_lat+','+new_lng+'.json', 
					complete: function(transport){
						location.reload(); 
					},
					error: function(){
						//alert('Something went wrong...');
					}
				});*/

			}
	});
}

function da_stinkts_net_suggest_initialize() {


	// Minimum Zoom
	var min_zoom = 6;
	
	var map_container = false;
	var data_container = false;
	
	var form_container = document.getElementById("RestaurantSuggestForm");
	var map_container = document.getElementById("RestaurantSuggestMap");
	
	// index.ctp
	if(form_container && map_container){
	
		var street = $("#RestaurantAddressStreetName").val();
		var number = $("#RestaurantAddressStreetNumber").val();

		var zip = $("#RestaurantAddressZip").val();
		var city = $("#RestaurantAddressCity").val();

		var lat = $("#RestaurantAddressLat").val();
		var lng = $("#RestaurantAddressLng").val();



		var myZoom = 7;
		var myLatlng = new google.maps.LatLng(47.61357,13.084717);


		var myOptions = {
	      zoom: myZoom,
	      center: myLatlng,
	      mapTypeId: google.maps.MapTypeId.ROADMAP,
	      scrollwheel:false
	    };
	    map = new google.maps.Map(map_container, myOptions);


		var address_to_find = street+' '+number+' '+zip+' '+city;
		
		show_address(address_to_find);
		
    
		$('#RestaurantSuggestForm .required input').each(function(){
			$(this).keyup(function(){
				var street = $("#RestaurantAddressStreetName").val();
				var number = $("#RestaurantAddressStreetNumber").val();
		
				var zip = $("#RestaurantAddressZip").val();
				var city = $("#RestaurantAddressCity").val();
		
				var lat = $("#RestaurantAddressLat").val();
				var lng = $("#RestaurantAddressLng").val();
		
				var address_to_find = street+' '+number+' '+zip+' '+city;

				if(street != '' && (zip.length == 4 || city.length > 3) ){
					show_address(address_to_find);
				}
			});
		});    
    
/*

		google.maps.event.addListener(map, 'bounds_changed', function() {

			// update cookie of client position
			center = this.getCenter();
			var a = new Date();
			a = new Date(a.getTime() +1000*60*60*24*365);
			document.cookie = 'last-position-lat='+center.lat()+';expires='+a.toGMTString()+';'; 
			document.cookie = 'last-position-lng='+center.lng()+';expires='+a.toGMTString()+';'; 
			document.cookie = 'last-position-zoom='+this.getZoom()+';expires='+a.toGMTString()+';'; 

			// send AJAX-Request only if there is no running Request
			if(!ajaxRequestRunning){
				ajaxRequestRunning = true;
				getRestaurantsInBounds(this);
			}

			
		});



		google.maps.event.addListener(map, 'dragend', function() {
			// after dragging the map, restaurants in bounds should be updated
			//getRestaurantsInBounds(this);
		});		
*/
	
		// set a min zoom level of 7 (austria)
		google.maps.event.addListener(map, 'zoom_changed', function() {
	    zoomLevel = map.getZoom();

	    if (zoomLevel < min_zoom) {
	      map.setZoom(min_zoom);
	    }      
	  });
  
	}
	
}


$(document).ready(da_stinkts_net_suggest_initialize);
