function Debug(PhotoWidth, PhotoHeight, ImageObject)
{
	var PhotoRatio = PhotoWidth/PhotoHeight;
	var DebugStyle = document.getElementById('LOCR_DEBUG').style;
	DebugStyle.position = 'absolute';
	DebugStyle.zIndex = '1001';
	DebugStyle.color = '#FF7300';
	DebugStyle.fontSize = '12px';
	DebugStyle.padding = '5px';
	DebugStyle.backgroundColor = '#333333';
	DebugStyle.left = document.getElementById('LOCR_SLIDE_CONTAINER').style.left;
	DebugStyle.top = 100+'px';
	var Debug = 'ScreenWidth: '+ScreenWidth+'<br />';
	Debug+= 'MapWidth: '+document.getElementById('map').style.width+'<br />';
	Debug+= 'MaxWidthForPhoto: '+MaxWidthForPhoto+'<br />';
	Debug+= 'ScreenHeight-37: '+(ScreenHeight-37)+'<br />';
	Debug+= 'Ratio For Photo: '+RatioForPhoto+'<br />';
	Debug+= 'Original Photo Width: '+PhotoWidth+'<br />';
	Debug+= 'Original Photo Height: '+PhotoHeight+'<br />';
	Debug+= 'Original Photo Ratio: '+PhotoRatio+'<br />';
	Debug+= 'Image Width: '+ImageObject.style.width+'<br />';
	Debug+= 'Image Height: '+ImageObject.style.height+'<br />';
	Debug+= 'Image Ratio: '+ImageObject.style.width.replace('px','') / ImageObject.style.height.replace('px','');
	document.getElementById('LOCR_DEBUG').innerHTML = Debug;
}

function ShowPoint(i)
{
	var SlideWikipedia = document.getElementById('LOCR_SLIDE_WIKIPEDIA');
	var WikiLength = document.getElementById('Wiki_'+i).value.length;
	var WikiWidth = SlideWikipedia.style.width.replace('px','');

	var PhotoLink = ' <a href="/photo_detail.php?id='+document.getElementById('Wiki_'+i).getAttribute('name')+'">...</a>';
	if(WikiWidth/3 < WikiLength)
	{
		var maxLengthForWiki = WikiWidth / 3;
		var WikiToShow = document.getElementById('Wiki_'+i).value.slice(0, maxLengthForWiki);
		SlideWikipedia.innerHTML = WikiToShow+PhotoLink;
	} else
		SlideWikipedia.innerHTML = document.getElementById('Wiki_'+i).value+PhotoLink;

	document.getElementById('LOCR_SLIDE_CREATED').innerHTML = '';
	if(Images[i].caption.toString() != '')
	{
		document.getElementById('LOCR_SLIDE_CREATED').appendChild(document.createTextNode(unescape(Images[i].caption.toString())));
		document.getElementById('LOCR_SLIDE_CREATED').appendChild(document.createElement("br"));
	}
	document.getElementById('LOCR_SLIDE_CREATED').appendChild(document.createTextNode(Images[i].created.toString()));

	var Image = Images[i];
	var ImageObject = document.getElementById(i);
	var PhotoWidth = Image.width;
	var PhotoHeight = Image.height;
	var PhotoRatio = PhotoWidth / PhotoHeight;

	//Debug(PhotoWidth, PhotoRatio, ImageObject);

	var Icon = new MapIconObject();
	switch(_MapSource)
	{
		case 'MICROSOFT':

			x = gmarkers[CurrentTempMarker].GetPoints()[0].Latitude;
			y = gmarkers[CurrentTempMarker].GetPoints()[0].Longitude;

			map.DeleteShape(gmarkers[CurrentTempMarker]);

			gmarkers[CurrentTempMarker] = MapMicrosoftLiveSetPinNewVersion(x, y, Icon.GetMapIcon('PushpinSmall'));

			//gmarkers[CurrentTempMarker] = MapMicrosoftLiveCreateMarker(x, y, "/gfx/png/map_marker/ms_point.png");

			map.AddShape(gmarkers[CurrentTempMarker]);

			for(var j = 0; j < ImagesPoints.length; j++)
			{
				var TempId = ImagesPoints[j];

				if(Images[i].id == TempId.id)
				{
					break;
				}
			}

			x = gmarkers[j].GetPoints()[0].Latitude;
			y = gmarkers[j].GetPoints()[0].Longitude;

			map.DeleteShape(gmarkers[j]);

			gmarkers[j] = MapMicrosoftLiveSetPinNewVersion(x, y, Icon.GetMapIcon('photographer'));

			//gmarkers[j] = MapMicrosoftLiveCreateMarker(x, y);

			map.AddShape(gmarkers[j]);

			break;

		case 'YAHOO':

			var ImageCoordinateYahoo = ImagesPoints[CurrentTempMarker];
			var latitude = parseFloat(ImageCoordinateYahoo.lat);
			var longitude = parseFloat(ImageCoordinateYahoo.lng);

			map.removeOverlay(gmarkers[CurrentTempMarker]);

			gmarkers[CurrentTempMarker] = MapYahooSetPinNewVersion(latitude, longitude, Icon.GetMapIcon('PushpinSmall'));
			//gmarkers[CurrentTempMarker] = MapYahooSetPin(latitude, longitude, "/gfx/png/map_marker/point.png");
			
			map.addOverlay(gmarkers[CurrentTempMarker]);

			for(var j = 0; j < ImagesPoints.length; j++)
			{
				var TempId = ImagesPoints[j];

				if(Images[i].id == TempId.id)
				{
					break;
				}
			}

			ImageCoordinateYahoo = ImagesPoints[j];
			latitude = parseFloat(ImageCoordinateYahoo.lat);
			longitude = parseFloat(ImageCoordinateYahoo.lng);
		
			map.removeOverlay(gmarkers[j]);

			//gmarkers[j] = MapYahooSetPin(latitude, longitude);
			gmarkers[j] = MapYahooSetPinNewVersion(latitude, longitude, Icon.GetMapIcon('photographer'));
			map.addOverlay(gmarkers[j]);

			break;

		default:

			var options = {clickable: false};
			map.removeOverlay(gmarkers[CurrentTempMarker]);
			gmarkers[CurrentTempMarker] = new GMarker(gmarkers[CurrentTempMarker].getPoint(), GIcons, options);
			map.addOverlay(gmarkers[CurrentTempMarker]);

			for(var j = 0; j < ImagesPoints.length; j++)
			{
				var TempId = ImagesPoints[j];

				if(Images[i].id == TempId.id)
				{
					break;
				}
			}

			map.removeOverlay(gmarkers[j]);
			gmarkers[j] = new GMarker(gmarkers[j].getPoint(), TempGIcons, options);
			map.addOverlay(gmarkers[j]);

			break;
	}

	CurrentTempMarker = j;

	document.getElementById('LOCR_SLIDE_COUNTER').innerHTML = '';
	document.getElementById('LOCR_SLIDE_COUNTER').innerHTML = (CurrentTempMarker+1)+'/'+MaximumImages;
}

