var canvas = null;
var address = "";
var locations = null;
var micon = null;

$(document).ready(function()
{	
	$("body").unload(GUnload);
	$("#fCountry").change(function()
	{
		if($("#fCountry option:selected").val() == "www")
		{
			loadWWW();
		}
		else if($("#fCountry option:selected").val() == "cc")
		{ 
		//do nada
		}		
		else
		{
			canvas.CenterOnAddress($("#fCountry option:selected").text());
			canvas.zoomLevel = 6;			
		}
	});
		
	$("#searchinput").click(Search_Click);
	$("#txtZipcode").keydown(Enter_Pressed);
		
	if (GBrowserIsCompatible()) 
	{
		canvas = new fMap(document.getElementById("map_canvas"));
		canvas.geocoder = new GClientGeocoder();					
		canvas.zoomLevel = 2;
		canvas.CenterOnAddress("denmark", true);
		canvas.map.addControl(new GSmallMapControl());
	}
	micon = new GIcon(G_DEFAULT_ICON);
	micon.image = "/Files/HTML/storelocator/icons/gmap_pointer.png";
	micon.iconSize = new GSize(27, 33);
	micon.iconAnchor = new GPoint(13, 33);
	micon.shadow = false;
});

function Enter_Pressed(e)
{
	if (e.keyCode == '13') 
	{
		e.preventDefault();
		Search_Click();
	}
}

function loadWWW()
{
	$("#SeeWebshops").css("display", "none");
	$("#webDealers").css("display", "");
}

function unloadWWW()
{
	$("#webDealers").css("display", "none");
	$("#SeeWebshops").css("display", "");
}

function loadPhys()
{
	$("#SeeWebshops").css("display", "none");
	$("#webDealers").css("display", "");
}

function unloadPhys()
{
	$("#webDealers").css("display", "none");
	$("#SeeWebshops").css("display", "");
}
	
function Search_Click(iscallback) 
{	
	locations = null;
	if($.trim($("#txtZipcode").val()) != "" && $("#fCountry option:selected").val() != "cc" && $("#fCountry option:selected").val() != "www"   )
	{
		unloadWWW();
		canvas.zoomLevel = 12;	
		canvas.CenterOnAddress($("#txtZipcode").val()+", "+$("#fCountry option:selected").text());	
		if(iscallback == true)
		{		
			$.ajax({
			   type: "POST",
			   url: "/fLocator.aspx?action=getClosestLocations&top=8",
			   data: {positionLat:canvas.currentPoint.lat(), positionLng:canvas.currentPoint.lng(), country:$("#fCountry option:selected").val()},
				success: function(msg)
				{
					canvas.map.clearOverlays();
					locations = eval("(" +msg + ")");	
					$("#divSearchResults").html("");
					$("#divSearchResults").append("<dl id='list'></dl>");
					$("#divSearchResults #list").append("<dt>The dealers nearest you:<br /><br /></dd>");
					for(i = 0; i < locations.length; i++)
					{
						locations[i].NiceDistance = $.decimals(locations[i].Distance,1);
						var templateStr = 
							"<dd>"+
							"<a title='${Address}, ${City} (afstand:${NiceDistance} km)' href='javascript:PanToLocation(${Id})'>${Name}</a>"+
							"</dd>";
							
						var t = $.template(templateStr);
						$("#divSearchResults #list").append(t, locations[i]);	
						var point = new GLatLng(locations[i].Lat, locations[i].Lng);
						var marker = MakeMarker(point, locations[i]);
						canvas.map.addOverlay(marker);
					}			
					//PanToLocation(locations[0].Id);
				}
			 });		
		}
		else
		{
			setTimeout("Search_Click(true);", 1000);
		}
	}
}

function MakeMarker(point, location) 
{
	var marker = new GMarker(point, { icon:micon });
	GEvent.addListener(marker, "click", function()
	{
		PanToLocation(location.Id);
		//marker.openInfoWindowHtml(GetHtml(location));
		//canvas.SetCenter(location.Lat, location.Lng);
    });
	location.marker = marker;
	return marker;
}

function PanToLocation(id)
{
	var location = GetLocation(id);
	canvas.SetCenter(location.Lat, location.Lng);
	location.marker.openInfoWindowHtml(GetHtml(location));
}

function GetLocation(id)
{
	for(i = 0; i < locations.length; i++)
	{
		if(locations[i].Id == id)
			return locations[i];
	}
	return null;
}

function GetHtml(location)
{	
	return "<div style='font-size:11px;'><b>"+location.Name+"</b><br />"+locations[i].Address+"<br />"+locations[i].Zip+" "+locations[i].City+"<br /><p class='tel phone'>Tlf: "+locations[i].Phone+"</p></div>";
}

function GetLink(href)
{
	if(Base.IsStringEmpty(href))
		return "";
	else 
		return
			"<a target='blank' href='http://"+href+"'>"+href+"</a>";						  
}