var route_data = null;
var map;
var fullscreen = false;
var ele_img = null;
	
var strLogo = "images/toolbar_mapmyride.png";
var strSiteLink = "http://www.mapmyride.com"
var strSiteName = "MapMyRide.com";

var MARKER_DIRECTORY = "http://static.mapmyfitness.com/event/content/tdf2k7/icons/";

var SPRINT_ICON = new GIcon();
SPRINT_ICON.iconAnchor = new GPoint(9, 9);
SPRINT_ICON.iconSize = new GSize(18, 18);
SPRINT_ICON.image = MARKER_DIRECTORY + "sprint.png";

var FEED_ICON = new GIcon();
FEED_ICON.iconAnchor = new GPoint(9, 9);
FEED_ICON.iconSize = new GSize(18, 18);
FEED_ICON.image = MARKER_DIRECTORY + "feed.png";

var CLIMB1_ICON = new GIcon();
CLIMB1_ICON.iconAnchor = new GPoint(9, 9);
CLIMB1_ICON.iconSize = new GSize(18, 18);
CLIMB1_ICON.image = MARKER_DIRECTORY + "climb_1.png";

var CLIMB2_ICON = new GIcon();
CLIMB2_ICON.iconAnchor = new GPoint(9, 9);
CLIMB2_ICON.iconSize = new GSize(18, 18);
CLIMB2_ICON.image = MARKER_DIRECTORY + "climb_2.png";

var CLIMB3_ICON = new GIcon();
CLIMB3_ICON.iconAnchor = new GPoint(9, 9);
CLIMB3_ICON.iconSize = new GSize(18, 18);
CLIMB3_ICON.image = MARKER_DIRECTORY + "climb_3.png";

var CLIMB4_ICON = new GIcon();
CLIMB4_ICON.iconAnchor = new GPoint(9, 9);
CLIMB4_ICON.iconSize = new GSize(18, 18);
CLIMB4_ICON.image = MARKER_DIRECTORY + "climb_4.png";

var CLIMB_HORS_ICON = new GIcon();
CLIMB_HORS_ICON.iconAnchor = new GPoint(9, 9);
CLIMB_HORS_ICON.iconSize = new GSize(18, 18);
CLIMB_HORS_ICON.image = MARKER_DIRECTORY + "climb_hors.png";

var START_ICON = new GIcon();
START_ICON.iconAnchor = new GPoint(9, 9);
START_ICON.iconSize = new GSize(18, 18);
START_ICON.image = MARKER_DIRECTORY + "start.png";

var STOP_ICON = new GIcon();
STOP_ICON.iconAnchor = new GPoint(9, 9);
STOP_ICON.iconSize = new GSize(18, 18);
STOP_ICON.image = MARKER_DIRECTORY + "stop.png";

var _MMF_API_U = "info@mapmyfitness.com";
var _MMF_API_P = "0945fc9611f55fd0e183fb8b044f1afe";
var _MMF_API_KEY = "b513571b80685c74fa95b7755d916c24048889df4";
var _MMF_API_AUTH = "consumer_key="+_MMF_API_KEY+"&u="+_MMF_API_U+"&p="+_MMF_API_P+"&signed_token=09123j1k2kj1923892908091jsaj9e&signed_token_limit=1";

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

	//----------------------------
	// Apply Branding
	//----------------------------
	applyBranding();

});

