var closeTooltipDelay, map;

function tooltip_in() {
	if (closeTooltipDelay) {
		clearTimeout(closeTooltipDelay);
		closeTooltipDelay = null;
	}
}

function tooltip_out() {
	if (!closeTooltipDelay) closeTooltipDelay = setTimeout('map.closeInfoWindow(); closeTooltipDelay=null', 5000);
}

function initialize() {
	if (GBrowserIsCompatible() && user_location && local_video_data) {
		map = new GMap2(document.getElementById("map_canvas"));
		map.setCenter(new GLatLng(user_location[0], user_location[1]), 15);
		map.setUIToDefault();
		
		// Create base icon
		var baseIcon = new GIcon(G_DEFAULT_ICON);
		baseIcon.iconSize = new GSize(55, 41);
		baseIcon.imageMap = [0,0,55,0,55,41,0,41];
		baseIcon.shadowSize = new GSize(0, 0);
		baseIcon.iconAnchor = new GPoint(27,20);
		baseIcon.infoWindowAnchor = new GPoint(27,0);
		
		var mt = map.getMapTypes();
		for (var i=0; i<mt.length; i++) {
			mt[i].getMinimumResolution = function() {return 13;}
			mt[i].getMaximumResolution = function() {return 17;}
		}
		
		// Creates video thumbnail marker
		function createMarker(point, index) {
			var video_title = local_video_data[index][0];
			var video_desc = local_video_data[index][1];
			var thumbnail_url = local_video_data[index][2];
			var video_url = local_video_data[index][3];
			
			// create video icon
			var videoThumb = new GIcon(baseIcon);
			videoThumb.image = thumbnail_url;
			
			// Set up our GMarkerOptions object
			markerOptions = { icon:videoThumb, draggable:true };
			var marker = new GMarker(point, markerOptions);
			
			GEvent.addListener(marker, "mouseover", function() {
				tooltip_in();
				marker.openInfoWindowHtml('<div onMouseover="tooltip_in()" onMouseout="tooltip_out()" style="cursor:text;font-size:12px;text-align:left"><b>' +video_title+ '</b><br>' +video_desc+ ' <a href="javascript:changeVideo(\''+video_url+'\', \''+video_title+'\', \''+video_desc+'\', \''+thumbnail_url+'\', \'local\');"><u>play video</u></a></div>', {maxWidth:250});
			});
			
			GEvent.addListener(marker, "mouseout", function() {
				tooltip_out();
			});
			
			GEvent.addListener(marker, "click", function() {
				changeVideo(video_url, video_title, video_desc, thumbnail_url, 'local');
			});
			
			return marker;
		}
			
		// Add 8 markers to the map at random locations
		var bounds = map.getBounds();
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		var lngSpan = (northEast.lng() - southWest.lng());
		var latSpan = (northEast.lat() - southWest.lat());
		var maxIndex = Math.min(local_video_data.length, 8);
		for (var i = 0; i < maxIndex; i++) {
			var latlng = new GLatLng(southWest.lat() + latSpan*0.91 * Math.random() + latSpan*.05,
				southWest.lng() + lngSpan*0.85 * Math.random() + lngSpan*0.08);
			map.addOverlay(createMarker(latlng, i));
		}
	}
}