
/*

=(widget) type:directions
lat:51.57466915324911
lng:-0.7724869251251221
path:http://mediafriendly.org/_images/
marker_0:51.574669, -0.772486, mfmarker.png, shadow-mfmarker.png
marker_1:51.571095, -0.765867, railmarker.png, shadow-railmarker.png

stack_handler(window,'onload', function(){
	show_map('dir_widget_map', 
		{lat:51.57466915324911, lng:-0.7724869251251221, ctrl_zoom:1, ctrl_typemenu:1, ctrl_scale:1, ctrl_overview:1}, 
		[
			{
				lat:51.57466915324911, 
				lng:-0.7724869251251221, 
				icon:'http://mediafriendly.org/_images/mfmarker.png',
				width:20
				height:33,
				shadow:'http://mediafriendly.org/_images/shadow-mfmarker.png',
				swidth:37
			},
			{
				lat:51.571095013330975, 
				lng:-0.7658672332763672, 
				icon:'http://mediafriendly.org/_images/railmarker.png',
				width:29
				height:51,
				shadow:'http://mediafriendly.org/_images/shadow-railmarker.png',
				swidth:55
			}
		]
	);
});

onsubmit="show_directions('dir_widget_fld', 'dir_widget_inst')"


*/

var directions_map = false;

function show_map(map_div, map_prms, markers)
{
	directions_map = new GMap2(document.getElementById(map_div));
	directions_map.addMapType(G_PHYSICAL_MAP);
	
	if (map_prms.ctrl_large) directions_map.addControl(new GLargeMapControl());
	if (map_prms.ctrl_small) directions_map.addControl(new GSmallMapControl());
	if (map_prms.ctrl_zoom) directions_map.addControl(new GSmallZoomControl());
	if (map_prms.ctrl_type) directions_map.addControl(new GMapTypeControl());
	if (map_prms.ctrl_typemenu) directions_map.addControl(new GMenuMapTypeControl(true));
	if (map_prms.ctrl_scale) directions_map.addControl(new GScaleControl());
	if (map_prms.ctrl_overview) directions_map.addControl(new GOverviewMapControl());
	
	startLocationLatLng = new GLatLng(map_prms.lat+0, map_prms.lng+0);
	var zoom = map_prms.zoom || 15;
	
	directions_map.setCenter(startLocationLatLng, zoom);
	if (map_prms.mode) directions_map.setMapType(map_prms.mode);

	if (markers instanceof Array) for(var i=0; i<markers.length; i++)
	{
		var prms = markers[i];
		var baseIcon = new GIcon(G_DEFAULT_ICON);
		if (prms.width && prms.height) 
		{
			baseIcon.iconSize = new GSize(prms.width, prms.height);
			baseIcon.iconAnchor = new GPoint(Math.floor(prms.width/2), prms.height);
		}
		if (prms.swidth && prms.height) baseIcon.shadowSize = new GSize(prms.swidth, prms.height);
		if (prms.icon) baseIcon.image = prms.icon;
		if (prms.shadow) baseIcon.shadow = prms.shadow;
		if ((typeof prms.lat == 'number') && (typeof prms.lng == 'number')) 
		{
			var marker = new GMarker(new GLatLng(prms.lat, prms.lng), { icon:baseIcon });
			directions_map.addOverlay(marker);
		}
		
	}
	
}


function show_directions(addr_fld, dir_div)
{
	var addr = document.getElementById(addr_fld);
	var panel = document.getElementById(dir_div);
	if (!addr || !panel) return false;
	
	localSearch = new GlocalSearch();
	localSearch.setSearchCompleteCallback(null, function() {
		if (localSearch.results[0]) {
			localSearch.results[0].lat +'|'+ localSearch.results[0].lng +'|'+localSearch.results[0].titleNoFormatting 
			//directions.load('from: '++' to: SL7 1DQ');
			
			var wayPoints = new Array();
			wayPoints.push(localSearch.results[0].lat + ", " + localSearch.results[0].lng);	//coord just looked up
			wayPoints.push(startLocationLatLng.lat() + ", " + startLocationLatLng.lng());	//coord from mapo setup
	
			gdir = new GDirections(directions_map, panel);
			gdir.loadFromWaypoints(wayPoints, { "locale": "en" });
		}
	});
	
	var from = addr.value;
	if (from.match(/,\s*UK\s*$/i) == null) from += ', UK';
	localSearch.execute(from);	//call the coder
	
	return false;
}