/*******************************************************************************
 * Smart Management UK Limited
 * http://www.smartuk.net
 */

//---------------------------------------------------------------------------Map
var map;
var MM; // MarkerManager
var marker;
var zoomDefault = 18;

//---------------------------------------------------------------------Geocoding
var localSearch = new GlocalSearch();

var icon = new GIcon();

icon.image = "http://www.salopenergy.com/roof-finder/gfx/arrow.png";
icon.shadow = "http://www.salopenergy.com/roof-finder/gfx/arrowshadow.png";
icon.iconSize = new GSize(49,53);
icon.shadowSize = new GSize(39,34);
icon.iconAnchor = new GPoint(21,53);

//--------------------------------------------------------------------------Post
var GoogleMapsUrl = 'http://maps.google.co.uk/maps?hl=en&tab=wl&q=';

//--------------------------------------------------------------------------init
//jQuery.noConflict();
/*----------------------------------------------------------------------------*/

/*******************************************************************************
 * geocode
 * @param postcode
 * @param callbackFunction
 */
function geocode( postcode, callbackFunction )
{
	localSearch.setSearchCompleteCallback(null, 
		function()
		{	
			if (localSearch.results[0])
			{		
				var resultLat = localSearch.results[0].lat;
				var resultLng = localSearch.results[0].lng;
				var point = new GLatLng(resultLat,resultLng);
				callbackFunction(point);
			}
			else
			{
				alert("Postcode not found!");
			}
		});	
		
	localSearch.execute(postcode + ", UK");
}

/*******************************************************************************
 * loadMap()
 */
function loadMap()
{
	if ( GBrowserIsCompatible() )
	{
		map = new GMap2( document.getElementById("SalopEnergyGMap") );
		
		map.setCenter(new GLatLng(54.622978,-2.592773), 5, G_HYBRID_MAP);
		
		//map.addControl(new GLargeMapControl());
		//map.addControl(new GMapTypeControl());
		map.addControl( new GLargeMapControl3D() );
		//map.addControl( new GSmallZoomControl3D() );
		map.addControl( new GScaleControl() );
		
		MM = new MarkerManager( map, { trackMarkers: true } );
		//MM = new GMarkerManager( map, { trackMarkers: true } );
		//var mgrOptions = { borderPadding: 50, maxZoom: 15, trackMarkers: true };
	}
	else
	{
		// TODO
		alert( 'Sorry, your browser is not capable of displaying our map.' );	
	}
}

/*******************************************************************************
 * placeMarker
 * @param point
 */
function placeMarker( point )
{
	//var mgrOptions = { borderPadding: 50, maxZoom: 15, trackMarkers: true };
	//var mgr = new MarkerManager(map, mgrOptions);
	
	MM.clearMarkers();
	
	//MM.removeMarker(marker);
	map.setCenter( point, zoomDefault );
	
	var markerOptions = 
	{
		draggable: true,
		icon: icon,
		title: 'Please drag me to your roof'
	};
	//var marker = new GMarker( point, icon );
	marker = new GMarker( point, markerOptions );
	
	//var marker = new GMarker( point );
	//MM = new GMarkerManager( map, {trackMarkers:true} );
	MM.addMarker( marker, 0, 17 );
	MM.refresh();
	//map.addOverlay(marker);
	//mgr.addMarker(marker);
	
	locateMarker( marker );
	
	GEvent.addListener( marker, 'dragend', function()
	{ 
		//map.panTo(marker.getLatLng());
		//alert( marker.getLatLng() );
		//document.getElementById( 'Location' ).value=marker.getLatLng();
		locateMarker( marker );
	});
	
	jQuery('#Estimate').show('fast');
}

/*******************************************************************************
 * locateMarker
 * @param marker
 * @return
 */
function locateMarker( marker )
{
	document.getElementById( 'Location' ).value = marker.getLatLng();
	//document.getElementById( 'GoogleMapsLink' ).href = GoogleMapsUrl + marker.getLatLng();
}

function showPointLatLng(point)
{
	alert("Latitude: " + point.lat() + "\nLongitude: " + point.lng());
}

/******************************************************************************/

jQuery(window).load( function()
{
	loadMap();
});

jQuery(window).unload( function()
{
	GUnload();
});

jQuery(document).ready( function()
{
	jQuery.ajaxSetup(
	{
		cache: false
	});  
	var ajax_load = '<img src="http://www.salopenergy.com/roof-finder/gfx/ajax-loader.gif" alt="loading..." />';
	
	jQuery('#FindMyRoof').click(function()
	{
		jQuery('#SalopEnergyGControls').validate
		(
			{
				submitHandler: function( form )
				{
					geocode(document.getElementById('PostCode').value, placeMarker);
				}
			}
		);
	});
	
	jQuery('#Estimate').click(function()
	{
		jQuery('#RoofFinderDescription').hide();
		jQuery('#SalopEnergyGMap').hide();
		jQuery('#SalopEnergyGControls').hide();
		jQuery('#Estimator').show('slow');
		
		var Name = jQuery('#Name').val();
		var Telephone = jQuery('#Telephone').val();
		var PostCode = jQuery('#PostCode').val();
		var Email = jQuery('#Email').val();
		var LatLng = jQuery('#Location').val();
		
		jQuery("#Result")
		.html( ajax_load )
		.load
		( 'http://www.salopenergy.com/roof-finder/receive.php',
			{
				name: Name,
				telephone: Telephone,
				postcode: PostCode,
				email: Email,
				latlng: LatLng
			}
		);
	});
});

