	
	
	
	
	/**
 * @author Marco Alionso Ramirez, marco@onemarco.com
 * @url http://onemarco.com
 * @version 1.0
 * This code is public domain
 */

/**
 * The Tooltip class is an addon designed for the Google Maps GMarker class. 
 * @constructor
 * @param {GMarker} marker
 * @param {String} text
 * @param {Number} padding
 */
function Tooltip(marker, text, padding){
	this.marker_ = marker;
	this.text_ = text;
	this.padding_ = padding;
}

Tooltip.prototype = new GOverlay();

Tooltip.prototype.initialize = function(map){
	var div = document.createElement("div");
	div.appendChild(document.createTextNode(this.text_));
	div.className = 'tooltip';
	div.style.position = 'absolute';
	div.style.visibility = 'hidden';
	map.getPane(G_MAP_FLOAT_PANE).appendChild(div);
	this.map_ = map;
	this.div_ = div;
}

Tooltip.prototype.remove = function(){
	this.div_.parentNode.removeChild(this.div_);
}

Tooltip.prototype.copy = function(){
	return new Tooltip(this.marker_,this.text_,this.padding_);
}

Tooltip.prototype.redraw = function(force){
	if (!force) return;
	var markerPos = this.map_.fromLatLngToDivPixel(this.marker_.getPoint());
	var iconAnchor = this.marker_.getIcon().iconAnchor;
	var xPos = Math.round(markerPos.x - this.div_.clientWidth / 2);
	var yPos = markerPos.y - iconAnchor.y - this.div_.clientHeight - this.padding_;
	this.div_.style.top = yPos + 'px';
	this.div_.style.left = xPos + 'px';
}

Tooltip.prototype.show = function(){
	this.div_.style.visibility = 'visible';
}

Tooltip.prototype.hide = function(){
	this.div_.style.visibility = 'hidden';
}

	
	
	
	
	
	
	
		function Ride(name, lat, lon, rideLink, extraHTML) 
		{
            this.Name = name;
            this.Lat = lat;
            this.Lon = lon;
            this.RideLink = rideLink;
            this.ExtraHTML = extraHTML;
		}


		function RideList()
		{
            this.List = [];
            this.Index = 0;

            this.AddItem = function(name, lat, lon, rideLink, extraHTML)
            {
				this.List[this.Index++] = new Ride(name, lat, lon, rideLink, extraHTML);
			}
		}
		
		var gmarkers = [];

		function load2(rl, latCenter, lonCenter, noRide) 
		{
	
			if (GBrowserIsCompatible()) 
			{
				var map = new GMap2(document.getElementById("map"));
				
				map.addControl(new GLargeMapControl());
				var mapControl = new GMapTypeControl();
				map.addControl(mapControl);
				
				//map.addControl(new GSmallMapControl());
				//map.addControl(new GMapTypeControl());

				map.setCenter(new GLatLng(0, 0), 0);
				map.addMapType(G_PHYSICAL_MAP);
				map.setMapType(G_PHYSICAL_MAP);
				var bounds = new GLatLngBounds();
				
				// Create our "tiny" marker icon
				var icon = new GIcon();
				icon.shadow = "http://www.trailfu.com/img/MapIcon/shadow.png";
				icon.iconSize = new GSize(20, 34);
				icon.shadowSize = new GSize(20, 34);
				icon.iconAnchor = new GPoint(10, 34);
				icon.infoWindowAnchor = new GPoint(10, 15);
				
				function createMarker(point, index, html)
				{  
                   	var icon2 = new GIcon(icon);  
					
					if(thisisthehomepage)
					{
						icon2.image = "http://www.trailfu.com/img/MapIcon/HomePageIcon.png";
					}
					else
					{
						icon2.image = "http://www.trailfu.com/img/MapIcon/iconb" + (index + 1) + ".png";
					}
					
					markerOptions = { icon:icon2 };
					//var marker = new GMarker(point, icon2);  
                    var marker = new GMarker(point, markerOptions);  

					GEvent.addListener(marker, "click", function() 
					{    
						marker.openInfoWindowHtml(html);
					});  
					
					if(thisisthehomepage)
					{
						//icon2.image = "http://www.trailfu.com/img/MapIcon/HomePageIcon.png";
					
						// Switch icon on marker mouseover and mouseout
						GEvent.addListener(marker, "mouseover", function() 
						{
							marker.setImage("http://www.trailfu.com/img/MapIcon/HomePageIconOver.png");
						});
						
						GEvent.addListener(marker, "mouseout", function() 
						{
							marker.setImage("http://www.trailfu.com/img/MapIcon/HomePageIcon.png");
						});
					}

					return marker;
				}
		
				var pointArray = [];

				for(var x = 0; x < rl.List.length; x++) 
				{
					var point = new GLatLng(rl.List[x].Lat, rl.List[x].Lon);
					pointArray[x] = point;
					var htmlForMarker = '<p class="mapmarker">' + rl.List[x].Name + '<br /><a href="' + rl.List[x].RideLink + '"><img src="/img/ViewRideButton.jpg" width="108" height="15" border="0" /></a>' + rl.List[x].ExtraHTML + '</p>';
					var marker = createMarker(point, x, htmlForMarker);
					var rideName = rl.List[x].Name;
					
					
				var tooltip = new Tooltip(marker, rideName, 4);
				marker.tooltip = tooltip;
					
					map.addOverlay(marker);
					
				map.addOverlay(tooltip);
				
					gmarkers[x] = marker;
					
				GEvent.addListener(marker,'mouseover',function(){
					this.tooltip.show();
				});
				GEvent.addListener(marker,'mouseout',function(){
					this.tooltip.hide();
				});
					
					bounds.extend(point);
				}
				
				
				
				if(rl.List.length > 1)
				{
					map.setZoom(map.getBoundsZoomLevel(bounds));
				}
				else
				{
					map.setZoom(10);
				}
				
				var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
				var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) / 2;
				if (noRide == 1) {
				    map.setCenter(new GLatLng(latCenter, lonCenter));
				}
				else {
				    map.setCenter(new GLatLng(clat, clng));
				}
			}
		}
		
	