function LoadSlideshowMap()
{
	switch(_MapSource)
	{
		case 'MICROSOFT':

			MapMicrosoftLiveLoadSlideshowMap();
			break;

		case 'YAHOO':

			MapYahooLoadSlideshowMap();
			break;

		default:

			MapGoogleLoadSlideshowMap();
			break;
	}
}

function MapYahooLoadSlideshowMap()
{
	CurrentTempMarker = 0;
	gmarkers = new Array();
	gmarkers_i = 0;

	var bounds = new Array();

	var MapContainer = document.getElementById('map');

	if(MapContainer)
	{
		Width = parseInt(MapContainer.style.width.split('px')[0]);
		Height = parseInt(MapContainer.style.height.split('px')[0]);

		SetMapOverlay();

		map = new YMap(MapContainer, YAHOO_MAP_REG, new YSize(Width, Height));

		map.addPanControl();
		map.addZoomShort();
		map.addTypeControl();

		var MapPoints = new Array();
		var arrayMarkers = map.getMarkerIDs();

		var Icon = new MapIconObject();

		for(i = 0; i < arrayMarkers.length; i++)
			map.removeOverlay(map.getMarkerObject(arrayMarkers[i]));

		for(var i = 0; i < ImagesPoints.length; i++)
		{
			var ImageCoordinate = ImagesPoints[i];
			var lat = parseFloat(ImageCoordinate.lat);
			var lng = parseFloat(ImageCoordinate.lng);

			var marker = MapYahooSetPinNewVersion(lat, lng, Icon.GetMapIcon('PushpinSmall'));

			// var marker = MapYahooSetPin(lat, lng, "/gfx/png/map_marker/point.png");

			gmarkers[gmarkers_i] = marker;
			gmarkers_i++;

			map.addOverlay(marker);

			MapPoints.push(new YGeoPoint(lat, lng));
		}

		map.setZoomLevel(map.getBestZoomAndCenter(MapPoints).zoomLevel);

		YEvent.Capture(map, EventsList.endMapDraw, RefreshSlideshowCookies);

		if(document.cookie)
		{
			CookieData = document.cookie;

			Index = CookieData.search("slideshow_map_type");

			if(Index >= 0)
			{
				TempData = CookieData.substring(Index, CookieData.length);

				if(TempData.search(";") < 0)
					MapType = TempData.substring(TempData.search("=") + 1, TempData.length);
				else
					MapType = TempData.substring(TempData.search("=") + 1, TempData.search(";"));

				if(MapType == 'H')
					map.setMapType(YAHOO_MAP_HYB);
				else if(MapType == 'S')
					map.setMapType(YAHOO_MAP_SAT);
				else
					map.setMapType(YAHOO_MAP_REG);
			}
		}
	}
}

