$(document).ready(function () {
	
});


var map = null;       
var user = null;
var counter = 0;

function showMap(myLocation, myZoom)
{
	initialize(myLocation, myZoom);
}

function hideMap()
{
	$("#myMap").hide();
}


function initialize(myLocation, myZoom)         
{
	   $("#myMap").show();
	   map = new YMap($('#myMap')[0]);
	   map.addTypeControl();  
	   
	   
	   map.addZoomLong(); 
	   map.addPanControl();  
	   
	   map.setMapType(YAHOO_MAP_REG); 
	   map.drawZoomAndCenter(myLocation, myZoom);

	   // map.onLoadMap = onLoadMap;
	   onLoadMap();
	   YEvent.Capture(map,EventsList.onEndGeoCode,onFind);
	   
	   /*
	   $("#btGo").click(onGo);
	   $("#tiAddress").keypress(function (e) {
		   if (e.which == 13)
		   {
			   onGo();
		   }
	   });
	   */

}     

function onGo()
{
	var address = $('#tiAddress').val();
	if ($('#tiAddress').val() != "")
	{
		findAddress(address)
	}
}

function findAddress(address)
{
	if (address == null)
	{
		return;
	}
	
	map.drawZoomAndCenter(address,5);
}

function onFind(e)
{
	if (counter == 0)
	{
		counter++;
		return;
	}
	
	if (user != null)
	{
		map.removeMarker(user.id);
	}
	
	var newMarker= new YMarker(new YGeoPoint( e['GeoPoint'].Lat, e['GeoPoint'].Lon ), createUserImage());
	newMarker.addAutoExpand($("#dUserBox").html());
	map.addOverlay(newMarker);
	
	user = newMarker;
	
	calculateShortestDistance(e['GeoPoint'].Lat, e['GeoPoint'].Lon);
}

function calculateShortestDistance(lat, long)
{
	var shortestDistance = 9999999999;
	var bestShop = null;
	
	for (var i in locations['shops'])
	{
		var location = locations['shops'][i]; 

		var distance = GeoCodeCalc.CalcDistance(location.Lat, location.Long, lat, long);
		if (distance < shortestDistance)
		{
			shortestDistance = distance;
			bestShop = location;
		}
	}	 

	createRoute(lat, long, bestShop.Lat, bestShop.Long);
}

function createBKLogoImage(){  
    var myImage = new YImage();  
    myImage.src = './assets/images/logo_50x46.png';  
    myImage.size = new YSize(50, 46);  
    myImage.offsetSmartWindow = new YCoordPoint(20,20);  
    return myImage;   
}

function createUserImage(){  
	var myImage = new YImage();  
	myImage.src = './assets/images/user_32x32.png';  
	myImage.size = new YSize(32, 32);  
	myImage.offsetSmartWindow = new YCoordPoint(10, 10);  
	return myImage;   
}

function addCustomShapes()
{
	for (var i in locations['shops'])
	{
		var location = locations['shops'][i]; 
		
		var icon = $('#dIcon').html();
		var infobox = $('#dInfoBox').html();
		infobox = str_replace("##DESCRIPTION##", location['Description'], infobox);

		
		var newMarker= new YMarker(new YGeoPoint( location['Lat'], location['Long'] ), createBKLogoImage());
		newMarker.addAutoExpand(infobox);
		map.addOverlay(newMarker); 
	}	
}

function onLoadMap()
{
	addCustomShapes();
}

function createRoute(lat1, long1, lat2, long2)
{
	if (lat1 == lat2 && long1 == long2)
	{
		return;
	}
	
	var aPath = [];
	aPath.push(new YGeoPoint(lat1, long1), new YGeoPoint(lat2, long2));
	

	var bestZoom = map.getBestZoomAndCenter(aPath);
	
	//console.log(bestZoom['YGeoPoint']);
	//map.drawZoomAndCenter(bestZoom['YGeoPoint'], bestZoom['zoomLevel']);
}