var map;

function mapLoad() {

    jQuery(function () {
	
	jQuery("#store_info").msDropDown({mainCSS:'dd3'});
	
	jQuery("#map").goMap({ 
	    latitude: 51.55, 
	    longitude: -2.5, 
	    zoom: 6,
	    maptype: 'ROADMAP'
	});
	map = jQuery.goMap.getMap();
    
	for( i=0; i < stores.length; i++ )
	{
	    jQuery.goMap.createMarker({
		latitude: stores[i]['lat'],
		longitude: stores[i]['lng'],
		draggable: false,
		id: stores[i]['id'],
		html: {
		    content: stores[i]['name'] + '<br />' + stores[i]['address'] + '<br />' + stores[i]['postcode'] + '<br />' + stores[i]['telno'],
		    popup: false
		}
	    });

	    jQuery.goMap.createListener({type:'marker', marker:stores[i]['id']}, 'click', function() {
		jQuery('#store_info').val(this.id);
		jQuery("#store_info").msDropDown({mainCSS:'dd3'});
		getStoreInfo(this.id);
	    });
	}
	
    });

}

function getDirections()
{
    var from = document.getElementById('directions_from').value;
    var to   = document.getElementById('directions_to').value;
    var directions_panel = document.getElementById('directions_panel');

    var directionsService = new google.maps.DirectionsService();
    var directionsDisplay = new google.maps.DirectionsRenderer();
    
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(directions_panel);

    var request = {
	origin: from + ", UK", 
	destination: to + ", UK",
	travelMode: google.maps.DirectionsTravelMode.DRIVING
    };

    directionsService.route(request, function(response, status) {
	if (status == google.maps.DirectionsStatus.OK) {
	    directions_panel.innerHTML = '';
	    directionsDisplay.setDirections(response);
	} else {
	    directions_panel.innerHTML = 'Error: ' + status;
	}
    });

}

function getCircle()
{
    var location_error_panel = document.getElementById('location_error');    
    var radius = parseFloat(document.getElementById("radius").value);

    if(navigator.geolocation){
	// get the current position
	navigator.geolocation.getCurrentPosition(

	    // if this was successful, get the latitude and longitude
	    function(position){
		var lat = position.coords.latitude;
		var lng = position.coords.longitude;
		
		var centerPoint = new google.maps.LatLng(lat, lng);
		circleOptions = {
		    center: centerPoint,
		    fillColor: "#00AAFF",
		    fillOpacity: 0.5,
		    strokeColor: "#FFAA00",
		    strokeOpacity: 0.8,
		    strokeWeight: 2,
		    clickable: false,
		    radius: radius*1000
		}
 
		circle = new google.maps.Circle(circleOptions);
		circle.setMap(map);
	    },
	    // if there was an error
	    function (error)
	    {
		switch(error.code) 
		{
		    case error.TIMEOUT:
			location_error_panel.innerHTML = 'Error: Timeout';
			break;
		    case error.POSITION_UNAVAILABLE:
			location_error_panel.innerHTML = 'Error: Position unavailable';
			break;
		    case error.PERMISSION_DENIED:
			location_error_panel.innerHTML = 'Error: Permission denied';
			break;
		    case error.UNKNOWN_ERROR:
			location_error_panel.innerHTML = 'Error: Unknown error';
			break;
		}
	    }
	    );
    } else {
	location_error_panel.innerHTML = 'I\'m sorry, but geolocation services are not supported by your browser.';
    }
}
/*
function getNearest(){

    var location_error_panel = document.getElementById('location_error');    

    if(navigator.geolocation){
	// get the current position
	navigator.geolocation.getCurrentPosition(

	    // if this was successful, get the latitude and longitude
	    function(position){
		var lat = position.coords.latitude;
		var lng = position.coords.longitude;
		var myLatLng = new google.maps.LatLng(lat, lng);
		var distances = [];
		var markers = jQuery.goMap.getMarkers('markers');
		for (var i = 0; i < markers.length; i++) {
		    mLat = markers[i].getPosition().lat();
		    mLng = markers[i].getPosition().lng();
		    var latlng = new google.maps.LatLng(mLat, mLng);
		    distances[i] = new Array(markers[i].get("id"), distHaversine(latlng, myLatLng));
		}
		distances.sort(sortByDistance);
		// TODO: get 5 nerest markers

	    },
	    // if there was an error
	    function (error)
	    {
		switch(error.code) 
		{
		    case error.TIMEOUT:
			location_error_panel.innerHTML = 'Error: Timeout';
			break;
		    case error.POSITION_UNAVAILABLE:
			location_error_panel.innerHTML = 'Error: Position unavailable';
			break;
		    case error.PERMISSION_DENIED:
			location_error_panel.innerHTML = 'Error: Permission denied';
			break;
		    case error.UNKNOWN_ERROR:
			location_error_panel.innerHTML = 'Error: Unknown error';
			break;
		}
	    }
	    );
    } else {
	location_error_panel.innerHTML = 'I\'m sorry, but geolocation services are not supported by your browser.';
    }

}

function sortByDistance(i, ii) { 
 if (i[1] < ii[1])
 return 1;
 else if (i[1] > ii[1])
 return -1;
 else
 return 0;
}

function rad(x) {
    return x*Math.PI/180;
}
 
function distHaversine(p1, p2) {
    var R = 6371;
    var dLat  = rad(p2.lat() - p1.lat());
    var dLong = rad(p2.lng() - p1.lng());
   
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(rad(p1.lat())) * Math.cos(rad(p2.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;
   
    return d.toFixed(3);
}
*/

/*
function validateUKPostcode(id)
{
	var txtPC = document.getElementById(id);
	if(!(isEmpty(txtPC.value.toUpperCase(),'please enter postcode',txtPC)))
	{
		var regex = /(((^[BEGLMNS][1-9]\d?)|(^W[2-9])|(^(A[BL]|B[ABDHLNRST]|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]|F[KY]|G[LUY]|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]|M[EKL]|N[EGNPRW]|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKL-PRSTWY]|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)\d\d?)|(^W1[A-HJKSTUW0-9])|(((^WC[1-2])|(^EC[1-4])|(^SW1))[ABEHMNPRVWXY]))(\s*)?([0-9][ABD-HJLNP-UW-Z]{2}))$|(^GIR\s?0AA$)/;

		if(regex.test(txtPC.value))
		{
			return true;
		}
		else
		{
			alert('please enter a valid postcode');
			return false;
		}
	}
	else
	{
		return false;
	}

}
*/