function MapMicrosoftLiveLoadSlideshowMap()
{
		CurrentTempMarker = 0;
		gmarkers = new Array();
		gmarkers_i = 0;
		
		var bounds = new Array();

		var MapContainer = document.getElementById('map');

		if(MapContainer)
		{
			map = new VEMap('map');
			map.LoadMap();

			var Icon = new MapIconObject();

			for(var i = 0; i < ImagesPoints.length; i++)
			{
				var ImageCoordinate = ImagesPoints[i];
				var lat = parseFloat(ImageCoordinate.lat);
				var lng = parseFloat(ImageCoordinate.lng);

				//var marker = MapMicrosoftLiveCreateMarker(lat, lng, "/gfx/png/map_marker/ms_point.png");

				var marker = MapMicrosoftLiveSetPinNewVersion(lat, lng, Icon.GetMapIcon('PushpinSmall'));

				gmarkers[gmarkers_i] = marker;
				gmarkers_i++;

				bounds.push(new VELatLong(lat, lng));

				map.AddShape(marker);
			}

			map.AttachEvent('onchangemapstyle', RefreshSlideshowCookies);
			
			if(document.cookie)
			{
				CookieData = document.cookie;

				Index = CookieData.search("slideshow_map_type");

				if(Index >= 0)
				{
					TempData = CookieData.substring(Index, CookieData.length);

					if(TempData.search(";") < 0)
						MapType = TempData.substring(TempData.search("=") + 1, TempData.length);
					else
						MapType = TempData.substring(TempData.search("=") + 1, TempData.search(";"));

					if(MapType == 'H')
						map.SetMapStyle(VEMapStyle.Hybrid);
					else if(MapType == 'S')
						map.SetMapStyle(VEMapStyle.Aerial);
					else if(MapType == 'B')
						map.SetMapStyle(VEMapStyle.Birdseye);
					else if(MapType == 'N')
						map.SetMapStyle(VEMapStyle.Road);
				}
			}

			map.SetScaleBarDistanceUnit(VEDistanceUnit.Kilometers);

			map.SetMapView(bounds);

			SetMapOverlay();
		}
}

function MapMicrosoftLiveCreateMarker(Latitude, Longitude, IconURL)
{
	if(IconURL)
	{
		IconURL_ = IconURL;

		IconStyle_ = "position: relative; top: -22px; left: 3px;";

		var IconHTML = "<div class='PushpinSmall' style='"+IconStyle_+"'></div>";
	}
	else
	{
		IconURL_ = "/gfx/png/map_marker/ms_point_large.png";

		IconStyle_ = "position: relative; top: -22px; left: 3px;";

		var IconHTML = "<div class='PushpinLarge' style='"+IconStyle_+"'></div>";
	}

	// var IconHTML = "<img src='"+IconURL_+"' style='"+IconStyle_+"'>";

	var Spec = new VECustomIconSpecification();
	Spec.CustomHTML = IconHTML;

	Spec.Image = IconURL_;					// 3D Mode
	Spec.ImageOffset = new VEPixel(0, 32);	// 3D Mode

	MapTempMarker = new VEShape(VEShapeType.Pushpin, new VELatLong(Latitude, Longitude));

   	MapTempMarker.SetCustomIcon(Spec);

	gmarkers[gmarkers_i] = MapTempMarker;
	gmarkers_i++;

	return MapTempMarker;
}

if(typeof GOverviewMapControl == 'function')
{
	var overlay_control = new GOverviewMapControl();
}