function loadMap() {
	
	//----------------------------
	//	Parse the querystring
	//----------------------------
	var qs = new Querystring(window.location.search.substring(1));

	var routeKey = qs.get("route_key");
	var routeJson = "http://api.mapmyfitness.com/3.1/routes/get_route_json?" + _MMF_API_AUTH + "&route_key=" + routeKey;

	//----------------------------
	//	Toolbar stuff
	//----------------------------
	var bolToolbar = true;
	if (qs.get("toolbar") && qs.get("toolbar") == "0") {
		bolToolbar = false;
	}
	
	if (bolToolbar) {
		var toolbarDiv = document.getElementById("event_menubar");
		$("#event_toolbar").css("display","");
		var toolbar = new YAHOO.widget.MenuBar(toolbarDiv, {
			autosubmenudisplay: true,
			hidedelay: 750,
			lazyload: true
		});
		toolbar.render();
	}
	
	$.getScript(routeJson, function(data){
				
		try {
			
			var intMapWidth = $("#map").width();
			if (intMapWidth == "" || !intMapWidth) {
				intMapWidth = 0;
			}

			//----------------------------
			//	Map Stuff
			//----------------------------
			var map_div = document.getElementById("map");
			
			map = new GMap2(map_div);
			
			// Calculate Offset
			var intControlOffset = 40;
			if (intMapWidth > 500) {
				intControlOffset = 10;
			}
			
			map.addControl(new GSmallMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(0, 50)));
			map.addControl(new GMenuMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(14, intControlOffset)));
			map.enableScrollWheelZoom();
			
			//----------------------------
			//	Map Type
			//----------------------------
			if (qs.get("map_type") && qs.get("map_type") != "") {
				var strMapType = qs.get("map_type");
				strMapType = eval(strMapType);
				map.setMapType(strMapType);
			}
			
			//----------------------------
			//	Route Data
			//----------------------------
			var route_data = mmr_route_data;
			var points = [];
			var bounds = new GLatLngBounds();
			var routeStr = "";
			var markers = [];
			
			for (var i = 0; i < route_data.points.length; i++) {
				var p = route_data.points[i];
				
				var point = new GLatLng(parseFloat(p.lat), parseFloat(p.lng));
				points.push(point);
				bounds.extend(point);
				
				//----------------------------
				//	Create markers
				//----------------------------
				//
				// Create marker objects for placement on the map.  We temprarily store them
				// in an array, because we cant place them on the map until we do a setCenter, 
				// which comes outside of this loop
				
				var pointType = parseInt(p.type);
				
				// Special case: hard-code start and end points
				if (0 == i) { //start
					pointType = 4;
				} else if (route_data.points.length - 1 == i) { // black checker
					pointType = 36;
				}
				
				
				if (pointType > 1) {
					var myIcon = new GIcon(G_DEFAULT_ICON);
					myIcon.image = MarkerImagePrefix + Markers[pointType].filename;
					//GLog.write(myIcon.image);
					myIcon.shadow = null;
					myIcon.iconSize = new GSize(27, 29);
					myIcon.iconAnchor = new GPoint(13, 15);
					
					markers.push(new GMarker(point, {
						icon: myIcon
					}));
				}
				
				
				
			}
			
			// Optimize by only displaying up to MaxPoints in the line
			var MaxPoints = 500;
			var inc = parseInt(points.length / MaxPoints);
			if (inc < 1) inc = 1;
			
			var displayPoints = [];
			
			for (var i = 0; i < points.length; i += inc) {
				displayPoints.push(points[i]);
			}
			
			map.addOverlay(new GPolyline(displayPoints, 'red'));
			
			for (i = 0; i < markers.length; i++) {
				map.addOverlay(markers[i]);
			}
			
			// Center
			map.setCenter(bounds.getCenter(), parseInt(map.getBoundsZoomLevel(bounds)));
			
			//----------------------------
			//	Populate links with route id
			//----------------------------
			var e = document.getElementById('fullscreen_link');
			e.href = strSiteLink + "/view_route?r=" + route_data.route_key;
			
			e = document.getElementById('ge_link');
			e.href = "http://api.mapmyfitness.com/3.1/routes/get_route_kml?"+_MMF_API_AUTH+"&route_key=" + route_data.route_key;
			
			e = document.getElementById('blog_link');
			e.href = strSiteLink + "/add_route_to_blog.php?r=" + route_data.route_key;
			
			e = document.getElementById('embed_link');
			e.href = strSiteLink + "/add_route_to_blog.php?r=" + route_data.route_key;
			
			e = document.getElementById('find_link');
			e.href = strSiteLink + "/search";
			
			e = document.getElementById('bookmark_link');
			e.href = strSiteLink + "/view_route?r=" + route_data.route_key + "&chkBookmark=1";
			
			e = document.getElementById('comments_link');
			e.href = strSiteLink + "/view_route?r=" + route_data.route_key;
			
			e = document.getElementById('tell_link2');
			e.href = strSiteLink + "/share_route?r=" + route_data.route_key;
		
		} catch (err) {
			document.getElementById("mmf_body").innerHTML = "An Error has occurred fetching this Map.  Please hit refresh to try again after waiting 60 seconds.";
		}			
	
	});	

};

function printRoute() {
	if(route_data) {

		//GLog.write("print " + route_data.route_key);
	}
}

// -----------------------------------------------------------------
//	branding
// -----------------------------------------------------------------
function applyBranding() {
	
	var qs = new Querystring(window.location.search.substring(1));
	
	var strRouteType = "ride";
	if (qs.get("rt")) {
		strRouteType = qs.get("rt");
	}
	if (strRouteType == "run") {
		strLogo = "images/toolbar_mapmyrun.png";
		strSiteLink = "http://www.mapmyrun.com";
		strSiteName = "MapMyRun.com";
	} else if (strRouteType == "workout") {
		strLogo = "images/toolbar_mapmyfitness.png";
		strSiteLink = "http://www.mapmyfitness.com";
		strSiteName = "MapMyFitness.com";
	} else if (strRouteType == "walk") {
		strLogo = "images/toolbar_mapmywalk.png";
		strSiteLink = "http://www.mapmywalk.com";
		strSiteName = "MapMyWalk.com";
	} else if (strRouteType == "hike") {
		strLogo = "images/toolbar_mapmyhike.png";
		strSiteLink = "http://www.mapmyhike.com";
		strSiteName = "MapMyHike.com";
	} else if (strRouteType == "tri") {
		strLogo = "images/toolbar_mapmytri.png";
		strSiteLink = "http://www.mapmytri.com";
		strSiteName = "MapMyTri.com";
	}
	
	document.getElementById("logo_link").href = strSiteLink;
	document.getElementById("logo_link").title = strSiteName;
	document.getElementById("logo_image").src = strLogo;
	document.getElementById("logo_image").alt = strSiteName;
	document.getElementById("map_link").href = strSiteLink + "/create";
	
	if (strRouteType == "workout") {
		document.getElementById("map_link").innerHTML = "Map Your Course";
	} else {
		document.getElementById("map_link").innerHTML = "Map Your " + capitalizeMe(strRouteType);
	}
}

// -----------------------------------------------------------------
//	form posting helpers
// -----------------------------------------------------------------

/* dynamically create the save form and post to it */
function createHiddenInput(name, value) {
	var ele = document.createElement('input');
	ele.type = 'hidden';
	ele.name = name;
	ele.value = value;
	return ele;
}

function createPostFrm(url, target) {
	var frm = document.createElement('form');
	frm.action = url;
	frm.method = 'POST';
	frm.target = target;
	return frm;
}


function capitalizeMe(strInput) {
	return strInput.substring(0,1).toUpperCase() + strInput.substring(1,strInput.length);
}



