var mapstraction;
jQuery(function() {
    // First create a div to host the map
    var themap = $('<div id="themap"></div>').css({
        'width': '100%', 'height': '400px'
    }
   ).insertBefore('ul.venue'); // Now initialise the map
    mapstraction = new Mapstraction('themap', 'google'); mapstraction.addControls({
        zoom: 'large', map_type: true
    }
   ); // Show map centred on uk
	
    mapstraction.setCenterAndZoom(new LatLonPoint(52.26484814244477, -0.8624267578125), 4 // Zoom on country
   ); // Geocode each hcard and add a marker
	
    jQuery('.vcard').each(function() {
        var hcard = jQuery(this);
		var name = hcard.find('.name').text();
        var streetaddress = hcard.find('.street-address').text();
        var postcode = hcard.find('.postal-code').text();
        var locality = hcard.find('.locality').text();
        var country = hcard.find('.country-name').text(); 
        var latTemp = hcard.find('.lat').text();
		var lonTemp = hcard.find('.lon').text();
		
		var geocoder = new MapstractionGeocoder(function(result) {
        var marker = new Marker(result.point); 
		marker.setInfoBubble('<div class="bubble"><h3>' + name + '</h3>' + hcard.find('.bubble').html() + '</div>'); 
		mapstraction.addMarker(marker);
		hcard.find('.lat').text(result.point.lat);
		hcard.find('.lon').text(result.point.lon);
	    }, 'google');
		
		if (latTemp == '' && lonTemp == '')
			{
				geocoder.geocode(
								 {'address': streetaddress + ', ' + locality + ', ' + postcode + ', ' + country}
						 		);						
			}
			else
			{
				var point = new LatLonPoint(latTemp,lonTemp);
				var marker = new Marker(point); 
				marker.setInfoBubble('<div class="bubble"><h3>' + name + '</h3>' + hcard.find('.bubble').html() + '</div>'); 
				mapstraction.addMarker(marker);
			}
    }
   );
}
);
function findVenue(){
	var search = $('#txtSearch').val();
	if (search.length > 0 )
	{
		var geocoder = new MapstractionGeocoder(function(result) {
           
			jQuery('.vcard').each(function() {
								    var hcard = jQuery(this);
									var lat1 = result.point.lat;
									var lon1 = result.point.lon;
									var lat2 = hcard.find('.lat').text();
									var lon2 = hcard.find('.lon').text();
									var miles = getDistance(lat1,lat2,lon1,lon2);
									var theText = miles;
									hcard.find('.distance').text(theText);
									
								   }).tsort(".distance").each(function(){
									   	var localName = $(".vcard:first").find('.name').text();
	var lat1 = $(".vcard:first").find('.lat').text();
	var lon1 = $(".vcard:first").find('.lon').text();
	mapstraction.setCenterAndZoom(new LatLonPoint(lat1, lon1), 15 );
	 $("p.neat").hide().html("You searched for <b>" + search + "</b> your closest venue is: <b>" + localName + "</b>").addClass("alert").show("slow");
									   
									   });
        }
      , 'google'); 
		geocoder.geocode({
      'address': search + ', UK'});	
	}
	else
	{
		$("p.neat").hide().html("Please enter a Post Code.").addClass("error").show("slow");
		}
	};
	
		function getDistance(lat1,lat2,lon1,lon2) 
	{
var R = 6371; // km
var d = Math.acos(Math.sin(lat1)*Math.sin(lat2) + 
                  Math.cos(lat1)*Math.cos(lat2) *
                  Math.cos(lon2-lon1)) * R;
return d;
		
	};