function MapGoogleLoadSlideshowMap()
{	
	if(GBrowserIsCompatible())
	{
		CurrentTempMarker = 0;
		gmarkers = new Array();
		gmarkers_i = 0;

		var bounds = new GLatLngBounds();

		var Icon = new MapIconObject();
		GIcons = Icon.GetMapIcon('PushpinSmall');
		TempGIcons = Icon.GetMapIcon('photographer');

		/*
		GIcons = new GIcon(G_DEFAULT_ICON);
		GIcons.image = "/gfx/png/map_marker/point.png";
		GIcons.shadow = "/gfx/png/map_marker/point_shadow.png";
		GIcons.iconSize = new GSize(12, 20);
		GIcons.shadowSize = new GSize(22, 20);
		GIcons.iconAnchor = new GPoint(6, 20);
		GIcons.infoWindowAnchor = new GPoint(5, 1);

		TempGIcons = new GIcon();
		TempGIcons.image = "/gfx/png/map_marker/point_large.png";
		TempGIcons.shadow = "/gfx/png/point_large_shadow.png";
		TempGIcons.iconSize = new GSize(20, 34);
		TempGIcons.shadowSize = new GSize(37, 34);
		TempGIcons.iconAnchor = new GPoint(9, 34);
		TempGIcons.infoWindowAnchor = new GPoint(9, 2);
		*/

		map = new GMap2(document.getElementById("map"));

		map.setCenter(new GLatLng(0,0), 0);
		map.addMapType(G_PHYSICAL_MAP);

		for(var i = 0; i < ImagesPoints.length; i++)
		{
			var ImageCoordinate = ImagesPoints[i];
			var lat = parseFloat(ImageCoordinate.lat);
			var lng = parseFloat(ImageCoordinate.lng);
			var point = new GLatLng(lat,lng);
			var marker = CreateMarker(point);
			map.addOverlay(marker);
			bounds.extend(point);
		}

		var type_control = new GMapTypeControl();
		var large_map_control = new GLargeMapControl();

		var overlay_map_width = 0;

		map.addControl(type_control);
		//map.addControl(overlay_control);
		map.addControl(large_map_control);
			
		if(document.cookie)
		{
			CookieData = document.cookie;

			Index = CookieData.search("slideshow_map_type");

			if(Index >= 0)
			{
				TempData = CookieData.substring(Index, CookieData.length);

				if(TempData.search(";") < 0)
					MapType = TempData.substring(TempData.search("=") + 1, TempData.length);
				else
					MapType = TempData.substring(TempData.search("=") + 1, TempData.search(";"));

				if(MapType == 'H')
					map.setMapType(G_HYBRID_MAP);
				else if (MapType == 'S')
					map.setMapType(G_SATELLITE_MAP);
				else if (MapType == 'P')
					map.setMapType(G_PHYSICAL_MAP);
				else
					map.setMapType(G_NORMAL_MAP);
			}

			Index = CookieData.search("slideshow_map_overlay_control");

			if(Index >= 0)
			{
				TempData = CookieData.substring(Index, CookieData.length);

				if(TempData.search(";") < 0)
					overlay_map_width = Number(TempData.substring(TempData.search("=") + 1, TempData.length));
				else
					overlay_map_width = Number(TempData.substring(TempData.search("=") + 1, TempData.search(";")));
			}
		}

		// 15 -> closed; 120 -> open
		switch (overlay_map_width)
		{
			case 15:
				overlay_control.hide(true);
				break;
			default:
				break;
		}

		setTimeout("checkOverview()", 100);

		GEvent.addListener(map, "maptypechanged", function() {RefreshSlideshowCookies();});

		//map.disableDragging();
		if(map.getBoundsZoomLevel(bounds) != 0)
			map.setZoom(map.getBoundsZoomLevel(bounds)-1);
		else
			map.setZoom(map.getBoundsZoomLevel(bounds));
		map.setCenter(bounds.getCenter());

		var MapContainer = document.getElementById('map');

		if(MapContainer)
			SetMapOverlay();
	}
}

function checkOverview()
{
	overlay_map = overlay_control.getOverviewMap();
	if(overlay_map)
	{
		GEvent.addListener(overlay_map, "zoomend", function() {overlay_map.setZoom(3);});
	}
	else
	{
		setTimeout("checkOverview()", 100);
	}
}

function CreateMarker(_point)
{		
	var options = {clickable: false};
	var marker = new GMarker(_point, GIcons, options);

	gmarkers[gmarkers_i] = marker;
	gmarkers_i++;

	return marker;
}
