//Useful links:
// http://code.google.com/apis/maps/documentation/javascript/reference.html#Marker
// http://code.google.com/apis/maps/documentation/javascript/services.html#Geocoding
// http://jqueryui.com/demos/autocomplete/#remote-with-cache
      
var geocoder;
var map;
var marker;
var s_lat;
var s_lng;
var town_lat;
var town_lng;
var venue;
var title;

function initialize(){

	// Set Initial Area
	if ( document.getElementById('lat').value === '' || document.getElementById('lng').value === '' ) {		
		s_lat = document.getElementById('town_lat').value;
		s_lng = document.getElementById("town_lng").value;	
	} else {		
		s_lat = document.getElementById('lat').value;
		s_lng = document.getElementById('lng').value;
	}	
	
	// MAP
  	var latlng = new google.maps.LatLng( s_lat , s_lng );
  	var options = {
   	 	zoom: 15,
    	center: latlng,
   		mapTypeId: google.maps.MapTypeId.ROADMAP,
		scrollwheel: false
  	};
        
  	map = new google.maps.Map(document.getElementById("map_canvas"), options);
        
 	 // GEOCODER
	geocoder = new google.maps.Geocoder();
        
 	marker = new google.maps.Marker({
   		map: map,
	    draggable: false
  	});		
} // endfunction; initialize()
		
$(document).ready(function() { 
         
	town_lat = document.getElementById('town_lat').value;
	town_lng = document.getElementById('town_lng').value;
	venue = document.getElementById('venue').value;
	title = document.getElementById('title').value;
		 
  	initialize();
  
	// Geocode NO LAT-LNG - If no lat or lng and venue is set begin geocode
	if ( s_lat === town_lat && venue ) {

		geocoder.geocode( { 'address': venue}, function(results, status) {
			  if (status == google.maps.GeocoderStatus.OK) {
					var location = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng());
					marker.setPosition(location);
					map.setCenter(location);
					console.log('Map loaded from Geocode Lookup on Address');				
			  } else {
			  	// if we cant find marker then do one!
			  	$('#map-section').hide();
			  }
		});		
	}
  
	// Add marker if lat long
	if ( document.getElementById('lat').value !== '' && document.getElementById('lng').value !== '') {
		var location = new google.maps.LatLng(s_lat, s_lng );
		marker.setPosition(location);
		map.setCenter(location);
		console.log('Map loaded from DB: LAT & LNG');
	}

// Add Listener to marker click
google.maps.event.addListener(marker, 'click', function(event) 
{
	infoOptions = {	content: '<strong>' + title + '</strong><br /> ' + venue , maxWidth: 250 };
	infoWindow = new google.maps.InfoWindow(infoOptions);	
	infoWindow.open(map,marker);
});

});
