// JavaScript Document

var markers = new Array();
var geocoder;

$(document).ready(function() {

	get_kml_markers();

});

function postcode_finder() {
	
	getLocation($('#postcode').val());
}

function get_kml_markers() {
		
	$.get(kmldata, function(data){

		//loop through placemarks tags
		$(data).find("Placemark").each(function(index, value){
			
			//get coordinates and place name
			coords = $(this).find("coordinates").text();
			place = $(this).find("name").text();
			
			//store as JSON
			c = coords.split(",")
			
			markers.push({
				"title": place,
				"lat": c[1],
				"lng": c[0]
			});
			
		});

	});
}

function getLocation(location) { 
	
	if(!geocoder) { 
	  geocoder = new google.maps.Geocoder();     
	} 
	 
	var geocoderRequest = { 
	  address: location 
	} 
	 
	geocoder.geocode(geocoderRequest, function(results, status) { 
		
		if (status == google.maps.GeocoderStatus.OK) {
			
			find_closest_marker(results[0].geometry.location);
			
			alert('Please click on the marker to view dealer details');
		
		} else {
			
			alert('Could not find Postcode!');
		}
		
	}); 
} 

function rad(x) {return x*Math.PI/180;}

function find_closest_marker( location ) {
    
	var lat = location.lat();
    var lng = location.lng();
	
	var R = 6371;
    var distances = [];
    var closest = -1;
    
	for( i=0;i<markers.length; i++ ) {
        
		var mlat = markers[i].lat;
        var mlng = markers[i].lng;
        var dLat  = rad(mlat - lat);
        var dLong = rad(mlng - lng);
        
		var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.cos(rad(lat)) * Math.cos(rad(lat)) * Math.sin(dLong/2) * Math.sin(dLong/2);
        var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
        var d = R * c;
        distances[i] = d;
		
        if ( closest == -1 || d < distances[closest] ) {
            closest = i;
        }
    }

    var markerPoint = new google.maps.LatLng(markers[closest].lat, markers[closest].lng)

	map.setCenter(markerPoint);
	map.setZoom(13);
}

function checkenter(e){ //e is event object passed from function invocation
		
	if(e.keyCode == 13){ //if generated character code is equal to ascii 13 (if enter key) IE only
		
		postcode_finder();
	}
}
